三十三、mysqldump实现版本迁移

数据迁移

生产环境中可能会对数据库进行版本迁移,常为低版本迁移到高版本。
一般为原库不动,备份原库数据到新库使用。

XBK跟mysqldump使用场景
同构平台迁移,即同系统直接迁移,版本差异不大时可使用XBK进行迁移;
异构平台迁移,即不同系统时使用mysqldump进行迁移;

提前准备

1、如何安装MySQL5.6
2、如何安装MySQL5.7
3、应对安装过程中报错

在同一台服务器上共存这两个版本的MySQL,要注意以下几点:
1、配置文件最好放在各自的目录中以免搞混,如/usr/local/mysql57/my.cnf
2、运行时需要指定socket文件,如mysql -uroot -p -S /tmp/mysql56/mysql.sock
3、server_id要不一样
4、端口号要不一致

迁移案例

生产库为mysql5.6.44
需要迁移到mysql5.7.26

1、备份5.6数据

$ mysqldump -uroot -p -A --master-data=2 --single-transaction -R -E --triggers >/backup/full56.sql
$ scp /backup/full56.sql 10.154.0.111:/backup/full56.sql

2.恢复数据

$ /etc/init.d/mysql57 start
$ mysql -S /tmp/mysql57/mysql.sock

mysql> set sql_log_bin=0;
mysql> source /backup/full56.sql
mysql> set sql_log_bin=1;
mysql> flush privileges;

#因为两个数据库版本不同,故使用mysql_upgrade检查和升级不兼容的数据
$ mysql_upgrade  -uroot -p -S /tmp/mysql57/mysql.sock

3、截取binlog恢复
假设10点备份,业务在正常运行,30分钟后升级完成,多余产生的30分钟数据截取二进制日志恢复
假设10点33分钟恢复完成,多余的3分钟数据,先停止业务挂维护页,截取恢复剩余的binlog
检查恢复数据,查看业务是否正常,撤销维护页

关于降级升级

特别注意!!!
降级升级因为mysql5.7中的mysql库跟mysql5.6的mysql库不兼容,会导致mysql5.6数据库重启失败。

重启报错为
Starting MySQL.Logging to '/data/mysql5.6/data/client1.err'.
ERROR! The server quit without updating PID file (/data/mysql5.6/data/client1.pid).

查看错误日志为
cat /data/mysql5.6/data/client1.err | grep ERROR
2021-04-04 15:31:29 87146 [ERROR] Fatal error: mysql.user table is damaged or in unsupported 3.20 format.

此时,需要删除MySQL5.6的数据重新初始化,相当于降了个寂寞。

解决方案

#降级升级时不备份mysql5.7的mysql库
$ mysql -e "show databases;" | grep -Ev "Database|mysql" | \
xargs mysqldump -uroot -p123 --skip-lock-tables --databases > /backup/full20210404.sql

参考资料:Mysqldump备份数据库时排除某些库

学习来自:老男孩深标DBA课程 第七章 备份恢复-2

posted @ 2021-04-04 18:04  努力吧阿团  阅读(333)  评论(0编辑  收藏  举报