zoukankan      html  css  js  c++  java
  • 三十三、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

    今天的学习是为了以后的工作更加的轻松!
  • 相关阅读:
    PDF上添加水印
    java调用POI读取Excel
    搭建Linux的VMware Workstation Pro
    js中两种定时器的设置及清除
    SUI使用经验
    List集合与Array数组之间的互相转换
    jquery操作select
    jquery操作CheckBox
    时间格式
    java 获取路径的各种方法
  • 原文地址:https://www.cnblogs.com/tz90/p/14616654.html
Copyright © 2011-2022 走看看