双主,主从同步设置的重要参数log_slave_updates

说明:最近部署了mysql的集群环境,详细如下M01和M02为主主复制,M01和R01为主从复制;在测试的过程中发现了以下问题:

1、M01和M02的主主复制是没有问题的(从M01写入数据能同步到M02,从M02写入数据能够同步到M01);

2、主从同步的时候,当从M01写入的时候,数据可以写入到R01;

3、当从M02写入的时候,数据就不能写入到R01;

问题的原因:log_slave_updates参数的状态为NO

mysql的官网说明如下:

Normally, a slave does not log to its own binary log anyupdates that are received from a master server. This option tells the slave tolog the updates performed by its SQL thread to its own binary log. For thisoption to have any effect, the slave must also be started with the --log-binoption to enable binary logging. Prior to MySQL 5.5, the server would not startwhen using the --log-slave-updates option without also starting the server withthe --log-bin option, and would fail with an error; in MySQL 5.5, only awarning is generated. (Bug #44663) --log-slave-updates is used when you want tochain replication servers. For example, you might want to set up replicationservers using this arrangement:

A -> B -> C

   

Here, A serves as the master for the slave B, and Bserves as the master for the slave C. For this to work, B must be both a masterand a slave. You must start both A and B with --log-bin to enable binarylogging, and B with the --log-slave-updates option so that updates receivedfrom A are logged by B to its binary log. 

a) M01同步从M02同步数据过来的时候,log_slave_updates参数用来控制M01是否把所有的操作写入到binary log,默认的情况下mysql是关闭的;

b) R01数据的更新需要通过读取到M01的binary log才能进行更新,这个时候M01是没有写binary log的,所以当数据从M02写入的时候,R01也就没有更新了。。

问题的解决方法:

log_slave_updates:默认值为OFF;

Dynamic Variable:NO

处理方法:修改/etc/my.cnf,增加一行log_slave_updates=1,重启数据库后就可以了;

总结:设置完该参数后,数据库的架构就可以设置成M01和M02为主主同步,R01通过M01进行主从同步;

应用的写操作中M02上面进行,读操作中R01上面进行(如果读操作很多的话,可以在M01上面架设多台只读数据库),当M02发生故障后,系统的写操作自动迁移到M01上面。这种架构基本可以保证大部分公司的应用需求;

时间: 2024-10-15 14:50:09

双主,主从同步设置的重要参数log_slave_updates的相关文章

MySQL 5.5主从同步设置教程

先修改Master(10.1.123.197)的 my.cnf 配置 在 [mysqld] 中新增以下内容 log-bin=mysql-bin log-bin-index=mysql-bin.index server-id = 1 sync_binlog=1 binlog_format=mixed 然后指定要做同步的数据库,并忽略掉不需要做同步的数据库 binlog-do-db = testdb binlog-ignore-db = mysql binlog-ignore-db = perfor

mysql主从同步设置

1.主服务器地址:192.168.1.244    从服务器地址:192.168.1.245 2.主服务器master设置 1)修改/etc/my.cnf 添加: log-bin = /home/mysql/log/mysql-bin.log server-id=244 (注:主从server id不可重复,建议以IP地址设置) 2)登录mysql 创建用户sync并授权192.168.1.245 mysql> GRANT REPLICATION SLAVE ON *.* to 'sync'@'

mysql5.5主从同步设置

主:112.124.43.219 从:42.96.195.208 1.登陆主mysql.添加slave权限 grant replication slave on *.* to 'backup'@'42.96.195.208' identified by 'backup'; 注:可以添加多个从库 2.打开主机A的my.cnf,输入 server-id               =1    #主机标示,整数 log_bin                 =mysql-bin   #确保此文件可写

17.1 MySQL主从介绍17.2 准备工作17.3 配置主17.4 配置从17.5 测试主从同步

- 17.1 MySQL主从介绍 - 17.2 准备工作 - 17.3 配置主 - 17.4 配置从 - 17.5 测试主从同步 # 17.1 MySQL主从介绍 -  MySQL主从又叫做Replication.AB复制.简单讲就是A和B两台机器做主从后,在A上写数据,另外一台B也会跟着写数据,两者数据实时同步的 -  MySQL主从是基于binlog的,主上须开启binlog才能进行主从.bilog,是二进制文件,无法cat -  主从过程大致有3个步骤 1. 主将更改操作记录到binlog

MySQL双主.md

MySQL 双主配置 环境说明 系统 IP 主机名 mysql版本 CentOS 6.8 192.168.197.61 C6-node1 5.6.36 CentOS 6.8 192.168.197.62 C6-node2 5.6.36 MySQL安装这里不做介绍,下面是其配置文件.这里测试使用的是没有数据的纯净数据库. node1节点配置 配置文件 [mysqld] datadir=/data/mysql port=3306 socket=/tmp/mysql.sock pid=/data/my

MySQL keepalived 双主.md

MySQL keepalived 双主搭建 环境说明 系统 IP 主机名 mysql keepalived VIP CentOS 6.8 192.168.197.61 C6-node1 5.6.36 1.2.13 192.168.197.88 CentOS 6.8 192.168.197.62 C6-node2 5.6.36 1.2.13 192.168.197.88 安装MySQL双主 C6-node1 MySQL的安装及初始化这里不做详细介绍,下面贴出node1的my.cnf的配置文件: [

MySQL主从(介绍,配置主机,配置从机,测试主从同步)

一.介绍及准备工作 1.介绍 MySQL主从配置又叫Replication或者AB复制,简单讲就是A和B两台机器做主从后,在A上写数据,另一台B也会跟着写数据,两台数据实时同步. MySQL主从是基于binlog的,主上须开启binlog才能进行主从. 主从过程大致有3个步骤 主将更改操作记录到Binlog里 从将主的Binlog事件(sql语句)同步到从本机上并记录在relaylog里 从根据relaylog里面的sql语句按顺序执行 主上有一个logdump线程,用来和从的i/o线程传递bi

mysql主从同步配置详解

mysql的主从配置参考了不少文章,有的讲的很模糊,有的讲的是老版本,与当下流行的版本有很大出入,配置的过程中各种报错,在把一个一个的坑填完后,这里总结一份比较详细的正确配置步骤. 环境: 操作系统为64位windows10,mysql版本为5.7 主(master):192.168.94.23 端口:3308 从(slave):192.168.94.23 端口:3309 将事先下载好的5.7版本的mysql,复制两份,分别重命名mysql2(主库)和mysql3(从库), 官网下载地址:htt

linux配置mysql主从同步

配置梳理 主数据库 开启二进制日志 设置唯一id 获取二进制文件名和位置 创建用于通信的账号 从数据库 设置唯一id 使用分配的账号读取主数据库的二进制日志 准备工作 主数据库:192.168.0.201 从数据库:192.168.0.202 主数据库配置 进入配置文件 vim /etc/my.cnf 添加两行 log-bin=mysql-bin #开启二进制日志 server-id=201 #设置server-id,唯一值,标识主机 重启服务 service mysql restart 创建账