mysql主主被动复制_带从服务器的MySql主主复制之一

本文详细介绍了MySQL的主动-主动模式主主复制配置步骤,包括解决自增主键冲突的方法。在四台服务器的环境中,分别设置两台主服务器和两台从服务器,涉及配置文件修改、启动MySQL、设置复制账户等步骤。尽管这种模式存在潜在问题,但在特定场景下仍有其应用。文章最后提到了更优的主动被动模式作为替代方案。
摘要由CSDN通过智能技术生成

本篇简单的介绍一下MySql主动-主动模式下的主主复制,虽然这种模式的复制会出现很多问题,最明显的就是自增主键的冲突问题,但是在某些特定的环境下,还是会用到这种复制模式。

假设我们的主从主从复制结构是由4台服务器构成,2台master,2台slave。

master服务器1:192.168.0.100 slave服务器1:192.168.0.101

master服务器2:192.168.0.200 slave服务器2:192.168.0.201

构成的结构图如下:

77ccc094577be08dc7d7e8549358ca58.png

首先,分别在4台机器上安装MySql,并使用MySql自带的my-medium.cnf作为初始配置文件,在4台服务器里分别执行如下命令。

[root@m/s/m/s ~]# yum -y install mysql mysql-server

[root@m/s/m/s ~]# \cp -f /usr/share/doc/mysql-server-*/my-medium.cnf /etc/my.cnf

第一步,配置2台主(Master)服务器配置文件,此步分别在2台主(Master)里操作。

1.在192.168.0.100的/etc/my.cnf的[mysqld]域后里添加

2.在192.168.0.200的/etc/my.cnf的[mysqld]域后里添加

为了解决我前面提到的同时插入数据时的自增主键冲突问题,我们加了

两个参数的配置,这样就解决了这个冲突问题,但是如果某一方写入频繁,某一方写入很少,会造成大量的键空间浪费,而且这不能解决所有主动模式下的主主复制的其他问题,所有没有特殊需要,我推荐你尽量不要用这种复制模式,在下篇我将介绍一种更好的结构->主动被动模式下的主主复制。

第二步,配置2台从(Slave)服务器配置文件,此步分别在2台从(Slave)里操作。

1.在192.168.0.101的/etc/my.cnf的[mysqld]域后追加

2.在192.168.0.201的/etc/my.cnf的[mysqld]域后追加

*注意:以上的设置参数,如果设定文件/etc/my.cnf里本身就有的话,就先给删掉,再追加我们的设置。

第三步,启动MySql,为root用户设置密码,并创建复制账户,在4台服务器里分别执行:

[root@m/s/m/s ~]# /etc/init.d/mysqld start

[root@m/s/m/s ~]# /usr/bin/mysqladmin -u root password 'rootpassword'

[root@m/s/m/s ~]# mysql -uroot -p Enter password:

mysql> GRANT REPLICATION SLAVE,REPLICATION CLIENT ON *.* TO'repluser'@'192.168. 0.%' IDENTIFIED BY 'replpass';

Query OK, 0 rows affected (0.00 sec)

mysql> FLUSH PRIVILEGES;

Query OK, 0 rows affected (0.00 sec)

第四步,启动复制:

对于主服务器2(192.168.0.200)来说,主服务器1和从服务器2都是它的从服务器,因此在主服务器1(192.168.0.100)和从服务器2(192.168.0.201)里分别执行:

同理在主服务器2(192.168.0.200)和从服务器1(192.168.0.101)里分别执行:

到此为止,配置完成,你可以在主服务器里分别插入并删除一些数据做测试了,如果上面SHOW SLAVE STATUS\G也正常,

可是从服务器并未从主服务复制数据,那么你在相对于该服务器的从服务器的MySql里执行一下:

如果还是不行,那么你就要检查你的设置并查看MySql的日志文件了。

server_id 服务器ID,不要和别的服务器冲突了,在同一个局域网里,我习惯使用ip的最后一位

log_bin  显式的指定二进制日志的文件名

log_bin_index 注意这里指定的文件名不是记录的表的索引,而是记录了二进制日志的文件名

sync_binlog 设为1就是把MySql每次发生的修改和事件的日志即时同步到硬盘上

max_binlog_size 指定二进制日志的大小

关于过滤复制对象的问题,但是如果不是特殊需要,不要使用复制过滤,因为同样有几率在一些事件触发的时候导致一些错误。介绍几种过滤参数。

binlog_do_db 只复制指定的数据库(主服务器配置文件里设置)

binlog_ignore_db 不复制指定的数据库(主服务器配置文件里设置)

replicate_ignore_table 不复制指定的表(从服务器配置文件里设置)

replicate_wild_ignore_table 使用wild匹配来不复制的指定表(从服务器配置文件里设置),比如参数设为abc.%,表示不复制abc的所有表。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值