首页主机资讯centos mysql迁移步骤解析

centos mysql迁移步骤解析

时间2026-01-21 04:37:04发布访客分类主机资讯浏览552
导读:CentOS MySQL 迁移步骤解析 一 迁移方式与选择 逻辑迁移(推荐用于跨版本、跨主机、云上/云下迁移):使用 mysqldump 导出为 SQL 脚本,在目标服务器导入。优点是兼容性强、操作可控;注意大库需控制导出/导入参数与超时...

CentOS MySQL 迁移步骤解析

一 迁移方式与选择

  • 逻辑迁移(推荐用于跨版本、跨主机、云上/云下迁移):使用 mysqldump 导出为 SQL 脚本,在目标服务器导入。优点是兼容性强、操作可控;注意大库需控制导出/导入参数与超时。
  • 物理迁移(同版本、同平台、停机窗口可控):直接拷贝数据目录(如 /var/lib/mysql/data/mysql),修改配置后启动。优点是速度快;要求版本一致、文件权限与 SELinux 策略正确。
  • 主从复制切换(近零停机):先搭建主从,追平后切换应用到从库。适合对业务连续性要求高的场景。

二 通用准备与校验

  • 版本与配置对齐:确认源/目标 MySQL 版本兼容,尽量保持一致;检查字符集(如 utf8mb4)、排序规则、时区等。
  • 备份与权限:先做全量备份;为导出创建只读账号(如 SELECT、LOCK TABLES),为导入创建具备足够权限的账号(如 ALL PRIVILEGES)。
  • 网络与防火墙:开放 3306 端口,确保源/目标互通;如使用云上实例,检查安全组规则。
  • 目标环境:安装同版本 MySQL 客户端/服务器,初始化系统库,记录临时密码(如 CentOS 7 的日志路径 /var/log/mysqld.log)。

三 方法一 逻辑迁移步骤(跨版本/跨主机通用)

  • 源库导出(示例为全库):
    • 创建导出账号并授权:
      • CREATE USER ‘db_exporter’@‘%’ IDENTIFIED BY ‘YourPass’;
      • GRANT SELECT, LOCK TABLES ON . TO ‘db_exporter’@‘%’;
      • FLUSH PRIVILEGES;
    • 执行导出(InnoDB 建议加 --single-transaction 减少锁表):
      • mysqldump -u db_exporter -p --single-transaction --routines --triggers --events --all-databases > alldb.sql
  • 传输到目标:scp alldb.sql user@target:/path/
  • 目标库导入:
    • 创建导入账号并授权:
      • CREATE USER ‘db_importer’@‘localhost’ IDENTIFIED BY ‘YourPass’;
      • GRANT ALL PRIVILEGES ON . TO ‘db_importer’@‘localhost’ WITH GRANT OPTION;
      • FLUSH PRIVILEGES;
    • 导入:mysql -u db_importer -p < /path/alldb.sql
  • 验证:SHOW DATABASES; 抽样核对表数与关键数据;检查字符集/排序规则与应用连接配置。

四 方法二 物理迁移步骤(同版本原地或目录变更)

  • 停止服务:systemctl stop mysqld
  • 拷贝数据:
    • rsync -av /var/lib/mysql/ /data/mysql/
    • 或 cp -a /var/lib/mysql/* /data/mysql/
  • 修正权限与属主:chown -R mysql:mysql /data/mysql
  • 修改配置(/etc/my.cnf 或 /usr/my.cnf):
    • datadir=/data/mysql
    • socket=/data/mysql/mysql.sock
    • 如自定义了 basedir、pid-file、port,请同步调整
  • SELinux(如启用):
    • 建议 restorecon -R /data/mysql;或 setsebool -P mysql_connect_any 1(按策略选择)
  • 启动与验证:systemctl start mysqld;登录检查 SHOW DATABASES; 与数据可用性。

五 方法三 主从复制迁移步骤(近零停机)

  • 主库配置:
    • 设置 server-id=1;开启 binlog(log-bin);创建复制账号:
      • CREATE USER ‘replica’@‘%’ IDENTIFIED BY ‘YourPass’;
      • GRANT REPLICATION SLAVE ON . TO ‘replica’@‘%’;
      • FLUSH PRIVILEGES;
    • 记录位点:SHOW MASTER STATUS; (File、Position)
  • 从库初始化:
    • 方式 A(物理拷贝,速度快):主库执行 FLUSH TABLES WITH READ LOCK; 拷贝数据目录到从库;UNLOCK TABLES; 从库启动后配置复制。
    • 方式 B(逻辑导入):主库 mysqldump --all-databases --triggers --events > all.sql;从库导入后再配置复制。
  • 从库配置复制:
    • CHANGE MASTER TO MASTER_HOST=‘主库IP’, MASTER_USER=‘replica’, MASTER_PASSWORD=‘YourPass’, MASTER_LOG_FILE=‘File’, MASTER_LOG_POS=Position;
    • START SLAVE;
    • 检查:SHOW SLAVE STATUS\G,确保 Slave_IO_Running=Yes、Slave_SQL_Running=Yes、Seconds_Behind_Master≈0
  • 切换与回退:业务验证无误后,将应用指向从库;保留主库一段时间以便回滚。

六 常见问题与排查要点

  • 权限不足:导出/导入账号权限不够会导致失败,按上文 GRANT 语句补齐。
  • 字符集不一致:导入乱码或比较结果异常,统一源/目标 character_set_server/collation_server 与客户端连接参数。
  • 大文件导入超时/内存不足:适当增大 max_allowed_packet、net_read/write_timeout,或分批导入。
  • 网络/防火墙:无法连接从库或复制中断,检查 3306 端口与安全组/iptables。
  • SELinux 拒绝:物理迁移后访问数据目录被拒,执行 restorecon 或按需设置布尔值。
  • 主从不同步:核对 server-id 唯一、位点正确、主从库表结构一致,必要时重新导入基础数据后重建复制。

声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!


若转载请注明出处: centos mysql迁移步骤解析
本文地址: https://pptw.com/jishu/788107.html
DHCP服务在CentOS中怎么启动 CentOS下如何使用GCC编译多线程程序

游客 回复需填写必要信息