温馨提示×

Ubuntu上MySQL如何进行数据迁移

小樊
45
2025-12-22 05:06:19
栏目: 云计算

Ubuntu 上 MySQL 数据迁移实操指南

一、常用迁移方式与适用场景

  • 逻辑迁移(mysqldump/MySQL Workbench):跨版本、跨平台通用,操作简单,适合大多数中小规模库与日常变更迁移。
  • 物理迁移(拷贝数据目录):同版本、同平台最快,需停机,适合一次性整机搬迁。
  • 热备份迁移(Percona XtraBackup):几乎不停机,适合7×24业务与大体量库。
  • 官方图形化迁移(MySQL Workbench Migration Wizard):向导式迁移,适合从异构数据库迁至 MySQL 或做结构/数据同步评估。

二、标准流程 逻辑迁移(跨服务器/跨版本通用)

  • 1)源库备份
    • InnoDB 推荐单事务导出,避免全库锁表:
      • 全库:
        • mysqldump -uroot -p --single-transaction --routines --triggers --default-character-set=utf8mb4 --hex-blob --databases 库1 库2 > backup.sql
      • 单库:
        • mysqldump -uroot -p --single-transaction --routines --triggers --default-character-set=utf8mb4 --hex-blob 库名 > backup.sql
    • 说明:–single-transaction 保证一致性;–routines 含存储过程/函数;–triggers 含触发器;–hex-blob 更稳妥地处理 BLOB/TEXT;字符集建议统一为 utf8mb4
  • 2)传输到目标服务器
    • scp backup.sql user@目标IP:/home/user/
  • 3)目标库准备
    • 安装同版本 MySQL(或兼容版本),创建同名空库(如使用 mysql -e “CREATE DATABASE db;”)。
  • 4)导入数据
    • mysql -uroot -p < backup.sql
  • 5)验证
    • 登录检查:SHOW DATABASES; USE db; SHOW TABLES; SELECT COUNT(*) FROM 表; 抽样对比关键数据。

三、物理迁移 同版本拷贝数据目录(最快,需停机)

  • 1)源库停机并拷贝
    • sudo systemctl stop mysql
    • sudo rsync -av /var/lib/mysql/ 目标主机:/var/lib/mysql/
  • 2)目标库权限与目录
    • sudo chown -R mysql:mysql /var/lib/mysql
  • 3)启动与验证
    • sudo systemctl start mysql
    • 登录核对库表与数据量。
  • 4)仅变更存储路径(本机目录迁移)
    • 修改 /etc/mysql/my.cnf 的 datadir 为新路径;
    • 配置 AppArmor(Ubuntu 常见限制):编辑 /etc/apparmor.d/usr.sbin.mysqld,为新的数据目录新增读写权限规则,例如:
      • /newdatadir/ r,
      • /newdatadir/** rwk,
    • 执行:sudo systemctl reload apparmor && sudo systemctl start mysql。

四、热备份迁移 使用 Percona XtraBackup(几乎不停机)

  • 1)安装工具
    • sudo apt-get install percona-xtrabackup
  • 2)源库备份
    • xtrabackup --backup --target-dir=/opt/backup
  • 3)准备备份(回滚未提交事务)
    • xtrabackup --prepare --target-dir=/opt/backup
  • 4)传输到目标并恢复
    • rsync -av /opt/backup 目标主机:/var/lib/mysql
    • 目标库:sudo chown -R mysql:mysql /var/lib/mysql
  • 5)启动与验证
    • sudo systemctl start mysql
    • 登录核对库表与数据量。
  • 适用场景:大体量、要求高可用的生产库;迁移窗口短。

五、迁移校验与常见问题

  • 校验清单
    • 数据量:对比各表 COUNT(*) 与关键业务指标;
    • 一致性:对核心表做校验和(如 CHECKSUM TABLE)或抽样比对;
    • 结构:SHOW CREATE TABLE/SHOW CREATE PROCEDURE 确认索引、触发器、存储过程、视图一致;
    • 权限:核对用户、库级/表级权限是否迁移到位。
  • 常见问题与处理
    • 字符集乱码:导出/导入统一使用 utf8mb4
    • 权限错误:数据目录必须属主 mysql:mysql,AppArmor/SELinux 策略需放行新路径;
    • 版本差异:跨大版本(如 5.7→8.0)建议先小流量演练,关注系统库变更与 SQL 模式;
    • 大表超时:导入时适当增大 net_read_timeout/net_write_timeout,或分批导入。

0