标签:主从复制 节点配置 pos style 打开 独立 off replicat 全局
MySQL的主从复制是一个异步的复制过程(虽然一般情况下感觉是实时的),数据将从一个MySQL数据库复制到另一个MySQL数据库,在master与Slave之间实现整个主从复制的过程是有三个线程参与完成的。其中两个线程(SQL线程和IO线程)在slave端,另一个线程(I/O线程)在master端。
在默认情况下,MySQL的复制是异步的,这意味着主服务器及其从服务器是独立的。如果在主服务器或从服务器端发生故障,会造成主从数据的不一致,甚至在恢复时造成数据丢失。
从MySQL5.5开始引入了一种半同步复制功能,该功能可以确保主服务器和访问链中至少一台从服务器之间的数据一致性和冗余。在这种配置结构中,一台主服务器和其许多从服务器都进行了配置,这样在复制拓扑中,至少有一台从服务器在父主服务器进行事务处理前,必须确认更新已经收到并写入了其中继日志(Relay Log)。
主主同步事实上就是在主从的基础上,将原先的从机当主机,主机当从机再配置一遍主从同步。
172.17.0.3 |
node1 |
Master-1 |
172.17.0.4 |
node2 |
Master-2 |
本次部署不涉及mysql数据库安装
[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全局的一致性
[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
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%‘;
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%‘;
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;
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 status\G;
auto_increment_increment=2 ##一般有n台主MySQL就填n
auto_increment_offset=1 ##设定数据库中自动增长的起点,两台mysql的起点必须不同,这样才能避免两台服务器同步时出现主键冲突
auto_increment_increment=2 ##一般有n台主MySQL就填n
auto_increment_offset=2 ##设定数据库中自动增长的起点,两台mysql的起点必须不同,这样才能避免两台服务器同步时出现主键冲突
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 status\G;
grant replication slave, replication client on *.* to ‘root‘@‘172.17.0.3‘ identified by‘Aa!123456‘;
flush privileges;
注:node2在正向主从配置时,已经配置过它的主为172.17.0.3,所以无需再配置
标签:主从复制 节点配置 pos style 打开 独立 off replicat 全局
原文地址:https://www.cnblogs.com/jiayan666/p/14285064.html