阅读量:16
CentOS MySQL迁移步骤指南
一、迁移前准备
- 确认版本兼容性:确保源服务器与目标服务器的MySQL版本一致或兼容(如5.7→5.7、8.0→8.0),避免因版本差异导致数据迁移失败。
- 备份源数据库:使用
mysqldump工具备份所有数据库(含结构和数据),防止迁移过程中数据丢失。命令示例:输入密码后,备份文件将保存在指定路径。mysqldump -u root -p --all-databases > /backup/all_databases_$(date +%F).sql - 安装MySQL客户端:目标服务器需安装MySQL客户端(若未安装),用于接收备份文件并恢复数据:
sudo yum install mysql -y
二、物理备份与恢复(快速迁移)
适用于同一版本、需保留原数据库文件(如.frm、.ibd、ibdata1)的场景,速度较快但需停机。
- 停止源服务器MySQL服务:
sudo systemctl stop mysqld - 复制数据目录:使用
rsync将源服务器的MySQL数据目录(默认/var/lib/mysql)同步到目标服务器相同路径:rsync -avz /var/lib/mysql/ root@目标服务器IP:/var/lib/mysql/ - 修改目标目录权限:确保MySQL用户(通常为
mysql)对数据目录有读写权限:sudo chown -R mysql:mysql /var/lib/mysql/ - 启动目标服务器MySQL服务:
sudo systemctl start mysqld - 验证数据完整性:登录目标服务器,检查数据库是否存在及表记录数是否与源服务器一致:
mysql -u root -p -e "SHOW DATABASES;" mysql -u root -p -e "USE your_database; SELECT COUNT(*) FROM your_table;"
三、逻辑备份与恢复(通用迁移)
适用于跨版本、跨平台或需灵活调整数据库结构的场景,步骤较繁琐但灵活性高。
- 源服务器备份:使用
mysqldump导出所有数据库到SQL文件(同准备阶段)。 - 传输备份文件:使用
scp将备份文件从源服务器复制到目标服务器:scp /backup/all_databases_$(date +%F).sql root@目标服务器IP:/tmp/ - 目标服务器恢复:登录目标服务器,创建数据库(若需)并导入备份文件:
mysql -u root -p -e "CREATE DATABASE your_database;" mysql -u root -p your_database < /tmp/all_databases_$(date +%F).sql
四、主从复制迁移(实时同步)
适用于需要零停机或持续数据同步的场景(如生产环境主库迁移至新从库),通过binlog实现实时数据同步。
1. 主服务器配置
- 修改配置文件:编辑
/etc/my.cnf,添加以下参数(server-id需唯一,log-bin开启二进制日志):重启MySQL服务使配置生效:[mysqld] server-id=1 log-bin=mysql-bin binlog-format=ROW # 推荐ROW格式,兼容性更好sudo systemctl restart mysqld - 创建复制用户:登录MySQL,创建用于复制的用户并授权:
CREATE USER 'repl_user'@'%' IDENTIFIED BY 'StrongPassword123!'; GRANT REPLICATION SLAVE ON *.* TO 'repl_user'@'%'; FLUSH PRIVILEGES; - 获取主库状态:记录当前二进制日志文件名(
File)和位置(Position),后续从库需使用:示例输出:SHOW MASTER STATUS;+------------------+----------+--------------+------------------+ | File | Position | Binlog_Do_DB | Binlog_Ignore_DB | +------------------+----------+--------------+------------------+ | mysql-bin.000001 | 107 | | | +------------------+----------+--------------+------------------+
2. 从服务器配置
- 修改配置文件:编辑
/etc/my.cnf,添加以下参数(server-id需与主库不同):重启MySQL服务:[mysqld] server-id=2 relay-log=mysql-relaysudo systemctl restart mysqld - 配置主从同步:登录从库MySQL,执行
CHANGE MASTER TO命令,指定主库信息(替换为实际IP、用户名、密码及主库状态中的File、Position):CHANGE MASTER TO MASTER_HOST='主服务器IP', MASTER_USER='repl_user', MASTER_PASSWORD='StrongPassword123!', MASTER_LOG_FILE='mysql-bin.000001', MASTER_LOG_POS=107; - 启动复制:启动从库复制线程,开始同步数据:
START SLAVE; - 验证同步状态:执行
SHOW SLAVE STATUS\G,检查Slave_IO_Running和Slave_SQL_Running是否为Yes,Seconds_Behind_Master是否为0(表示同步正常):SHOW SLAVE STATUS\G
五、迁移后验证
- 数据库一致性检查:对比源服务器与目标服务器的数据库列表、表结构及数据记录数,确保无遗漏或差异。
- 应用连接测试:修改应用程序的数据库连接配置(如JDBC URL、用户名、密码),指向目标服务器,测试业务功能是否正常。
- 监控性能:观察目标服务器的CPU、内存、磁盘IO及MySQL性能指标(如QPS、TPS),确保迁移后性能符合预期。