- 首页 >
- 问答 >
-
云计算 >
- Debian MySQL迁移步骤与注意事项
Debian MySQL迁移步骤与注意事项
小樊
35
2025-11-23 03:52:53
Debian 上 MySQL 迁移步骤与注意事项
一 迁移方案速览
- 逻辑迁移:使用 mysqldump 或 mysqlpump 导出为 SQL 脚本,在目标端导入。优点是通用、跨版本兼容性好;适合中小规模或需要跨版本升级的场景。
- 物理/热备迁移:使用 Percona XtraBackup 进行热备,适合大数据量、要求最小化停机的场景。
- 文件系统迁移:直接拷贝 /var/lib/mysql 数据目录(停机 + rsync/LVM 快照),适合同版本、同平台快速搬迁。
- 选择建议:数据量小选逻辑迁移;数据量大且需在线选 XtraBackup;同版本同平台且可停机选文件系统拷贝。
二 标准步骤
- 通用准备
- 在源端创建备份账号并授予必要权限(如 SELECT、SHOW VIEW、LOCK TABLES、RELOAD、REPLICATION CLIENT)。
- 记录关键配置:字符集(如 utf8mb4)、排序规则、存储引擎、时区、SQL 模式、InnoDB 参数等。
- 规划切换窗口与回滚方案,通知业务方。
- 逻辑迁移(mysqldump/mysqlpump)
- 源端导出:
- 单库:mysqldump -u [用户] -p[密码] --single-transaction --routines --triggers --default-character-set=utf8mb4 [库名] > backup.sql
- 全库:mysqldump -u [用户] -p[密码] --single-transaction --routines --triggers --events --default-character-set=utf8mb4 --all-databases > backup.sql
- 传输:scp backup.sql user@target:/path/
- 目标端导入:mysql -u [用户] -p[密码] < backup.sql
- 校验:登录 MySQL,核对库表数量、数据量、主外键、视图/存储过程、错误日志。
- XtraBackup 热备(大数据量)
- 源端安装:sudo apt-get update && sudo apt-get install percona-xtrabackup-24
- 备份:xtrabackup --backup --user=[用户] --password=[密码] --target-dir=/path/to/backup
- 传输:scp -r /path/to/backup user@target:/path/to/destination
- 目标端准备:xtrabackup --prepare --target-dir=/path/to/destination
- 恢复:xtrabackup --copy-back --target-dir=/path/to/destination --datadir=/var/lib/mysql
- 权限与启动:chown -R mysql:mysql /var/lib/mysql && sudo systemctl start mysql
- 文件系统迁移(停机)
- 停机:sudo systemctl stop mysql
- 拷贝:rsync -aAX /var/lib/mysql/ target:/var/lib/mysql/(同版本同平台)
- 权限与启动:chown -R mysql:mysql /var/lib/mysql && sudo systemctl start mysql
- 如变更 datadir,需同步更新 /etc/mysql/my.cnf 并重启。
三 关键注意事项
- 版本与兼容性:尽量保持源/目标 MySQL 主版本一致;跨版本迁移先小范围验证。
- 字符集与排序规则:统一 utf8mb4/utf8mb4_unicode_ci,避免导入后出现乱码或索引限制问题。
- 一致性:逻辑导出使用 –single-transaction 获取一致性快照;大数据量避免长事务锁表。
- 停机与回滚:明确切换窗口、DNS/连接串切换顺序与回滚触发条件。
- 权限与对象:确保账号权限完整;导出时包含 –routines --triggers --events,避免对象缺失。
- 网络与传输:大文件建议使用 nohup/screen 或断点续传;校验传输完整性(如 md5sum)。
- 配置文件:核对 my.cnf 中 datadir、innodb_log_file_size、server_id、bind-address 等关键项。
- SELinux/AppArmor:如启用,确认对 /var/lib/mysql 的访问策略正确。
- 监控与告警:迁移后观察错误日志、复制延迟(如有)、连接数、慢查询。
四 迁移后验证与切换
- 数据一致性:抽样对比表行数、关键聚合值、主外键约束、触发器/存储过程执行结果。
- 可用性:应用端连通性测试、功能回归、性能压测(QPS/延迟/错误率)。
- 复制与时区:如启用复制,检查 Slave_IO_Running/Slave_SQL_Running 与延迟;确认 time_zone 设置一致。
- 切换与回滚:按“只读→应用切换→观察→关闭旧库”的顺序执行;异常立即回滚并恢复只读。
五 常用命令清单
- 导出单库:mysqldump -u [用户] -p[密码] --single-transaction --routines --triggers --default-character-set=utf8mb4 [库名] > backup.sql
- 导出全库:mysqldump -u [用户] -p[密码] --single-transaction --routines --triggers --events --default-character-set=utf8mb4 --all-databases > backup.sql
- 导入:mysql -u [用户] -p[密码] < backup.sql
- 传输:scp backup.sql user@target:/path/
- XtraBackup 备份:xtrabackup --backup --user=[用户] --password=[密码] --target-dir=/path/to/backup
- XtraBackup 准备:xtrabackup --prepare --target-dir=/path/to/backup
- XtraBackup 恢复:xtrabackup --copy-back --target-dir=/path/to/backup --datadir=/var/lib/mysql
- 重启服务:sudo systemctl restart mysql