CentOS 下 MySQL 数据迁移技巧
一 迁移方式选型
二 标准流程与命令示例
步骤1 版本与环境检查
在源与目标分别执行:mysql --version,确认版本兼容;规划目标机器的 datadir、字符集、端口与防火墙策略。
步骤2 源库备份(逻辑迁移)
全库导出:mysqldump -u <用户> -p --all-databases > alldb_backup.sql
单库导出:mysqldump -u <用户> -p --databases <db1> <db2> > backup.sql
为减少锁等待,可按需添加 --single-transaction(InnoDB)或配合 --lock-tables 的策略。
步骤3 传输到目标机器
scp alldb_backup.sql <目标IP>:/path/to/destination 或 rsync -avP alldb_backup.sql <目标IP>:/path/。
步骤4 目标库导入
全库导入:mysql -u <用户> -p < alldb_backup.sql
单库导入:mysql -u <用户> -p <db1> < backup.sql
步骤5 基本校验
SHOW DATABASES; 对比库数量;抽样 USE <db>; SHOW TABLES; SELECT COUNT(*) FROM <tbl> LIMIT 1; 校验数据量与结构。
三 物理迁移与目录切换要点
systemctl stop mysqldcp -a /var/lib/mysql/* /data/mysql/chown -R mysql:mysql /data/mysql[mysqld]
datadir=/data/mysql
socket=/data/mysql/mysql.sock
pid-file=/data/mysql/hostname.pid
如为 RPM 第三方包,可能读取 /usr/my.cnf;YUM 安装常见为 /etc/my.cnf。[client] 段也配置 socket=/data/mysql/mysql.sock。systemctl start mysqld 或 service mysqld start,登录验证 SHOW DATABASES;。mysqld_safe --skip-grant-tables & 后登录更新密码并 FLUSH PRIVILEGES;,随后重启。四 常见问题与处理
GRANT ...),以及目标机防火墙/SELinux 策略放行 3306。mysql -u root -p --default-character-set=utf8mb4 < backup.sql。mysqlimport;必要时调大 max_allowed_packet 与 net_read/write_timeout。五 迁移前后验证清单
datadir、socket、character_set_server、collation_server 等关键参数一致。