大家好,我是anyux。本文介绍MySQL数据库5.6版本迁移到5.7。

01 搭建5.6测试环境

02 模拟数据

03 5.6数据库备份

04 准备纯净的5.7数据库

05 上传sql文件到tmp目录下

06 向上更新结构

07 5.6数据库模拟数据追加

08 5.6数据库查看导出二进制日志

09 5.7数据库binlog持续追加

10 验证数据

文末总结MySQL数据库5.6版本迁移到5.7,并有导图

22c760649274c728449aa8a93a73c643.png

搭建5.6测试环境

5.6数据库安装使用yun安装,快速方便

cat >/etc/yum.repos.d/mysql56.repo <

删除旧的yum缓存

yum clean all

建立一个缓存

yum makecache

显示所有可用的仓库列表

yum repolist enabled | grep mysql56

删除mariadb组件

yum remove -y mariadb-libs

安装数据库服务

yum install mysql-community-server -y

启动数据库服务

systemctl start mysqld.service

查看数据库服务状态

systemctl status mysqld.service

登录数据库,授权

直接无密码登录即可,

grant all on *.* to root@'localhost' identified by 'root' with grant option;flush privileges;

设置配置文件,自行重启服务

cat >/etc/my.cnf <

模拟数据

导入t100w表

create database 56_db charset utf8mb4;use 56_db;source /tmp/t100w.sql;

5.6数据库备份

mysqldump -uroot -proot -A --master-data=2 --single-transaction -R -E --triggers >/tmp/5.6.sql

准备纯净的5.7数据库

systemctl restart mysql3308

上传sql文件到tmp目录下

mysql -uroot -proot -S /data/3308/mysql.sockset sql_log_bin=0;source /tmp/5.6.sql;

dc77c470350f90e1042c4e431cb87489.png

对于5.6和5.7表结构有差异,如果mysql库的user表结构差异

向上更新数据库结构

mysql_upgrade -uroot -proot -S /data/3308/mysql.sock

2dac02e05561f99de7bde4c44a92564a.png

5.6数据库模拟数据追加

create database binlog charset utf8mb4;use binlog;create table tmp(id int);insert into tmp values(1),(2),(3);commit;update tmp set id=5 where id=3;commit;insert into tmp values(6),(7);commit;

5.6数据库查看导出二进制日志

show master status;show binlog events in 'log-bin.000001';

根据上面的gtid找到对应的开始的gtid号,导出为sql

mysqlbinlog --base64-output=decode-rows -vvv --start-position=21102060/var/lib/mysql/log-bin.000001 | grep -v "^/" | grep -i 'set'mysqlbinlog --skip-gtids --include-gtids="05b2d4d3-6825-11ea-8f4d-5254002764a7:55-60" /var/lib/mysql/log-bin.000001 > /tmp/gtid-bin.sql;

66414c72aed8172535181a5e783b2371.png

5.7数据库binlog持续追加

set sql_log_bin=0;source /tmp/log-bin.sql;

验证数据

use binlog;select * from tmp;

3b442aa4ee805ea37b0e948c9a727a1d.png

如果业务还有新的数据,同样的方法将数据导入到5.7版本的数据库中。这种频率越高的,就更需要使用脚本来写成,而MySQL有完整的一套机制,这就是主从复制

d931c04f0dfc1fc65bcb6f34c64c3e58.png

欢迎在评论区一起讨论,质疑。文章都是手打原创,每天最浅显的介绍运维、数据库相关的技术,喜欢我的文章就关注一波吧,可以看到最新更新和之前的文章。

更多推荐