记录一下MySQL在面临短时间进行跨多版本升级,数据如何进行迁移的问题
现状
1 2 3 4
| 使用的是MySQL5.1的版本 升级至5.7版本 数据上T级别 5.1分区仅支持1024个,分区即将用尽,线上目前正在使用
|
已使用的方案
1 2 3 4 5 6 7
| 因为比较急,需要赶在国庆假期之前弄好 采取了mysqldump的方式,在当天数据计算完毕之后,进行dump成sql文件,耗时4-5小时 然后进行load进新版本的MySQL中,耗时7-8小时<其中包括出错时间>
其实这也是一种方式,但其实并不适用于那种时时刻刻都有数据写入MySQL的业务情景 只是恰好我们只是存当天报表任务的指标数据 所以可以使用直接dump
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| # canal原理 使用canal进行对mysql的binlog进行解析 模拟MySQL slave的交互协议,伪装自己为MySQL slave,向MySQL master发送dump协议 MySQL master收到dump请求,开始推送binary log给slave(即canal) canal解析binary log对象(原始为byte流)
# 过程 只需要旧MySQL执行flush logs命令,生成新的binary log文件 同时canal开始同步数据到新MySQL 这时新MySQL的数据应该与旧数据库的一致 将流量切到新MySQL
# 注意 使用flush logs相当于确定一个时间点,这个时间点之前的数据同步好,那么新数据库的数据一定与旧数据库一致 接着就是切流量的数据同步了
|