主从复制前须确认4个状态:主库SHOW MASTER STATUS确保File/Position非空且GTID有值;从库SHOW SLAVE STATUS检查IO和SQL线程为Yes、延迟不增;server_id主从不同;log_bin开启且binlog_format统一为ROW。

主从复制前必须确认的 4 个状态
主从同步失败,80% 源于基础状态没对齐。别急着改 my.cnf,先在主库和从库分别执行:
-
SHOW MASTER STATUS;(主库)——确认File和Position非空,且Executed_Gtid_Set有值(若启用了 GTID) -
SHOW SLAVE STATUS\G(从库)——重点看Slave_IO_Running和Slave_SQL_Running是否都为Yes,Seconds_Behind_Master是否持续增长 -
SELECT @@server_id;—— 主从必须不同,否则复制线程直接拒绝启动 -
SELECT @@log_bin, @@binlog_format;—— 主库log_bin必须为ON,binlog_format建议统一用ROW(避免语句级复制在从库因函数/临时表等导致不一致)
配置文件里最容易写错的 3 个参数
my.cnf 中几个关键项看似简单,但拼写、作用域或默认值陷阱极多:
-
server-id:必须是整数(如1或2),不能是1.0或字符串"1";且仅在[mysqld]段生效,[client]段无效 -
log-bin:值不是布尔,而是日志文件前缀(如log-bin = /var/lib/mysql/mysql-bin),路径需 MySQL 进程有写权限;若只写log-bin不带值,MySQL 会用主机名自动命名,但迁移时易引发路径不一致问题 -
binlog-do-db或replicate-do-db:慎用!它们不支持通配符,且对跨库语句(如INSERT INTO db2.t SELECT * FROM db1.t)行为不可靠;更安全的做法是用replicate-wild-do-table = db1.%
GTID 模式下 CHANGE MASTER TO 的写法差异
启用 GTID(gtid_mode=ON + enforce_gtid_consistency=ON)后,不能再用传统 MASTER_LOG_FILE/MASTER_LOG_POS,必须用 MASTER_AUTO_POSITION=1:
CHANGE MASTER TO MASTER_HOST='192.168.1.10', MASTER_USER='repl', MASTER_PASSWORD='xxx', MASTER_PORT=3306, MASTER_AUTO_POSITION=1;
如果从库已有旧复制关系,执行前必须先 STOP SLAVE; 并 RESET SLAVE ALL;(注意是 ALL,否则 gtid_purged 可能残留冲突值);主库导出时也要用 mysqldump --set-gtid-purged=ON,否则从库恢复后无法自动定位同步起点。
启科网络商城系统由启科网络技术开发团队完全自主开发,使用国内最流行高效的PHP程序语言,并用小巧的MySql作为数据库服务器,并且使用Smarty引擎来分离网站程序与前端设计代码,让建立的网站可以自由制作个性化的页面。 系统使用标签作为数据调用格式,网站前台开发人员只要简单学习系统标签功能和使用方法,将标签设置在制作的HTML模板中进行对网站数据、内容、信息等的调用,即可建设出美观、个性的网站。
从库延迟高时优先检查的 3 类瓶颈
Seconds_Behind_Master 持续 > 60 秒,不要立刻调大 slave_parallel_workers:
-
单线程 SQL 回放卡住:查
SHOW PROCESSLIST看State是否长期停留在Updating或Creating sort index,说明某条大事务(如ALTER TABLE或未加索引的DELETE)正在阻塞整个 SQL 线程 -
磁盘 I/O 跟不上:用
iostat -x 1观察%util是否持续 > 90%,尤其是从库的mysql-bin所在磁盘;sync_binlog=1和innodb_flush_log_at_trx_commit=1在从库可酌情改为0或2(牺牲少量安全性换吞吐) -
网络抖动导致 IO 线程反复重连:检查
Seconds_Behind_Master是否周期性归零又跳升,配合tcpdump抓包看是否有频繁RST;可在主库设置slave_net_timeout=60,从库设master_connect_retry=30避免重试风暴
真正难处理的是混合了大事务和高并发写入的场景——这时候单靠配置调优收效甚微,得拆分业务逻辑或引入中间件做读写分流。








