MySQL 5.7.30 主主同步

MySQL 5.7.30 主主同步,第1张

在MySQL服务器1中,添加如下配置:

在MySQL服务器2中,添加如下设置:

在这里两台MySQL的配置文件,需要对auto_increment_offset字段,设定不同值。因为如果mysql中有自增长字段,不设定这个参数会起冲突,会报duplicate....的报错。

auto_increment_offset表示自增长字段从那个数开始,他的取值范围是1 .. 65535

auto_increment_increment表示自增长字段每次递增的量,其默认值是1,取值范围是1 .. 65535

做主主同步配置时,需要将两台服务器的auto_increment_increment增长量都配置为2,而要把auto_increment_offset分别配置为1和2,这样可以避免两台服务器同时做更新时,自增长字段的值之间发生冲突。

配置好两台mysql的my.cnf配置文件后,service mysqld restart 重启mysql服务。

在Mysql服务器1中,

在MySQL服务器2中,做如上同样的 *** 作,然后将服务器1的file和position值设定到服务器2中,服务器2的file和position值输入到服务器1中。

在MySQL服务器1中,输如下命令:

在MySQL服务器2中,输如下命令:

范例如下图:

配置完后,分别在两台服务器上输show slave status

如果出现如下两个字段都是on的状态,则主主备份搭建完成。

Slave_IO_Running: Yes

Slave_SQL_Running: Yes

在实际测试配置中,由于MySQL服务器2是克隆的MySQL服务器1的,所以start slave 后,show slave status 出现了Slave_IO_Running: No ,然后有如下报错信息。告知是因为两个MySQL服务器的UUID相重复了。

只需要,将basedir,即/use/local/mysql/data中的auto.cnf文件删掉后,重启mysql,就会出现新的auto.cnf文件,里面有新的UUID

在两台服务器上安装mysql

#apt-get install mysql-server -y

创建同步帐户

我这里就直接使用的数据库默认用户root

在ubuntu4上:

mysql>grant replication slave on *.* to 'root'@'192.168.2.5' identified by '12345678'

mysql>flush privileges

在ubuntu5上:

mysql>grant replication slave on *.* to 'root'@'192.168.2.4' identified by '12345678'

mysql>flush privileges

修改mysql的配置文件

/etc/mysql/my.cnf

在Ubuntu4 上:

【code】

[mysqld]

binlog-do-db=db_rocky #需要记录进制日志的数据库.如果有多个数据库可用逗号分隔,或者使用多个binlog-do-db选项

binlog-ignore-db=mysql #不需要记录进制日志的数据库.如果有多个数据库可用逗号分隔,或者使用多个binlog-do-db选项

replicate-do-db=db_rocky #需要进行同步的数据库.如果有多个数据库可用逗号分隔,或者使用多个replicate-do-db选项

replicate-ignore-db=mysql,information_schema #不需要同步的数据库.如果有多个数据库可用逗号分隔,或者使用多个replicate-ignore-db选项

#同步参数:

server-id=1

log_bin = /var/log/mysql/mysql-bin

#保证slave挂在任何一台master上都会接收到另一个master的写入信息

log-slave-updates

sync_binlog=1

auto_increment_offset=1

auto_increment_increment=2

slave-skip-errors=all #过滤掉一些没啥大问题的错误

【/code】

在Ubuntu5上:

[mysqld]

server-id=2 #设置一个不同的id、注意这里在my.cnf里面有个默认值是 1 、把默认值改掉、而不能新增一个server-id

binlog-do-db=db_rocky #需要记录二进制日志的数据库.如果有多个数据库可用逗号分隔,或者使用多个binlog-do-db选项

binlog-ignore-db=mysql #不需要记录进制日志的数据库.如果有多个数据库可用逗号分隔,或者使用多个binlog-ignore-db选项

#需要同步的数据库

replicate-do-db=db_rocky

#需要进行同步的数据库.如果有多个数据库可用逗号分隔,或者使用多个binlog-do-db选项

replicate-ignore-db=mysql,information_schema #不需要同步的数据库.如果有多个数据库可用逗号分隔,或者使用多个binlog-do-db选项

#同步参数:

#保证slave挂在任何一台master上都会接收到另一个master的写入信息

log-slave-updates

sync_binlog=1

auto_increment_offset=2

auto_increment_increment=2

slave-skip-errors=all #过滤掉一些没啥大问题的错误

分别重启服务器上的mysql服务

分别在服务器上查看做为主服务器状态

mysql>flush tables with read lock#防止进入新的数据

mysql>show master status\G

分别在服务器上用change master语句指定同步位置 :

在ubuntu4上:

change master to master_host='192.168.2.5',master_user='root',master_password='12345678',master_log_file='mysql-bin.000001',master_log_pos=107

在Ubuntu5上:

change master to master_host='192.168.2.4',master_user='root',master_password='12345678',master_log_file='mysql-bin.000001',master_log_pos=107


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zaji/6176045.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-03-17
下一篇 2023-03-17

发表评论

登录后才能评论

评论列表(0条)

保存