
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 ,具体参考文章Zookeeper数据查看工具ZooInspector简介1. 启动ZK./zkServer.sh start 2. 修改/usr/local/mycat/conf/myid.propertiesvim /usr/local/mycat/conf/myid.propertiesloadZk=truezkURL=192.168.152.130:2181clusterId=mycat-cluster-1myid=mycat_fz_01clusterNodes=mycat_fz_01,mycat_fz_02,mycat_fz_04#server booster ; booster install on db same server,will reset all minCon to 1type=serverboosterDataHosts=dn2,dn3myid.properties配置说明:loadZk:默认值false。代表mycat集群是否使用ZK,true表示使用zkURL:zk集群的地址clusterId:mycat集群名字myid:当前的mycat服务器名称clusterNodes:把所有集群中的所有mycat服务器罗列进行以逗号隔开,比如:clusterNodes=mycat_fz_01,mycat_fz_02,mycat_fz_033. 使用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.128use TESTDB;show tables; 6. 使用zookeeper的客户端工具ZooInspector连接zookeeper修改mycat配置文件 6.1 进入目录E:softwaredevtoolsZKZooInspectorbuild,运行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-webtar -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 2012show.period=3000000zookeeper=192.168.152.130:2181mycat_warn_mail=[{"cc":"[email protected]","index":1,"mangerPort":"465","smtpHost":"smtp.139.com","smtpPassword":"123456","smtpProtocol":"smtp","smtpUser":"[email protected]","to":"[email protected]"}]##sqlu4E0Au7EBFu76F8u5173u914Du7F6Esqlonline.server=192.168.80.128sqlonline.user=rootsqlonline.passwd=1234564. 启动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.propertiesloadZk=falsezkURL=192.168.152.130:2181clusterId=mycat-cluster-1myid=mycat_fz_01clusterNodes=mycat_fz_01,mycat_fz_02,mycat_fz_04#server booster ; booster install on db same server,will reset all minCon to 1type=serverboosterDataHosts=dn2,dn34) 重启mycat../bin/mycat restart5) 连接mycat,并创建employee表,并插入数据mysql -uroot -pdigdeep -P8066 -h192.168.152.128use TESTDB;create table employee(id bigint(20) not null primary key auto_increment,name varchar(20),sharding_id bigint(20),company_id bigint(20));insert into employee(id, name, sharding_id, company_id) values(next value for MYCATSEQ_GLOBAL, 'Jack001', 10010, 1);insert into employee(id, name, sharding_id, company_id) values(next value for MYCATSEQ_GLOBAL, 'Jack002', 10000, 2);insert into employee(id, name, sharding_id, company_id) values(next value for MYCATSEQ_GLOBAL, 'Jack003', 10010, 3);insert into employee(id, name, sharding_id, company_id) values(next value for MYCATSEQ_GLOBAL, 'Jack004', 10010, 4);insert into employee(id, name, sharding_id, company_id) values(next value for MYCATSEQ_GLOBAL, 'Jack005', 10010, 5);insert into employee(id, name, sharding_id, company_id) values(next value for MYCATSEQ_GLOBAL, 'Jack006', 10000, 1);insert into employee(id, name, sharding_id, company_id) values(next value for MYCATSEQ_GLOBAL, 'Jack007', 10000, 1);insert into employee(id, name, sharding_id, company_id) values(next value for MYCATSEQ_GLOBAL, 'Jack008', 10000, 2);insert into employee(id, name, sharding_id, company_id) values(next value for MYCATSEQ_GLOBAL, 'Jack009', 10010, 2);insert into employee(id, name, sharding_id, company_id) values(next value for MYCATSEQ_GLOBAL, 'Jack010', 10010, 1);insert into employee(id, name, sharding_id, company_id) values(next value for MYCATSEQ_GLOBAL, 'Jack011', 10010, 3);insert into employee(id, name, sharding_id, company_id) values(next value for MYCATSEQ_GLOBAL, 'Jack012', 10010, 4);insert into employee(id, name, sharding_id, company_id) values(next value for MYCATSEQ_GLOBAL, 'Jack013', 10000, 5);insert into employee(id, name, sharding_id, company_id) values(next value for MYCATSEQ_GLOBAL, 'Jack014', 10000, 5);insert into employee(id, name, sharding_id, company_id) values(next value for MYCATSEQ_GLOBAL, 'Jack015'