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分离分片表的主要内容,如果未能解决你的问题,请参考以下文章

Mycat实现Mysql主从读写分离

mycat

mycat

MySQL(19) Mycat分片(分库分表)配置

Mycat读写分离以及拆库拆表综合实验3:通过日志分析mycat路由过程

jeesz分布式架构之 mycat实现mysql读写分离实践