Mysql系列九:使用zookeeper管理遠程Mycat配置文件、Mycat監控、Mycat數據遷移(擴容)

一、使用zookeeper管理遠程Mycat配置文件

環境準備:

虛擬機192.168.152.130:

zookeeper,搭建dubbo+zookeeper+dubboadmin分佈式服務框架(windows平臺下)

虛擬機192.168.152.128:

安裝好Mycat,具體參考前面文章Mysql系列五:數據庫分庫分表中間件mycat的安裝和mycat配置詳解

本機:

搭建好zookeeper的客戶端工具ZooInspector 

1. 啓動ZK

./zkServer.sh start

 

2. 修改/usr/local/mycat/conf/myid.properties

vim /usr/local/mycat/conf/myid.properties

複製代碼

loadZk=true
zkURL=192.168.152.130:2181
clusterId=mycat-cluster-1
myid=mycat_fz_01
clusterNodes=mycat_fz_01,mycat_fz_02,mycat_fz_04
#server  booster  ;   booster install on db same server,will reset all minCon to 1
type=server
boosterDataHosts=dn2,dn3

複製代碼

myid.properties配置說明:

loadZk:默認值false。代表mycat集羣是否使用ZK,true表示使用

zkURL:zk集羣的地址

clusterId:mycat集羣名字

myid:當前的mycat服務器名稱

clusterNodes:把所有集羣中的所有mycat服務器羅列進行以逗號隔開,比如:clusterNodes=mycat_fz_01,mycat_fz_02,mycat_fz_03

3. 使用Mycat腳本初始化mycat在ZK中的節點數據

/usr/local/mycat/bin/init_zk_data.sh

 

4. 啓動mycat

/usr/local/mycat/bin/mycat start

 

5. 連接mycat,查看當前數據庫中表的情況

mysql -uroot -pdigdeep -P8066 -h192.168.152.128
use TESTDB;
show tables;

 

6. 使用zookeeper的客戶端工具ZooInspector連接zookeeper修改mycat配置文件

 6.1 進入目錄E:\software\devtools\ZK\ZooInspector\build,運行zookeeper-dev-ZooInspector.jar;

 java -jar zookeeper-dev-ZooInspector.jar

 連接遠程zookeeper

 

連接成功以後可以看到mycat的樹節點和mycat的安裝後的conf目錄下的schema.xml和rule.xml文件是對應的

6.2 在zookeeper管理工具裏面動態修改schema配置文件新增一張邏輯表travelrecord2

 

保存修改,查看mycat的schema.xml配置文件,可以看到修改已經同步過來了

重啓mycat,可以看到TESTDB裏面有新配置的travelrecord2表

/usr/local/mycat/bin/mycat restart

 

二、Mycat監控

1. 下載Mycat-web上傳到虛擬機中

http://dl.mycat.io/mycat-web-1.0/

2. 解壓Mycat-web

tar -zxvf Mycat-web-1.0-SNAPSHOT-20170102153329-linux.tar.gz

 

3 修改mycat-web項目下/WEB-INF/classes/mycat.properties中zookeeper屬性

vim /software/mycat-web/mycat-web/WEB-INF/classes/mycat.properties

複製代碼

#Mon Jan 16 15:37:36 CST 2012
show.period=3000000
zookeeper=192.168.152.130:2181

mycat_warn_mail=[{"cc"\:"[email protected]","index"\:1,"mangerPort"\:"465","smtpHost"\:"smtp.139.com","smtpPassword"\:"123456","smtpProtocol"\:"smtp","smtpUser"\:"[email protected]","to"\:"[email protected]"}]
##sql\u4E0A\u7EBF\u76F8\u5173\u914D\u7F6E
sqlonline.server=192.168.80.128
sqlonline.user=root
sqlonline.passwd=123456

複製代碼

4. 啓動mycat-web

/software/mycat-web/start.sh

 

5. 訪問mycat-web

訪問地址:http://192.168.152.128:8082/mycat/

6. 在Mycat管理界面手動初始化Mycat配置

6.1 Mycat-配置管理。增加mycat服務器配置

 

保存,新增成功

 6.2 mycat-VM管理。配置JMX服務項

 

保存新增成功

6.3 MySQL配置管理

 

分別保存,新增成功

初始化完前面的三步,就可以對Mycat進行監控了

三、Mycat數據遷移(擴容)

以employee表作數據遷移

1. 準備工作:

1)修改employee表的分片規則爲一致性hash,vim schema.xml

<table name="employee" dataNode="dn1,dn2" rule="sharding-by-murmur" primaryKey="ID"/>

2)修改分佈式全局唯一id方式爲本地文件方式,vim server.xml

<property name="sequnceHandlerType">0</property>

3)關掉ZK配置,vim myid.properties

複製代碼

loadZk=false
zkURL=192.168.152.130:2181
clusterId=mycat-cluster-1
myid=mycat_fz_01
clusterNodes=mycat_fz_01,mycat_fz_02,mycat_fz_04
#server  booster  ;   booster install on db same server,will reset all minCon to 1
type=server
boosterDataHosts=dn2,dn3

複製代碼

4) 重啓mycat

../bin/mycat restart

5) 連接mycat,並創建employee表,並插入數據

mysql -uroot -pdigdeep -P8066 -h192.168.152.128

 View Code

可以看到插入了25條數據到employee裏面

然後在主庫(192.168.152.130)的兩個分片dn1(db1),dn2(db2)上查看employee的數據

 

可以看到dn1上有15條數據,dn2上有10條數據

2. 開始做數據遷移

當前employee表的數據分佈在dn1,dn2,遷移後要分佈在dn1,dn2,dn3

1)生成一個新的schema文件,文件名newSchema.xml,同時修改dataNode="dn1,dn2,dn3"(新的分片定義)  

cp schema.xml newSchema.xml
vim newSchema.xml

以前的schema.xml文件:

新的newSchema.xml:

 

 2)生成一個新的rule文件,文件名newRule.xml,同時修改分片數爲3(新的分片規則)

cp rule.xml newRule.xml
vim newRule.xml

以前的rule.xml:

 

新的newRule.xml:

 

3)修改/usr/local/mycat/conf/migrateTables.properties文件。寫明要遷移的schema和表,多張表用逗號隔開

vim migrateTables.properties

複製代碼

#schema1=tb1,tb2,...
#schema2=all(寫all或者不寫將對此schema下拆分節點變化的拆分表全部進行重新路由)
#...

#sample
#TESTDB=travelrecord,company,goods
TESTDB=employee

複製代碼

 4)停止mycat(也可以不停止mycat)

 5)執行dataMigrate.sh開始遷移(擴容)。

[root@centos1 bin]# ./dataMigrate.sh 

 

遇到的錯誤1:

開始執行./dataMigrate.sh 的時候報沒有適合的驅動

No suitable driver found for jdbc:mysql://192.168.152.130:3306/db1 java.sql.SQLException: No suitable driver found for jdbc:mysql://192.168.152.130:3306/db1

解決方法1:

下載jar包mysql-connector-java-5.1.6.jar,然後上傳到/usr/local/mycat/lib

查看主庫(192.168.152.130)三個分片dn1(db1),dn2(db2),dn3(db3)上employee表的數據

可以看到數據遷移成功

6)修改newRule.xml成爲rule.xml,修改newSchema.xml爲schema.xml。重啓mycat

./bin/mycat restart

連接mycat,查看employee表的數據

mysql -uroot -pdigdeep -P8066 -h192.168.152.128

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章