mycat分离分片表
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了mycat分离分片表相关的知识,希望对你有一定的参考价值。
背景:当前分片中有5张表,计划将按月分片的日志表分离到其他服务器。
要求:不影响业务情况下进行分离日志表。
实验计划:
1.使用pt工具导出部分库、部分表,并应用备份集。
2.搭建部分表主从同步。
3.修改mycat配置到最终版本,此时不进行reload。
4.等待业务低谷或晚上,进行表rename、mycat进行reload,至此分离日志表完成。
预估影响业务时间<5秒。
实验步骤:
1.innobackupex 使用--include 参数导出部分数据库,测试使用--tables ,--tablefiles,参数导出未成功,可能是使用方法有误。
innobackupex --include="test1.test|test2.test|test3.test|test1.test1|test2.test1|test3.test1|mysql.*" --no-timestamp /data/xtrabackup/mer --user=root -p123456
导出测试的test1--test3的test表,test1--test3的test1表.
出现问题可以检查“创建备份集文件目录权限”“导出语句”“导出备份集目录中的是否有表子目录”“主机磁盘空间不足”等问题,
这些问题均是笔者遇到过的。
实验中不在进行增备,原理相同,只是添加参数即可进行增备。
应用备份集
innobackupex --apply-log /data/xtrabackup/mer --user=root -p123456
应用完成,查看备份集分库目录有表文件,一个表对应2个文件,如果没有“应用备份集”不会有这2个文件。
2.搭建部分表主从同步。
传输备份集,这里使用rsync传输,如果线上权限控制不允许使用rsync,可以通过使用sftp 进行传输。
rsync -av mer XHY005118:/data01/mysql/ --118是搭建的从库IP
从库搭建mysql,此步骤不再赘述,注意点进行截图。
/usr/local/mysql/scripts/mysql_install_db --defaults-file=/etc/my.cnf --user=mysql --basedir=/usr/local/mysql/ --datadir=/data01/mysql/data3306/
将rsync传输的备份集cp到datadir
mv mysql mysql.bak --重要
cp -r * ../data3306/
chown -R mysql:mysql /data
chown -R mysql:mysql /data01/ --注意
起库
mysqld_safe --defaults-file=/etc/my.cnf&
启动成功。
搭建主从
vi xtrabackup_binlog_pos_innodb
CHANGE MASTER TO MASTER_HOST='192.168.5.116',MASTER_USER='****',MASTER_PASSWORD='*****',MASTER_PORT=3306,MASTER_LOG_FILE='mysql-bin.000023',MASTER_LOG_POS=13580;
start slave;
搭建成功。
3. 修改mycat配置文件
修改<datahost>
修改<schema><table>
修改<datanode>
登录管理端口,输入reload @@config_all;
reload @@config;
4.rename table schema;
RENAME TABLE test.test TO test1.test;
RENAME TABLE test.test1 TO test1.test1;
实际测试上百万数据的table执行rename,时间在毫秒级。
改完表后,立即reload mycat。
测试:实测插入数据,mycat会根据分片规则将数据插到对应的新schema的分片表中。
以上是关于mycat分离分片表的主要内容,如果未能解决你的问题,请参考以下文章