mysql5.7.13双主配置

配置:
主A:10.205.128.25 centos7
主B:10.205.128.195 centos7
双主设置奇偶自增id 【三主的话,就将步长设置为3,初始值分别为123】
1.为了解决同步时数据记录的冲突
主A写了一条数据 (5,‘blue’)
主B写一条数据(5,‘pink‘)
那么在同步时,就会出现主键一样,冲突,报错
2.区分是那个主机插入的数据

以上为个人见解,不一定正确…

修改mysql配置文件

主要是设置log-bin、auto-increment-increment自增id的步长
auto-increment-offset。
双主架构中

主机25的

auto-increment-offset=1,
auto-increment-increment=2,

主机195的

auto-increment-offset=2,
auto-increment-increment=2,
eg.
在这里插入图片描述

主机25配置:

vim /etc/my.cnf

[mysqld]
server_id = 1. #必须区别主机195,两个不一样
log-bin=mysql-bin
binlog-ignore-db=mysql
sync_binlog = 1
binlog_format=mixed
#relay-log=relay-log-bin
#relay-log-index=slave-bin.index
auto-increment-increment=2。 #自增id步长,与主机195一样
auto-increment-offset=1 #自增id起始值,与主机195不一样
log-slave-updates
sync_binlog = 1
expire_logs_days=7
log_bin_trust_function_creators = 1
validate_password_policy=0 #安全策略,也可以后面设置

主机195配置,修改或者添加

vim /etc/my.cnf

[mysqld]

#主数据库端ID号
server_id = 2
log-bin=mysql-bin
binlog_format=mixed
relay-log=relay-log-bin
relay-log-index=slave-bin.index
auto-increment-increment=2
auto-increment-offset=2
log-slave-updates
validate_password_policy=0

修改完配置重启数据库

systemctl restart mysqld.service
不同版本命令可能不一样

进入数据库配置

主机25

#mysql -uroot -p1234567890
mysql -u用户 -p密码

mysql> grant replication slave on . to ‘repl’@‘10.205.128.195’ identified by ‘1234567890’;
mysql> flush privileges;
将数据库的所有权限授予10.205.128.195上的repl用户,后面是密码
然后刷新权限。

然后将库锁住。仅允许读,保证数据一致性,等到猪猪同步后再解锁,锁住后就不能往表里面写数据,重启mysql.service就自动解锁了。
mysql> flush tables with read lock;

mysql> show master status;
查看主机195 master
在这里插入图片描述
file是binlog文件
position是偏移量
mysql> unlock tables; (原先是因为执行了锁表 flush tables with read lock;)

mysql> stop slave;
mysql> change master to master_host=‘10.205.128.195’,master_user=‘repl’,master_password=‘1234567890’,master_log_file=‘mysql-bin.000006’,master_log_pos=1658050;

这里master_log_file的值就是主机195 master status当中file的值,
master_log_pos 就是主机195当中position的值,这里仅作演示,具体自己修改

mysql> Start slave;
mysql> show slave status\G;
看到
Slave_IO_Running:yes
Slave_SQL_Running:yes
就证明主从配置好了,一个负责与主机的io通信,一个负责自己的slave mysql进程。
在这里插入图片描述

在主机195上同样操作

注意修改bin-log file和position为A的master status里面的数据

验证

show databases;
use bilibili;

在这里插入图片描述

创建表

在主机25上

mysql> create table aaaa( id int(6) primary key not null auto_increment, name char(16));
创建表aaaa,id为自增id
mysql> show tables;

在主机195上

show databases;
use bilibili;
mysql> show tables;

在这里可以看到在主A上创建的表aaaa,已经同步到B上了
在这里插入图片描述

在主机25上插入数据

mysql> insert into aaaa values(null,‘pinkflower’);
Query OK, 1 row affected (0.01 sec)

在主机195插入数据

mysql> insert into aaaa values(null,‘yellowflower’);
Query OK, 1 row affected (0.01 sec)

在主机25

mysql> insert into aaaa values(null,‘blueflower’);

在这里插入图片描述

在主机25上再插入数据

在这里插入图片描述

在主机25上插入数据

在这里插入图片描述

在主机195上插入

在这里插入图片描述

在主机195上插入

在这里插入图片描述

在主机25上插入

在这里插入图片描述

删除id=5那行,其他行并没有变,重启数据库服务还是没有变

在这里插入图片描述

报错

Slave_SQL_Running:no

有可能是因为密码策略问题

解决1.可以在一开始的/etc/my.cnf,mysql配置文件中设置

vim /etc/my.cnf
添加validate_password_policy=0

解决2.可以直接执行

stop slave;
SET GLOBAL SQL_SLAVE_SKIP_COUNTER=1;
start slave;
show slave status\G; \G分行显示

Slave_IO_Running:no

查看master_log_file设置对了吗

slave stop;
CHANGE MASTER TO MASTER_LOG_FILE=‘mysql-bin.000026’, MASTER_LOG_POS=0;
slave start;
show slave status\G;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值