0

0

mysql主从复制的配置文件修改与参数设置

P粉602998670

P粉602998670

发布时间:2026-02-03 10:31:04

|

753人浏览过

|

来源于php中文网

原创

MySQL主从复制必须设置唯一server-id并显式配置log-bin路径;主库需设binlog_format=ROW且禁用sql_log_bin=0;从库应启用read_only=1和log-slave-updates=1,并通过SHOW REPLICA STATUS验证状态。

mysql主从复制的配置文件修改与参数设置

my.cnf 中必须设置的 server-id 和 log-bin

主从复制启动失败,90% 是因为 server-id 未设或重复。MySQL 要求每个实例有唯一整数 ID,且主库必须开启二进制日志——仅靠 log-bin 开关还不够,得指定基础文件名(否则默认用主机名,跨环境易出错)。

  • server-id 必须是 1–4294967295 范围内的非零整数,主从不能相同;建议用 IP 最后一段(如 192.168.1.10server-id = 10
  • log-bin 推荐显式写全路径和前缀,例如 log-bin = /var/lib/mysql/mysql-bin,避免因 datadir 变动或权限问题导致日志无法生成
  • 从库也建议开启 log-bin(非必需但利于级联复制),同时必须加 log-slave-updates = 1 才能将同步来的事件再写入自己的 binlog

主库需启用 binlog_format=ROW 并禁用 sql_log_bin=0 的误操作

如果主库用 STATEMENT 格式,遇到 NOW()UUID()、自增主键冲突等场景,从库执行结果会不一致;而 MIXED 实际仍可能退化为 STATEMENT 模式,隐患难排查。线上生产环境应强制设为 ROW

  • binlog_format = ROW 是安全底线,修改后需重启 MySQL 或用 SET PERSIST binlog_format = 'ROW'(MySQL 8.0+)
  • 开发或运维人员有时在主库执行 DDL 前临时关闭日志:SET sql_log_bin = 0,但忘记恢复,导致后续所有变更不写 binlog,从库彻底断连——这类操作必须配监控告警
  • 确认生效:连接主库执行 SHOW VARIABLES LIKE 'binlog_format';SHOW VARIABLES LIKE 'sql_log_bin';

从库关键参数:relay_log、read_only、skip_slave_start 的取舍

从库误写数据是最常见事故源,read_only = 1 能拦截绝大多数非 SUPER 权限用户的写操作,但它不防 root 或 SUPER 用户,也不能阻止 SQL 线程自身写入(这是正常的)。真正要防的是人为 INSERT/UPDATE 到从库表。

微信分销商城电脑手机三合一
微信分销商城电脑手机三合一

微信分销商城电脑手机三合一是以php+MySQL进行开发的微信商城分销系统源码。安装步骤:1、打开:网址/diguo/index.php 用户密码是admin 123456 登录进去配置数据库信息。2、用帝国还原恢复数据库.3、修改data文件夹里的config.php (data/config.php)数据库配置信息4、登录网站后台,网址:域名/admin/index.php 后台帐号是:

下载
  • relay_log 建议显式指定路径和前缀(如 relay-log = /var/lib/mysql/mysql-relay-bin),避免与主库 binlog 文件名冲突,也方便定位 relay 日志位置
  • read_only = 1 必开,但注意:若从库还承担只读查询,需额外授权 SELECT 给应用用户;SUPER 用户仍可绕过,所以生产环境应收回 SUPER 权限
  • skip_slave_start = 1 已被弃用(MySQL 5.7+ 不识别),新版用 skip_replica_start = 1;但除非调试需要,否则不应跳过启动,否则每次重启都要手动 START REPLICA;

配置生效后验证 replication 连接与延迟的关键命令

改完 my.cnf 重启只是第一步,MySQL 不会自动建立主从连接,必须手动执行 CHANGE REPLICATION SOURCE TO ...(MySQL 8.0.23+ 语法)或旧版 CHANGE MASTER TO ...。很多故障源于这里参数填错,尤其是 SOURCE_LOG_FILESOURCE_LOG_POS 对不上。

  • 主库上执行 SHOW MASTER STATUS; 获取当前 binlog 文件名和 position;从库执行 CHANGE REPLICATION SOURCE TO SOURCE_HOST='xxx', SOURCE_USER='repl', SOURCE_PASSWORD='xxx', SOURCE_LOG_FILE='mysql-bin.000001', SOURCE_LOG_POS=156;
  • 启动后立刻查状态:SHOW REPLICA STATUS\G(注意不是 SLAVE),重点看 Replica_IO_RunningReplica_SQL_Running 是否都为 Yes,以及 Seconds_Behind_Master 是否稳定为 0 或缓慢增长
  • 常见卡点:IO thread 连不上主库(网络、防火墙、账号权限)、SQL thread 报错(如主键冲突、表结构不一致),此时 Last_IO_ErrorLast_SQL_Error 字段会给出具体错误信息
mysql> SHOW REPLICA STATUS\G
*************************** 1. row ***************************
             Replica_IO_State: Waiting for source to send event
              Source_Host: 192.168.1.10
              Source_User: repl
              Source_Port: 3306
          Connect_Retry: 60
        Source_Log_File: mysql-bin.000002
    Read_Source_Log_Pos: 194
         Relay_Log_File: mysql-relay-bin.000003
          Relay_Log_Pos: 320
  Relay_Source_Log_File: mysql-bin.000002
     Replica_IO_Running: Yes
    Replica_SQL_Running: Yes
Seconds_Behind_Master: 0

配置项之间存在隐式依赖,比如没开 log-bin 就设 log-slave-updates 会静默失效;server-id 为 0 时整个复制线程直接拒绝启动。这些细节不会报错,但会让后续排查变成盲猜。

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

通义千问
通义千问

阿里巴巴推出的全能AI助手

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
数据分析工具有哪些
数据分析工具有哪些

数据分析工具有Excel、SQL、Python、R、Tableau、Power BI、SAS、SPSS和MATLAB等。详细介绍:1、Excel,具有强大的计算和数据处理功能;2、SQL,可以进行数据查询、过滤、排序、聚合等操作;3、Python,拥有丰富的数据分析库;4、R,拥有丰富的统计分析库和图形库;5、Tableau,提供了直观易用的用户界面等等。

792

2023.10.12

SQL中distinct的用法
SQL中distinct的用法

SQL中distinct的语法是“SELECT DISTINCT column1, column2,...,FROM table_name;”。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

330

2023.10.27

SQL中months_between使用方法
SQL中months_between使用方法

在SQL中,MONTHS_BETWEEN 是一个常见的函数,用于计算两个日期之间的月份差。想了解更多SQL的相关内容,可以阅读本专题下面的文章。

351

2024.02.23

SQL出现5120错误解决方法
SQL出现5120错误解决方法

SQL Server错误5120是由于没有足够的权限来访问或操作指定的数据库或文件引起的。想了解更多sql错误的相关内容,可以阅读本专题下面的文章。

1345

2024.03.06

sql procedure语法错误解决方法
sql procedure语法错误解决方法

sql procedure语法错误解决办法:1、仔细检查错误消息;2、检查语法规则;3、检查括号和引号;4、检查变量和参数;5、检查关键字和函数;6、逐步调试;7、参考文档和示例。想了解更多语法错误的相关内容,可以阅读本专题下面的文章。

364

2024.03.06

oracle数据库运行sql方法
oracle数据库运行sql方法

运行sql步骤包括:打开sql plus工具并连接到数据库。在提示符下输入sql语句。按enter键运行该语句。查看结果,错误消息或退出sql plus。想了解更多oracle数据库的相关内容,可以阅读本专题下面的文章。

943

2024.04.07

sql中where的含义
sql中where的含义

sql中where子句用于从表中过滤数据,它基于指定条件选择特定的行。想了解更多where的相关内容,可以阅读本专题下面的文章。

581

2024.04.29

sql中删除表的语句是什么
sql中删除表的语句是什么

sql中用于删除表的语句是drop table。语法为drop table table_name;该语句将永久删除指定表的表和数据。想了解更多sql的相关内容,可以阅读本专题下面的文章。

427

2024.04.29

Python 序列化
Python 序列化

本专题整合了python序列化、反序列化相关内容,阅读专题下面的文章了解更多详细内容。

12

2026.02.02

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
MySQL 教程
MySQL 教程

共48课时 | 2.1万人学习

MySQL 初学入门(mosh老师)
MySQL 初学入门(mosh老师)

共3课时 | 0.3万人学习

简单聊聊mysql8与网络通信
简单聊聊mysql8与网络通信

共1课时 | 821人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号