Linux MySQL复制功能如何设置
导读:Linux MySQL复制功能设置指南 一 环境准备与核心概念 准备两台 Linux 服务器并安装 MySQL 5.7/8.0,确保网络互通、时间同步(建议 NTP)。 规划唯一的 server-id(主从不能相同),主库开启 二进制日志...
Linux MySQL复制功能设置指南
一 环境准备与核心概念
- 准备两台 Linux 服务器并安装 MySQL 5.7/8.0,确保网络互通、时间同步(建议 NTP)。
- 规划唯一的 server-id(主从不能相同),主库开启 二进制日志(binlog),从库启用 中继日志(relay-log)。
- 复制线程:从库的 I/O 线程负责从主库拉取 binlog 写入中继日志,SQL 线程重放中继日志到从库数据。
- 常见用途:数据冗余、读写分离、高可用与灾备。
二 主库配置步骤
- 编辑配置文件(路径因发行版不同可能为 /etc/my.cnf 或 /etc/mysql/mysql.conf.d/mysqld.cnf),在 [mysqld] 段加入:
保存后重启 MySQL:[mysqld] server-id=1 log-bin=mysql-bin binlog_format=ROW # 可选:仅复制指定库 # binlog_do_db=your_db # 可选:忽略系统库 # binlog_ignore_db=mysqlsudo systemctl restart mysql。 - 创建复制专用账号并授权(建议限制来源 IP):
CREATE USER 'repl'@'从库IP或网段' IDENTIFIED BY 'StrongPass!'; GRANT REPLICATION SLAVE ON *.* TO 'repl'@'从库IP或网段'; FLUSH PRIVILEGES; - 获取复制起点(File 与 Position):
记录输出中的 File 与 Position,随后执行FLUSH TABLES WITH READ LOCK; SHOW MASTER STATUS;UNLOCK TABLES;。 - 一致性初始化数据(任选其一):
- 逻辑备份(停机影响小):
将备份文件拷贝到从库并导入:mysqldump -uroot -p --all-databases --single-transaction --master-data=2 > backup.sqlmysql -uroot -p < backup.sql。 - 物理备份(停机窗口短,适合大库):使用 Percona XtraBackup 在线备份并在从库恢复。
- 逻辑备份(停机影响小):
三 从库配置步骤
- 编辑配置文件,设置唯一 server-id 与中继日志:
保存后重启 MySQL:[mysqld] server-id=2 relay-log=relay-bin # 可选:从库只读(对超级用户无效) # read_only=ON # 可选:级联复制时开启 # log_slave_updates=1sudo systemctl restart mysql。 - 导入主库备份(如使用逻辑备份),然后配置主从连接信息(将参数替换为实际值):
CHANGE MASTER TO MASTER_HOST='主库IP', MASTER_USER='repl', MASTER_PASSWORD='StrongPass!', MASTER_PORT=3306, MASTER_LOG_FILE='mysql-bin.000001', MASTER_LOG_POS=154; START SLAVE; - 检查复制状态(关键字段必须为 Yes):
关注:Slave_IO_Running、Slave_SQL_Running、Seconds_Behind_Master、以及 Last_IO_Error/Last_SQL_Error。SHOW SLAVE STATUS\G
四 验证与常用运维
- 快速验证:在主库插入测试数据,在从库
SELECT验证是否同步;观察SHOW SLAVE STATUS\G中 Seconds_Behind_Master 是否接近 0。 - 常见故障处理:
- 认证或网络问题:核对
MASTER_USER/PASSWORD、来源 IP、端口 3306、以及防火墙/安全组策略。 - 起点不一致:使用主库最新
SHOW MASTER STATUS的 File/Position 重新CHANGE MASTER TO;或基于备份的--master-data自动嵌入起点。 - SQL 错误:依据
Last_SQL_Error定位 DDL/DML 冲突,必要时在从库跳过错误事件(谨慎使用SET GLOBAL sql_slave_skip_counter=1;)后重建复制位点。
- 认证或网络问题:核对
- 维护与优化:
- 定期备份与监控复制延迟;必要时启用从库多线程复制(如 slave_parallel_workers,MySQL 5.7+)。
- 主库 binlog 保留策略:
expire_logs_days(如设置为 7)避免磁盘占满。
五 进阶方案与注意事项
- 基于 GTID 的复制(推荐):在配置文件加入
gtid_mode=ON、enforce_gtid_consistency=ON,从库CHANGE MASTER TO ...时不指定文件与位置,由 GTID 自动定位,故障切换与恢复更简单。 - 双主复制:两节点互为主从,注意自增主键冲突与更新冲突控制,适合高可用与就近写入场景。
- 组复制(MGR):多节点强一致复制,提供自动故障转移与弹性扩展,适合更高要求的集群化部署。
- 安全建议:复制账号仅授予 REPLICATION SLAVE 权限,限制来源 IP,使用强密码并定期轮换;对外网环境禁用不必要的远程 root 登录。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: Linux MySQL复制功能如何设置
本文地址: https://pptw.com/jishu/770357.html
