温馨提示×

centos mysql迁移步骤指南

小樊
48
2025-11-09 19:12:46
栏目: 云计算

CentOS MySQL迁移步骤指南

一、迁移前准备

  1. 确认版本兼容性:确保源服务器与目标服务器的MySQL版本一致或兼容(如5.7→5.7、8.0→8.0),避免因版本差异导致数据迁移失败。
  2. 备份源数据库:使用mysqldump工具备份所有数据库(含结构和数据),防止迁移过程中数据丢失。命令示例:
    mysqldump -u root -p --all-databases > /backup/all_databases_$(date +%F).sql
    
    输入密码后,备份文件将保存在指定路径。
  3. 安装MySQL客户端:目标服务器需安装MySQL客户端(若未安装),用于接收备份文件并恢复数据:
    sudo yum install mysql -y
    

二、物理备份与恢复(快速迁移)

适用于同一版本、需保留原数据库文件(如.frm.ibdibdata1)的场景,速度较快但需停机。

  1. 停止源服务器MySQL服务
    sudo systemctl stop mysqld
    
  2. 复制数据目录:使用rsync将源服务器的MySQL数据目录(默认/var/lib/mysql)同步到目标服务器相同路径:
    rsync -avz /var/lib/mysql/ root@目标服务器IP:/var/lib/mysql/
    
  3. 修改目标目录权限:确保MySQL用户(通常为mysql)对数据目录有读写权限:
    sudo chown -R mysql:mysql /var/lib/mysql/
    
  4. 启动目标服务器MySQL服务
    sudo systemctl start mysqld
    
  5. 验证数据完整性:登录目标服务器,检查数据库是否存在及表记录数是否与源服务器一致:
    mysql -u root -p -e "SHOW DATABASES;"
    mysql -u root -p -e "USE your_database; SELECT COUNT(*) FROM your_table;"
    

三、逻辑备份与恢复(通用迁移)

适用于跨版本、跨平台或需灵活调整数据库结构的场景,步骤较繁琐但灵活性高。

  1. 源服务器备份:使用mysqldump导出所有数据库到SQL文件(同准备阶段)。
  2. 传输备份文件:使用scp将备份文件从源服务器复制到目标服务器:
    scp /backup/all_databases_$(date +%F).sql root@目标服务器IP:/tmp/
    
  3. 目标服务器恢复:登录目标服务器,创建数据库(若需)并导入备份文件:
    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开启二进制日志):
    [mysqld]
    server-id=1
    log-bin=mysql-bin
    binlog-format=ROW  # 推荐ROW格式,兼容性更好
    
    重启MySQL服务使配置生效:
    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需与主库不同):
    [mysqld]
    server-id=2
    relay-log=mysql-relay
    
    重启MySQL服务:
    sudo systemctl restart mysqld
    
  • 配置主从同步:登录从库MySQL,执行CHANGE MASTER TO命令,指定主库信息(替换为实际IP、用户名、密码及主库状态中的FilePosition):
    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_RunningSlave_SQL_Running是否为YesSeconds_Behind_Master是否为0(表示同步正常):
    SHOW SLAVE STATUS\G
    

五、迁移后验证

  1. 数据库一致性检查:对比源服务器与目标服务器的数据库列表、表结构及数据记录数,确保无遗漏或差异。
  2. 应用连接测试:修改应用程序的数据库连接配置(如JDBC URL、用户名、密码),指向目标服务器,测试业务功能是否正常。
  3. 监控性能:观察目标服务器的CPU、内存、磁盘IO及MySQL性能指标(如QPS、TPS),确保迁移后性能符合预期。

0