mycat 分库分表加数据迁移

最近线上有张表数据已经有6千万了,查询和插入都已经比较慢,所以这边决定分库分表,

下面记录下分库分表的全过程

首先下载mycat包

https://github.com/MyCATApache/Mycat-Server/releases


我下载的这个版本,若要使用其他版本,可以自行下载

下载完成后,上传到linux服务器,解压即可


然后进入到conf 底下

主要看这两个文件

schema.xml,server.xml

server.xml  修改这里  schemas 就是schema.xml 的schema名称

name 和password 自己指定


schema.xm

table  是数据库表名,rule  这里我用的一致性hash  ,要换别的算法可以在rule.xml里面找

database 就是table表的数据库名,

datahost  里面的url 是数据库ip和端口

这样配置玩,就可以启动了

cd  bin

./mycat console

即可启动,


然后用navicat链接即可


然后在数据库中建好表,插入数据,就会根据算法分到不同的数据库

数据迁移 


1、复制 schema.xml、rule.xml 并重命名为 newSchema.xml、newRule.xml 放于 conf 目录下

2、修改 newSchema.xml 和 newRule.xml 配置文件为扩容缩容后的 mycat 配置参数(表的节点数、

数据源、路由规则)

3、修改 conf 目录下的 migrateTables.properties 配置文件,告诉工具哪些表需要进行扩容或缩容,没有出现在此配置文件的 schema 表不会进行数据迁移,格式:

4、修改 bin 目录下的 dataMigrate.sh 脚本文件,参数如下:

tempFileDir 临时文件路径,目录不存在将自动创建

isAwaysUseMaster 默认 true:不论是否发生主备切换,都使用主数据源数据,false:使用当前数据源

mysqlBin:mysql bin 路径,也是是mysqldump命令所在的目录,通过命令"find / -name mysqldump"查找mysqldump路径为"/usr/local/mysql-5.7.18/bin/mysqldump",指定#mysql bin路径为"/usr/local/mysql-5.7.18/bin/"


注意新的newSchema 的dataNode 必须要比schema的dataNode多

否则就会报,不用迁移,最后执行./dataMigrate.sh 即可

如果无法执行: chmod u+x

:set ff

set ff=unix  之后即可执行./dataMigrate.sh 



flink支持分库分表


WITH (\

'connector' = 'mysql-cdc',\

'hostname' = '127.0.0.1',\

'port' = '3306',\

'username' = 'root',\

'password' = '123456',\

'database-name' = '[3-4]+',\

'server-id' = '5411-5412',\

'table-name' = 'test')

你可能感兴趣的:(mycat 分库分表加数据迁移)