集成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-eye啓動後的2個服務端口:
8082:web服務端口
8999:jmx服務端口
修改mycat-web項目下/WEB-INF/classes/mycat.properties中zookeeper屬性。
須要手動初始化的項:
數據樣例:
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。
官方的一個例子地址:
springMVC+ibatis+FreeMarker鏈接mycat示例: