數據庫水平切分(其餘應用)

Zookeeper和Mycat

  1. 使用ZK對mycat 的配置進行管理
  2. 使用ZK修改配置,Mycat配置自動更新
  3. 使用Mycat-web監控必須基於ZK之上
  4. 經過監控ZK節點狀況就能夠知道Mycat每一個節點的運行狀況

 

集成Zookeeper和Mycatmysql

第一步:啓動ZK集羣web

第二步:修改myid.propertiesspring

loadZk=true
zkURL=192.168.225.129: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

loadZk:默認值false。表明mycat集羣是否使用ZKsql

zkURL:zk集羣的地址docker

clusterId:mycat集羣名字服務器

myid:當前的mycat服務器名稱spa

clusterNodes:把全部集羣中的全部mycat服務器羅列進行以逗號隔開,好比:code

clusterNodes=mycat_fz_01,mycat_fz_02,mycat_fz_03server

第三步:使用Mycat腳本初始化mycat在ZK中的節點數據。xml

第四步:啓動mycat

ps:

1 修改完配置文件若是沒有熱配置時則須要手動重啓mycat

2 採用zk管理mycat配置文件時,第一次會把全部配置文件初始化爲原來的配置。因此須要從新配置集羣信息。

 

Mycat監控

Mycat-eye啓動後的2個服務端口:

8082:web服務端口

8999:jmx服務端口

 

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

 

須要手動初始化的項:

  1. mycat配置管理。增長mycat服務器配置
  2. Mycat-mv管理。配置JMX服務項。
  3. MySQL配置管理。配置docker mysql地址和db名稱

Mycat數據遷移(擴容)

數據樣例:

insert into employee(id, name, sharding_id, company_id) values( 10031, 'Tom001', 10010, 1);
insert into employee(id, name, sharding_id, company_id) values( 10031, 'Tom002', 10000, 2);
insert into employee(id, name, sharding_id, company_id) values( 10031, 'Tom003', 10010, 3);
insert into employee(id, name, sharding_id, company_id) values( 10031, 'Tom004', 10010, 4);
insert into employee(id, name, sharding_id, company_id) values( 10031, 'Tom005', 10010, 5);
insert into employee(id, name, sharding_id, company_id) values( 10031, 'Tom006', 10000, 1);
insert into employee(id, name, sharding_id, company_id) values( 10031, 'Tom007', 10000, 1);
insert into employee(id, name, sharding_id, company_id) values( 10031, 'Tom008', 10000, 2);
insert into employee(id, name, sharding_id, company_id) values( 10031, 'Tom009', 10010, 2);
insert into employee(id, name, sharding_id, company_id) values( 10031, 'Tom010', 10010, 1);
insert into employee(id, name, sharding_id, company_id) values( 10031, 'Tom011', 10010, 3);
insert into employee(id, name, sharding_id, company_id) values( 10031, 'Tom012', 10010, 4);
insert into employee(id, name, sharding_id, company_id) values( 10031, 'Tom013', 10000, 5);
insert into employee(id, name, sharding_id, company_id) values( 10031, 'Tom014', 10000, 5);
insert into employee(id, name, sharding_id, company_id) values( 10031, 'Tom015', 10010, 2);
insert into employee(id, name, sharding_id, company_id) values( 10031, 'Tom016', 10000, 2);
insert into employee(id, name, sharding_id, company_id) values( 10031, 'Tom017', 10010, 3);
insert into employee(id, name, sharding_id, company_id) values( 10031, 'Tom018', 10000, 3);
insert into employee(id, name, sharding_id, company_id) values( 10031, 'Tom019', 10010, 1);
insert into employee(id, name, sharding_id, company_id) values( 10031, 'Tom021', 10000, 1);
insert into employee(id, name, sharding_id, company_id) values( 10031, 'Tom022', 10010, 2);
insert into employee(id, name, sharding_id, company_id) values( 10031, 'Tom023', 10000, 5);
insert into employee(id, name, sharding_id, company_id) values( 10031, 'Tom024', 10000, 4);
insert into employee(id, name, sharding_id, company_id) values( 10031, 'Tom025', 10000, 5);
insert into employee(id, name, sharding_id, company_id) values( 10031, 'Tom026', 10010, 3);

遷移需求:

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

 

遷移步驟(以一致性hash分片規則爲例):

1.生成一個新的schema文件,文件名newSchema.xml。(新的分片定義)

2.生成一個新的rule文件,文件名newRule.xml。(新的分片規則)

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

4.中止mycat(也能夠不中止mycat)。

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

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

Mycat+Spring

官方的一個例子地址:

springMVC+ibatis+FreeMarker鏈接mycat示例:

http://pan.baidu.com/s/1qWr4AF6

相關文章
相關標籤/搜索