暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Migration在线分片扩容、数据迁移工具巧用

IT那活儿 2023-08-26
483
点击上方“IT那活儿”公众号,关注后了解更多内容,不管IT什么活儿,干就完了!!!



扩容背景



在分布式架构中,随着时间推移,各分片上数据量及访问量越来越大,服务器容量和性能达到瓶颈,数据扩容在DBProxy不停机的前提下,将高负载服务器上的部分分片完整的迁移到低负载的服务器上,透明的完成分片数据迁移和配置切换。

扩容流程分为:准备环境 -> 配置 -> 迁移 -> 切换 -> 清理。
原理示意图



扩容过程



2.1 部署migration服务

解压 ctg-udal-migration-v1.1-release-git-master-74bcbf12-t201803141725.tar。
配置端口 (默认为 8280)。
解压文件夹中 migration–>conf–>service.conf–> port: 8280
如果底层高可用数据库为5.7版本,则进入migration–>conf,修改cmd_5.7.conf为cmd.conf;如果底层高可用数据库为8.0版本,则进入migration–>conf,修改cmd_8.7.conf为cmd.conf;
运行migration–>bin–>./migration.sh start 即可启动服务。
2.2 配置迁移任务
2.3 配置数据库集群信息
2.4 在新加的分片机器上添加innobackupex命令
cd /usr/bin

ln -s usr/bin/xtrabackup innobackupex

2.5 检查配置开始全量
2.6 增量迁移
等待上面全量迁移完成后,点击增量迁移:
2.7 切换分片
分片切换动作会对性能有短暂的抖动,建议在非业务高峰时操作。
切换完成后达到增量迁移成功状态,此状态表示数据迁移、节点切换已完成,新的数据将会写入迁移后的分片中,此时,可以选择立即或后续再清除已完成迁移的旧分片。
2.8 清除源数据库

清除完成后,本次迁移扩容操作就完成了。




总 结



3.1 迁移过程中会阻止源数据库和目标数据库主备自动切换,迁移结束后恢复可切换状态

3.2 选择非业务高峰时段进行数据迁移
3.3 迁移过程会自动忽略除truncate外的ddl语句,所以迁移过程中不能进行建表、删除表操作
3.4 全量迁移使用XtraBackup工具高效访问Innodb存储引擎,导出待迁移数据库的物理数据文件
3.5 增量迁移把目标数据库伪装成待迁移mysql数据库的Salve节点,接收主库发送过来的binlog数据

彩蛋-迁移过程问题分析:
1)问题
在全量迁移过程中报错获取系统AIO失败
140505 16:05:59 InnoDB: Using Linux native AIO
140505 16:05:59  InnoDB: Warning: io_setup() failed with 
EAGAIN. Will make 5 attempts before giving up.InnoDB:
Warning: io_setup() attempt 1 failed.InnoDB: Warning:
io_setup() attempt 2 failed.InnoDB: Warning: io_setup()
attempt 3 failed.InnoDB: Warning: io_setup() attempt 4 
failed.InnoDB: Warning: io_setup() attempt 5 failed.
140505 16:06:02  InnoDB: Error: io_setup() failed with EAGAIN after 5 attempts.

2)解决办法
错误代码EAGAIN表明超出了可用event限制的最大值:
SZDB:~ # cat /proc/sys/fs/aio-max-nr65536 #64k

SZDB:~ # vi /etc/sysctl.conf
fs.aio-max-nr=262144         #调整为256k

SZDB:~ # sysctl -p


END


本文作者:饶茂林(上海新炬中北团队)

本文来源:“IT那活儿”公众号

文章转载自IT那活儿,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论