[ERROR] --gtid-mode=ON or UPGRADE_STEP_1 or UPGRADE_STEP_2 requires --log-bin and --log-slave-update...

本文介绍了解决CentOS7.5中MySQL基于GTID的主从复制配置问题的方法。针对从库重启时报错的情况,通过修改my.cnf文件中的参数设置解决了问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

centos7.5 做基于GTID的主从重启从库报错

问题:

[root@db01-51 ~]# tail -50 /application/mysql/data/db01-51.err
2019-04-01 15:33:16 31069 [ERROR] --gtid-mode=ON or UPGRADE_STEP_1 or UPGRADE_STEP_2 requires --log-bin and --log-slave-updates

解决方法:

[root@db01-51 ~]# vim /etc/my.cnf
[mysqld]
autocommit=0
log-bin=mysql-bin
binlog_format=row
gtid_mode=ON
enforce_gtid_consistency
log-slave-updates  #加上这一条,让从库都更新binlog
[root@db01-51 ~]# /etc/init.d/mysqld restart
 ERROR! MySQL server PID file could not be found!
Starting MySQL. SUCCESS!

转载于:https://www.cnblogs.com/lvhanzhi/p/10638576.html

<think>嗯,用户问的是关于MySQL主库的配置,具体参数包括binlog-do-db、binlog-ignore-db、log-bin等等。首先,我需要确认每个参数的作用,以及它们如何影响主库和复制的行为。 用户提供的配置中有几个关键点需要注意。首先是binlog-do-db和binlog-ignore-db,这两个参数控制哪些数据库的变更会被记录到二进制日志中。binlog-do-db=bcrf意味着只有bcrf数据库的变更会被记录,而其他被忽略的数据库如mysql、performance_schema等则不会。不过,根据我的知识,binlog-do-db和binlog-ignore-db在某些情况下可能会有冲突,需要确认MySQL如何处理这些冲突,通常如果有binlog-do-db存在,binlog-ignore-db可能被忽略,所以这里可能只记录bcrf数据库的变更。 接下来是log-bin=mysql-bin和server-id=2,这是启用二进制日志并设置服务器ID,这是主从复制的基本配置。server-id必须是唯一的,确保主库和从库的ID不同,这里设置为2是正确的。 然后是复制相关的参数,如replicate-do-db和replicate-ignore-db。但这里有一个疑问,因为replicate-*参数通常是在从库上设置的,用于控制从库应用哪些数据库的变更。主库上设置这些参数可能没有效果,或者可能是用户误将主从配置混在一起了。需要指出这一点,避免用户配置错误。 expire_logs_days=30之前已经介绍过,这里需要再次提及,并提醒在MySQL 8.0及以上版本已被废弃,改用binlog_expire_logs_seconds。 log-slave-updates=1这个参数通常用于级联复制,即从库作为其他从库的主库时,需要记录自己的二进制日志。但主库设置这个参数是否有必要呢?主库本身已经是写入源,可能不需要这个参数,除非主库同时也是另一个主库的从库,形成双主结构。需要询问用户是否在这样的环境中,否则可能不需要配置。 GTID相关的参数,gtid-mode=on和enforce-gtid-consistency=on,这些是启用全局事务标识符,有助于简化复制管理和故障恢复。需要确认用户是否了解GTID的使用,以及是否所有服务器都启用了GTID,避免兼容性问题。 另外,用户可能是在配置主从复制时,混淆了主库和从库的参数。比如replicate-do-db等参数应该是在从库配置,主库上设置这些可能无效。需要指出这点,并建议用户检查配置是否正确。 最后,用户可能有多个数据库,但只希望复制bcrf,而忽略系统数据库。需要确认这样的配置是否满足需求,以及是否存在潜在的问题,比如跨数据库的事务或语句可能被忽略,导致数据不一致。 总结来说,我需要一步步解释每个参数的作用,指出可能的配置错误,提醒版本兼容性问题,并给出优化建议,确保用户正确配置主从复制,避免常见陷阱。</think>以下是针对您提供的主库配置参数的详细分析,分模块说明其功能、注意事项及潜在优化点: --- ### 一、二进制日志控制模块 #### 1. **`binlog-do-db=bcrf`** - **作用**:仅记录指定数据库(`bcrf`)的变更到二进制日志。 - **风险**:若事务跨多个数据库(如同时操作 `bcrf` 和 `other_db`),**仅 `bcrf` 的变更会被记录**,可能导致主从不一致。 - **建议**:慎用此参数,推荐通过应用层隔离多库操作,或改用 `binlog-format=ROW` + 过滤规则。 #### 2. **`binlog-ignore-db` 系列参数** - **作用**:忽略系统库(`mysql`、`sys` 等)的变更记录。 - **合理性**:系统库通常无需复制,但需注意: - `mysql` 库中用户权限变更**不会同步到从库**,需手动处理。 - 若从库需要完全一致的权限,需禁用此参数。 --- ### 二、复制基础配置模块 #### 1. **`log-bin=mysql-bin`** - **作用**:启用二进制日志,文件名前缀为 `mysql-bin`。 - **优化建议**:可指定路径避免与数据文件争抢 I/O: ```ini log-bin=/var/lib/mysql-logs/mysql-bin ``` #### 2. **`server-id=2`** - **要求**:主从环境中每个实例的 `server-id` 必须唯一,此配置正确。 --- ### 三、复制过滤模块(主库配置异常) #### 1. **`replicate-do-db` 与 `replicate-ignore-db`** - **问题定位**:`replicate-*` 参数属于**从库配置**,在主库设置**无效且冗余**。 - **正确用法**: - 主库通过 `binlog-do-db` 控制日志记录范围。 - 从库通过 `replicate-do-db` 过滤需同步的库。 --- ### 四、日志管理模块 #### 1. **`expire_logs_days=30`** - **作用**:自动清理 30 天前的二进制日志(需配合 `PURGE BINARY LOGS` 或日志轮换触发)。 - **兼容性**:MySQL 8.0+ 已弃用,建议替换为: ```ini binlog_expire_logs_seconds = 2592000 # 30天 ``` #### 2. **`log-slave-updates=1`** - **适用场景**:主库同时作为其他从库的上级节点(级联复制)。 - **必要性**:若主库无级联需求,可关闭此参数以减少日志量。 --- ### 五、GTID 模块 #### 1. **`gtid-mode=on` 与 `enforce-gtid-consistency=on`** - **优势**: - 自动跟踪事务,避免传统复制中 `binlog` 位置不一致问题。 - 支持故障切换后快速重建复制链路。 - **要求**: - 所有主从节点均需启用 GTID- 禁止非事务性操作(如 MyISAM 表写入),否则触发错误。 --- ### 六、潜在问题与优化建议 #### 1. **过滤规则冲突** - **现象**:`binlog-do-db` 和 `binlog-ignore-db` 同时存在时,MySQL **优先匹配 `binlog-do-db`**,其他忽略规则失效。 - **建议**:统一使用 `binlog-do-db` 或 `binlog-ignore-db`,避免混用。 #### 2. **跨库操作风险** - **案例**:执行 `USE mysql; INSERT INTO bcrf.table1 ...` 时,因 `binlog-do-db=bcrf`,**该语句不会被记录**,导致从库丢失数据。 - **解决方案**:使用 `ROW` 格式日志,或在应用层规范数据库上下文切换。 #### 3. **监控与维护** - **关键命令**: - 检查未清理的旧日志: ```sql SHOW BINARY LOGS; ``` - 验证 GTID 状态: ```sql SHOW GLOBAL VARIABLES LIKE 'gtid_executed'; ``` --- ### 七、配置总结 | 模块 | 核心参数 | 推荐操作 | |---------------------|----------------------------------|----------------------------------| | 二进制日志过滤 | `binlog-do-db`、`binlog-ignore-db` | 评估跨库操作风险,必要时改用 `ROW` 格式 | | 复制链路 | `server-id`、`log-bin` | 确保路径隔离与 ID 唯一性 | | 日志保留策略 | `expire_logs_days` | 升级到 8.0+ 时迁移到秒级参数 | | GTID 配置 | `gtid-mode`、`enforce-gtid-consistency` | 全节点启用,禁用非事务引擎 | 如需进一步调整配置,建议提供业务场景(如数据量、复制拓扑)以便定制优化方案。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值