Linux MySQL复制功能设置指南
一 环境准备与核心概念
二 主库配置步骤
[mysqld]
server-id=1
log-bin=mysql-bin
binlog_format=ROW
# 可选:仅复制指定库
# binlog_do_db=your_db
# 可选:忽略系统库
# binlog_ignore_db=mysql
保存后重启 MySQL:sudo systemctl restart mysql。CREATE USER 'repl'@'从库IP或网段' IDENTIFIED BY 'StrongPass!';
GRANT REPLICATION SLAVE ON *.* TO 'repl'@'从库IP或网段';
FLUSH PRIVILEGES;
FLUSH TABLES WITH READ LOCK;
SHOW MASTER STATUS;
记录输出中的 File 与 Position,随后执行 UNLOCK TABLES;。mysqldump -uroot -p --all-databases --single-transaction --master-data=2 > backup.sql
将备份文件拷贝到从库并导入:mysql -uroot -p < backup.sql。三 从库配置步骤
[mysqld]
server-id=2
relay-log=relay-bin
# 可选:从库只读(对超级用户无效)
# read_only=ON
# 可选:级联复制时开启
# log_slave_updates=1
保存后重启 MySQL:sudo 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;
SHOW SLAVE STATUS\G
关注:Slave_IO_Running、Slave_SQL_Running、Seconds_Behind_Master、以及 Last_IO_Error/Last_SQL_Error。四 验证与常用运维
SELECT 验证是否同步;观察 SHOW SLAVE STATUS\G 中 Seconds_Behind_Master 是否接近 0。MASTER_USER/PASSWORD、来源 IP、端口 3306、以及防火墙/安全组策略。SHOW MASTER STATUS 的 File/Position 重新 CHANGE MASTER TO;或基于备份的 --master-data 自动嵌入起点。Last_SQL_Error 定位 DDL/DML 冲突,必要时在从库跳过错误事件(谨慎使用 SET GLOBAL sql_slave_skip_counter=1;)后重建复制位点。expire_logs_days(如设置为 7)避免磁盘占满。五 进阶方案与注意事项
gtid_mode=ON、enforce_gtid_consistency=ON,从库 CHANGE MASTER TO ... 时不指定文件与位置,由 GTID 自动定位,故障切换与恢复更简单。