今天看啥  ›  专栏  ›  Dead_LS

mysql的半同步复制和全同步复制

Dead_LS  · CSDN  ·  · 2020-02-10 20:15

文章预览

1.mysql半同步复

在server1和server2上安装半同步复制的插件

INSTALL PLUGIN rpl_semi_sync_master SONAME 'semisync_master.so';安装半同步模块
  • 1

查看server1和server2上的插件

SELECT PLUGIN_NAME, PLUGIN_STATUS设置
       FROM INFORMATION_SCHEMA.PLUGINS
       WHERE PLUGIN_NAME LIKE '%semi%';
  • 1
  • 2
  • 3

在server1和server2上激活插件,开启半同步

SET GLOBAL rpl_semi_sync_master_enabled = 1
  • 1

查看server1和server2主库的变量的值,可以查看到延迟时间(10000是指10000毫秒)

SHOW VARIABLES LIKE 'rpl_semi_sync%';
show status like '%rpl%'      
  • 1
  • 2

在 server2上,关闭从库进行测试

STOP SLAVE IO_THREAD;
  • 1

server1上

use westos
insert into usertb values ('user4','123');
  • 1
  • 2

等待10s,没有接收到slave的ack请求,自动转换为异步复制,需要等待一个节点完成所有的复制
i

nsert into usertb values ('user5','123');(发现特别快,已经变成异步了)
show status like '%rpl%';(发现半同步已经关闭)
  • 1
  • 2

server2上开启从库

START SLAVE IO_THREAD;
show processlist;
use westos
select * from usertb;
  • 1
  • 2
  • 3
  • 4

发现所有的数据都同步了
关闭server2上面的slave,然后在server1上面插入数据
sever1(master)等待10s发现server2(slave)没有发送ACK消息,自动变为异步同步,
然后在server2上把slave上面开启,会把之前的数据读过来

2.mysql的全同步复制(组复制)
在server1上面进行设置

vim /etc/mysql.cnf #加入下面的东西
server_id=1第一个节点
gtid_mode=ON
enforce_gtid_consistency=ON
master_info_repository=TABLE
relay_log_info_repository=TABLE
binlog_checksum=NONE #关闭binlog校验
log_slave_updates=ON
log_bin=binlog
binlog_format=ROW#组复制依赖基于行的复制格式

transaction_write_set_extraction=XXHASH64
loose-group_replication_group_name="查出来的uuid"##查看/var/lib/mysql/auto.cnf
loose-group_replication_start_on_boot=off
loose-group_replication_local_address= "172.25.12.1:33061"当前节点的ip
loose-group_replication_group_seeds="172.25.12.1:33061,172.25.12.2:33061,172.25.12.3:33061"
loose-group_replication_bootstrap_group=off
loose-group_replication_ip_whitelist="127.0.0.1,172.25.12.0/24"
loose-group_replication_enforce_update_everywhere_checks=ON
loose-group_replication_single_primary_mode=OFF#后两行是开启多主模式的参数

 systemctl restart mysqld#重启服务
 mysql -uroot -pWestos+123登录数据库
show databases;查看数据库
SET SQL_LOG_BIN=0;关闭二进制日志
CREATE USER rpl_user@'%' IDENTIFIED BY 'Westos+123';创建用户
GRANT REPLICATION SLAVE ON *.* TO rpl_user@'%';用户授权
FLUSH PRIVILEGES;刷新用户授权表
SET SQL_LOG_BIN=1;开启二进制日志
CHANGE MASTER TO MASTER_USER='rpl_user', MASTER_PASSWORD='Westos+123' FOR CHANNEL 'group_replication_recovery';配置用户
INSTALL PLUGIN group_replication SONAME 'group_replication.so';安装组复制插件
SET GLOBAL group_replication_bootstrap_group=ON;在第一个节点上要先打开一次
START GROUP_REPLICATION;开启组复制
SET GLOBAL group_replication_bootstrap_group=OFF; 关闭组复制激活
SELECT * FROM performance_schema.replication_group_members;查看组的状态,当前只有一个节点在线
CREATE DATABASE test; 创建库
USE test;进入库
CREATE TABLE t1 (c1 INT PRIMARY KEY, c2 TEXT NOT NULL);创建表
INSERT INTO t1 VALUES (1, 'Harry');插入数据
SELECT * FROM t1;查看数据
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40

在server2,3上重复以上配置即可完成组同步。

………………………………

原文地址:访问原文地址
快照地址: 访问文章快照
总结与预览地址:访问总结与预览