以下是CentOS下MySQL数据迁移的常见方法及步骤:
一、使用mysqldump工具(逻辑迁移)
适用场景:跨服务器迁移、需备份数据
-
备份源数据库
mysqldump -u [用户名] -p[密码] [数据库名] > backup.sql(可选:
--all-databases备份所有库,或--single-transaction保证一致性) -
传输备份文件
scp backup.sql [目标服务器用户]@[目标IP]:/目标路径 -
恢复数据到目标服务器
mysql -u [用户名] -p[密码] [目标数据库名] < backup>(若为压缩文件,需先解压:
gunzip backup.sql.gz) -
验证数据
登录目标数据库,检查表结构和数据是否完整。
二、物理复制数据目录(适用于同服务器或高性能场景)
适用场景:同服务器不同路径迁移、需快速同步
-
停止MySQL服务
systemctl stop mysqld -
复制数据目录
rsync -av /var/lib/mysql/ [目标路径]/(需确保目标目录权限正确:
chown -R mysql:mysql [目标路径]) -
修改配置文件
编辑/etc/my.cnf,更新datadir指向新路径,重启MySQL。 -
验证数据
检查新路径下的数据文件,登录数据库确认表和数据正常。
三、主从复制(实时同步)
适用场景:实时数据同步、读写分离
-
主服务器配置
- 修改
/etc/my.cnf,启用log-bin和server-id(唯一ID)。 - 创建复制用户并授权:
CREATE USER 'repl'@'从服务器IP' IDENTIFIED BY '密码'; GRANT REPLICATION SLAVE ON *.* TO 'repl'@'从服务器IP'; - 重启MySQL,记录
SHOW MASTER STATUS中的File和Position。
- 修改
-
从服务器配置
- 修改
/etc/my.cnf,设置server-id(不同于主服务器)、relay-log。 - 执行
CHANGE MASTER TO指定主服务器信息(IP、端口、账号、File、Position)。 - 启动复制:
START SLAVE;,通过SHOW SLAVE STATUS检查状态(Slave_IO_Running和Slave_SQL_Running应为Yes)。
- 修改
注意事项
- 权限与安全:确保目标服务器的MySQL用户有足够权限,物理迁移时注意防火墙开放3306端口。
- 停机时间:物理迁移需短暂停机,建议在低峰期操作;逻辑迁移(mysqldump)可在线执行但耗时较长。
- 版本兼容:源和目标服务器的MySQL版本需兼容,建议使用相同大版本。
根据需求选择合适方法,逻辑迁移适合跨环境,物理迁移适合高性能场景,主从复制适合实时同步需求。