centos mysql迁移步骤解析
导读: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)
- 设置 server-id=1;开启 binlog(log-bin);创建复制账号:
- 从库初始化:
- 方式 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
