使用zookeeper管理远程MyCat配置文件、MyCat监控、MyCat数据迁移(扩容)

摘要:
添加并保存mycat服务器的配置。该添加成功地实现了6.2 mycat VM管理。
一、使用zookeeper管理远程Mycat配置文件

环境准备:

虚拟机192.168.152.130:

zookeeper,具体参考前面文章 搭建dubbo+zookeeper+dubboadmin分布式服务框架(windows平台下)

虚拟机192.168.152.128:

安装好Mycat,具体参考前面文章数据库分库分表中间件mycat的安装和mycat配置详解

本机:

搭建好zookeeper的客户端工具ZooInspector ,具体参考这个人的文章Zookeeper数据查看工具ZooInspector简介

1. 启动ZK

./zkServer.sh start

使用zookeeper管理远程MyCat配置文件、MyCat监控、MyCat数据迁移(扩容)第1张

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表示使用

zkURLzk集群的地址

clusterIdmycat集群名字

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

使用zookeeper管理远程MyCat配置文件、MyCat监控、MyCat数据迁移(扩容)第2张

使用zookeeper管理远程MyCat配置文件、MyCat监控、MyCat数据迁移(扩容)第3张

4. 启动mycat

/usr/local/mycat/bin/mycat start

5. 连接mycat,查看当前数据库中表的情况

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

 使用zookeeper管理远程MyCat配置文件、MyCat监控、MyCat数据迁移(扩容)第4张

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

 6.1 进入目录E:softwaredevtoolsKooInspectoruild,运行zookeeper-dev-ZooInspector.jar;

使用zookeeper管理远程MyCat配置文件、MyCat监控、MyCat数据迁移(扩容)第5张

 java -jar zookeeper-dev-ZooInspector.jar

 连接远程zookeeper

使用zookeeper管理远程MyCat配置文件、MyCat监控、MyCat数据迁移(扩容)第6张

 连接成功以后可以看到mycat的树节点和mycat的安装后的conf目录下的schema.xml和rule.xml文件是对应的

使用zookeeper管理远程MyCat配置文件、MyCat监控、MyCat数据迁移(扩容)第7张

6.2 在zookeeper管理工具里面动态修改schema配置文件新增一张逻辑表travelrecord2

使用zookeeper管理远程MyCat配置文件、MyCat监控、MyCat数据迁移(扩容)第8张

 保存修改,查看mycat的schema.xml配置文件,可以看到修改已经同步过来了

使用zookeeper管理远程MyCat配置文件、MyCat监控、MyCat数据迁移(扩容)第9张

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

/usr/local/mycat/bin/mycat restart

使用zookeeper管理远程MyCat配置文件、MyCat监控、MyCat数据迁移(扩容)第10张

二、Mycat监控

1. 下载Mycat-web上传到虚拟机中

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

使用zookeeper管理远程MyCat配置文件、MyCat监控、MyCat数据迁移(扩容)第11张

使用zookeeper管理远程MyCat配置文件、MyCat监控、MyCat数据迁移(扩容)第12张

2. 解压Mycat-web

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

使用zookeeper管理远程MyCat配置文件、MyCat监控、MyCat数据迁移(扩容)第13张

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":"sohudo@mycat.io","index":1,"mangerPort":"465","smtpHost":"smtp.139.com","smtpPassword":"123456","smtpProtocol":"smtp","smtpUser":"agile_louie@139.com","to":"9183838@qq.com"}]
##sqlu4E0Au7EBFu76F8u5173u914Du7F6E
sqlonline.server=192.168.80.128
sqlonline.user=root
sqlonline.passwd=123456

4. 启动mycat-web

/software/mycat-web/start.sh

使用zookeeper管理远程MyCat配置文件、MyCat监控、MyCat数据迁移(扩容)第14张

5. 访问mycat-web

访问地址:http://192.168.152.128:8082/mycat/

使用zookeeper管理远程MyCat配置文件、MyCat监控、MyCat数据迁移(扩容)第15张

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

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

使用zookeeper管理远程MyCat配置文件、MyCat监控、MyCat数据迁移(扩容)第16张

 保存,新增成功

使用zookeeper管理远程MyCat配置文件、MyCat监控、MyCat数据迁移(扩容)第17张

 6.2 mycat-VM管理。配置JMX服务项

使用zookeeper管理远程MyCat配置文件、MyCat监控、MyCat数据迁移(扩容)第18张

 保存新增成功

使用zookeeper管理远程MyCat配置文件、MyCat监控、MyCat数据迁移(扩容)第19张

6.3 MySQL配置管理

使用zookeeper管理远程MyCat配置文件、MyCat监控、MyCat数据迁移(扩容)第20张

 使用zookeeper管理远程MyCat配置文件、MyCat监控、MyCat数据迁移(扩容)第21张

 分别保存,新增成功

使用zookeeper管理远程MyCat配置文件、MyCat监控、MyCat数据迁移(扩容)第22张

初始化完前面的三步,就可以对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
use 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', 10010, 2);
insert into employee(id, name, sharding_id, company_id) values(next value for MYCATSEQ_GLOBAL, 'Jack016', 10000, 2);
insert into employee(id, name, sharding_id, company_id) values(next value for MYCATSEQ_GLOBAL, 'Jack017', 10010, 3);
insert into employee(id, name, sharding_id, company_id) values(next value for MYCATSEQ_GLOBAL, 'Jack018', 10000, 3);
insert into employee(id, name, sharding_id, company_id) values(next value for MYCATSEQ_GLOBAL, 'Jack019', 10010, 1);
insert into employee(id, name, sharding_id, company_id) values(next value for MYCATSEQ_GLOBAL, 'Jack021', 10000, 1);
insert into employee(id, name, sharding_id, company_id) values(next value for MYCATSEQ_GLOBAL, 'Jack022', 10010, 2);
insert into employee(id, name, sharding_id, company_id) values(next value for MYCATSEQ_GLOBAL, 'Jack023', 10000, 5);
insert into employee(id, name, sharding_id, company_id) values(next value for MYCATSEQ_GLOBAL, 'Jack024', 10000, 4);
insert into employee(id, name, sharding_id, company_id) values(next value for MYCATSEQ_GLOBAL, 'Jack025', 10000, 5);
insert into employee(id, name, sharding_id, company_id) values(next value for MYCATSEQ_GLOBAL, 'Jack026', 10010, 3);

可以看到插入了25条数据到employee里面

使用zookeeper管理远程MyCat配置文件、MyCat监控、MyCat数据迁移(扩容)第23张

 然后在主库(192.168.152.130)的两个分片dn1(db1),dn2(db2)上查看employee的数据

使用zookeeper管理远程MyCat配置文件、MyCat监控、MyCat数据迁移(扩容)第24张

使用zookeeper管理远程MyCat配置文件、MyCat监控、MyCat数据迁移(扩容)第25张

可以看到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文件:

使用zookeeper管理远程MyCat配置文件、MyCat监控、MyCat数据迁移(扩容)第26张

新的newSchema.xml:

使用zookeeper管理远程MyCat配置文件、MyCat监控、MyCat数据迁移(扩容)第27张

 2)生成一个新的rule文件,文件名newRule.xml,同时修改分片数为3(新的分片规则)

cp rule.xml newRule.xml
vim newRule.xml

以前的rule.xml:

使用zookeeper管理远程MyCat配置文件、MyCat监控、MyCat数据迁移(扩容)第28张

新的newRule.xml:

使用zookeeper管理远程MyCat配置文件、MyCat监控、MyCat数据迁移(扩容)第29张

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 

使用zookeeper管理远程MyCat配置文件、MyCat监控、MyCat数据迁移(扩容)第30张

遇到的错误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

使用zookeeper管理远程MyCat配置文件、MyCat监控、MyCat数据迁移(扩容)第31张

查看主库(192.168.152.130)三个分片dn1(db1),dn2(db2),dn3(db3)上employee表的数据

使用zookeeper管理远程MyCat配置文件、MyCat监控、MyCat数据迁移(扩容)第32张

使用zookeeper管理远程MyCat配置文件、MyCat监控、MyCat数据迁移(扩容)第33张

使用zookeeper管理远程MyCat配置文件、MyCat监控、MyCat数据迁移(扩容)第34张

可以看到数据迁移成功

6)修改newRule.xml成为rule.xml,修改newSchema.xml为schema.xml。重启mycat

./bin/mycat restart

连接mycat,查看employee表的数据

mysql -uroot -pdigdeep -P8066 -h192.168.152.128

使用zookeeper管理远程MyCat配置文件、MyCat监控、MyCat数据迁移(扩容)第35张

免责声明:文章转载自《使用zookeeper管理远程MyCat配置文件、MyCat监控、MyCat数据迁移(扩容)》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇工单系统之用户模块整体实现OpenGL学习随笔(一)-- CPU和GPU的设计区别下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

POJ 3028 Shoot-out(概率DP)

Description This is back in the Wild West where everybody is fighting everybody. In particular, there are n cowboys, each with a revolver. These are rather civilized cowboys, so...

ASP.NET Core 四: Web核心与项目配置,静态内容(文件传输,npm包管理器),中间件,配置(环境配置,启动配置,用户密匙)

概念说明: web核心,本质是一个集成了为Http请求服务功能的承载(Host),一个请求(request)和对应的响应(response)都由HttpContext对象表示。因此就可以在服务的Run程序中对HttpContext的对象做出相关的操作(即对request和response做操作)。 静态内容,这里是关于如何返回静态文件,如html文件,或者...

java web开发入门四(spring)基于intellig idea

spring  1.spring简介 Spring框架,可以解决对象创建以及对象之间依赖关系的一种框架。                           且可以和其他框架一起使用;Spring与Struts,  Spring与hibernate                           (起到整合(粘合)作用的一个框架) Spring提供了一...

《深入实践C++模板编程》之二——模板类

1、类的模板的使用 类,由于没有参数,所以没有模板实参推导机制。 1 #include <stdexcept> 2 3 template<typename T> class my_stack; 4 5 template<typename T> 6 class list_node 7 {...

python中和生成器协程相关的yield之最详最强解释,一看就懂(一)

yield是python中一个非常重要的关键词,所有迭代器都是yield实现的,学习python,如果不把这个yield的意思和用法彻底搞清楚,学习python的生成器,协程和异步io的时候,就会彻底懵逼。所以写一篇总结讲讲yield的东西。 分成四块来讲, 这篇先说yield基本用法,后面会重点将yield from的牛逼之处 一, 生成器中使用yiel...

C语言单链表实现19个功能完全详解

 * list.c//#include "stdafx.h"#include "stdio.h"#include <stdlib.h>#include "string.h"typedef int elemType ;/****************************************************************...