MySQL · 数据库迁移

背景

源数据库:MySQL 5.5.20

  • 主库:10.159.39.38
  • 从库:10.159.39.39
源库信息 (10.159.39.38:3306) 目标库信息 (10.199.96.188:3306)
版本 MySQL 5.5.20
数据量 137.50 GB
操作系统 CentOS release 6.5 (Final) CentOS release 6.10 (Final)

目的数据库:MySQL 5.6.36

  • 主库:10.199.96.188
  • 从库:10.199.96.189

方案对比

特性 xtrabackup (开源第三方) mysqldump (自带) mysqldumper
性能 最佳 最差 次之
数据量 最大 次之 最少
远程备份 不支持 支持 支持
数据一致性 支持 支持 支持
工具便捷性 次之 较好 较好
版本兼容性 较差 较好 较好
备份类型 物理备份 逻辑备份 逻辑备份

参考案例

需求背景:xx 项目,将生产环境数据库迁移至测试环境,迁移数据量约 185GB

环境信息

  • 生产库:10.138.22.218:3100MySQL 5.6.27
  • 测试库:10.138.22.192:3306MySQL 5.6.27

Tips:数据库版本一致,且配置文件 my.cnf 一致,才能使用 XtraBackup

准备条件

操作步骤

  • 备份主库(约耗时 30min
1
$ innobackupex --defaults-file=/etc/my.cnf --user=root --password='xx' --no-timestamp /data/backup
  • 传输备份数据到测试服务器 (约耗时 30min,速度取决于服务器 IO 性能)
1
$ scp -r /data/backup/* root@10.138.22.192:/data/backup
  • 恢复全备数据(约耗时 60min
1
2
3
4
5
6
7
$ mysqladmin -S /data/mysql/mysql.sock -uroot -p'xx' shutdown
$ innobackupex --defaults-file=/etc/my.cnf --apply-log /data/backup
$ mv mysql mysql_bak
$ mkdir mysql
$ innobackupex --defaults-file=/etc/my.cnf --copy-back /data/backup
$ chown -R mysql:mysql mysql
$ /usr/local/mysql/bin/mysqld_safe --defaults-file=/etc/my.cnf --user=mysql >/dev/null &