mysql5.7.28之主主配置 [数据库教程]
1 简介
1.1 主从同步
MySQL的主从复制是一个异步的复制过程(虽然一般情况下感觉是实时的),数据将从一个MySQL数据库复制到另一个MySQL数据库,在master与Slave之间实现整个主从复制的过程是有三个线程参与完成的。其中两个线程(SQL线程和IO线程)在slave端,另一个线程(I/O线程)在master端。
在默认情况下,MySQL的复制是异步的,这意味着主服务器及其从服务器是独立的。如果在主服务器或从服务器端发生故障,会造成主从数据的不一致,甚至在恢复时造成数据丢失。
从MySQL5.5开始引入了一种半同步复制功能,该功能可以确保主服务器和访问链中至少一台从服务器之间的数据一致性和冗余。在这种配置结构中,一台主服务器和其许多从服务器都进行了配置,这样在复制拓扑中,至少有一台从服务器在父主服务器进行事务处理前,必须确认更新已经收到并写入了其中继日志(Relay Log)。
1.2 主主同步
主主同步事实上就是在主从的基础上,将原先的从机当主机,主机当从机再配置一遍主从同步。
2 环境
172.17.0.3
node1
Master-1
172.17.0.4
node2
Master-2
3 安装部署
本次部署不涉及mysql数据库安装
3.1 节点配置--修改my.cnf配置
3.1.1 开启日志、打开gtid
3.1.1.1 node1
[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
server-id=1
log-bin=mysql-bin
binlog_format = row
gtid_mode=ON ##GTID复制又叫全局事物ID,代替了基于binlog和position号的主从复制搭建的方式,更便于主从复制的搭建
enforce_gtid_consistency=ON ##确保gtid全局的一致性
3.1.1.2 node2
[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
server-id=2
log-bin=mysql-bin
binlog_format = row
gtid_mode=ON
enforce_gtid_consistency=ON
3.1.2 开启半同步复制
3.1.2.2 node1
1)安装相关插件
install plugin rpl_semi_sync_master soname ‘semisync_master.so‘;
install plugin rpl_semi_sync_slave soname ‘semisync_slave.so‘;
2)修改配置
方法1:(重启mysql后参数失效)
set global rpl_semi_sync_master_enabled=1;
set global rpl_semi_sync_master_timeout=2000;
set global rpl_semi_sync_slave_enabled=1;
方法2:修改my.cnf文件配置(参数永久有效)
rpl_semi_sync_master_enabled = 1
rpl_semi_sync_master_timeout = 2000
rpl_semi_sync_slave_enabled=1
3)重启mysql服务,查看修改的参数
show global variables like ‘%rpl_semi%‘;
3.1.2.3 node2
1)安装相关插件
install plugin rpl_semi_sync_master soname ‘semisync_master.so‘;
install plugin rpl_semi_sync_slave soname ‘semisync_slave.so‘;
2)修改配置
方法1:(重启mysql后参数失效)
set global rpl_semi_sync_master_enabled=1;
set global rpl_semi_sync_master_timeout=2000;
set global rpl_semi_sync_slave_enabled=1;
方法2:修改my.cnf文件配置(参数永久有效)
rpl_semi_sync_master_enabled = 1
rpl_semi_sync_master_timeout = 2000
rpl_semi_sync_slave_enabled=1
3)重启mysql服务,查看修改的参数
show global variables like ‘%rpl_semi%‘;
3.2 正向主从配置
3.2.1 node1授权
mysql> alter user root@‘localhost‘ identified by ‘Aa!123456‘;
mysql> grant replication slave on *.* to root@‘%‘ identified by ‘Aa!123456‘;
mysql> grant all privileges on *.* to root@‘%‘ identified by ‘Aa!123456‘;
mysql> flush privileges;
3.2.2 node2授权
mysql> alter user root@‘localhost‘ identified by ‘Aa!123456‘;
mysql> grant all privileges on *.* to root@‘%‘ identified by ‘Aa!123456‘;
mysql> change master to master_host=‘172.17.0.3‘,master_user=‘root‘,master_password=‘Aa!123456‘,master_auto_position=1;
mysql> start slave;
mysql> show slave statusG;
3.3 反向主从配置
3.3.1 修改my.cnf文件
3.3.1.1 Node1
auto_increment_increment=2 ##一般有n台主MySQL就填n
auto_increment_offset=1 ##设定数据库中自动增长的起点,两台mysql的起点必须不同,这样才能避免两台服务器同步时出现主键冲突
3.3.1.2 Node2
auto_increment_increment=2 ##一般有n台主MySQL就填n
auto_increment_offset=2 ##设定数据库中自动增长的起点,两台mysql的起点必须不同,这样才能避免两台服务器同步时出现主键冲突
3.3.2 两个节点授权
3.3.2.1 Node1
grant replication slave, replication client on *.* to ‘root‘@‘172.17.0.4‘ identified by‘Aa!123456‘;
change master to master_host=‘172.17.0.4‘,master_user=‘root‘,master_password=‘Aa!123456‘,master_auto_position=1;
flush privileges;
start slave;
show slave statusG;
3.3.2.2 Node2
grant replication slave, replication client on *.* to ‘root‘@‘172.17.0.3‘ identified by‘Aa!123456‘;
flush privileges;
注:node2在正向主从配置时,已经配置过它的主为172.17.0.3,所以无需再配置
mysql5.7.28之主主配置
以上是 mysql5.7.28之主主配置 [数据库教程] 的全部内容, 来源链接: utcz.com/z/535313.html