mysql组复制与pxc对比_MySQL Group Replication(组复制MGR)

本文探讨了MySQL Group Replication (MGR) 的基本要求和限制,包括对InnoDB存储引擎、主键、IPv4网络、网络性能、GTID模式的依赖。MGR不支持MyISAM引擎、binlog checksum、并发DDL与DML操作等。此外,还详细介绍了如何配置和启动MGR,包括设置服务器ID、二进制日志、GTID模式,以及各种相关参数。MGR使用Paxos算法确保一致性,通过模拟法庭审判的过程进行解释。
摘要由CSDN通过智能技术生成

MGR基本要求:

1、InnoDB存储引擎

2、主键,每个表必须具有已定义的主键或等效的主键,其中等效项是非null唯一键

3、IPv4网络

4、网络性能

5、开启二进制日志并开启GTID模式

6、mysql版本在5.7.17以上

MGR限制:

1、组复制不支持mysiam引擎

2、不支持binlog的checksum校验

3、并发DDL与DML操作。使用多主模式时,不支持针对同一对象但在不同服务器上执行的并发数据定义语句和数据操作语句,因为锁不共享

4、具有级联约束的外键

5、非常大的事务,即超过5S的事物,都会自动驱逐出集群,设置group_replication_transaction_size_limit参数限制事物大小,如果超过则回滚

6、最多包含9个服务器

开启replication配置:

所有的实例中必须包含以下参数配置:

server-id=1                                      #标识服务器唯一

log-bin=mysql-bin                           #二进制日志开启

enforce_gtid_consistency = ON #GTID模式

binlog-format=row#必须是ROW模式

gtid-mode=ON                                  #GTID保证事物编号全局唯一   (Global Transaction ID)

master-info-repository=TABLE

relay-log-info-repository=TABLE#记录同步的信息,便于管理和恢复

log-slave-update= ON                        #需要记录事务的binlog,用作以后的恢复用,哪怕不是写入点,也需要

binlog-checksum=NONE#MGR本身不支持binlog的checksum校验

slave-parallel-workers=8

slave-preserve-commit-order=1    #GTID配置,SQL线程按照顺序重放事物

slave-parallel-type=LOGICAL_CLOCK.   #SQL线程工作模式。有两种。

#组复制配置:

transaction_write_set_extraction=XXHASH64    #指示服务器对于每个事务,它必须收集写集并使用XXHASH64散列算法将其编码为 散列

loose-group_replication_group_name="aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa"    #命名格式,每个实例必须完全相同

loose-roup_replication_start_on_boot=off        #插件在服务器启动时不自动启动操作

loose-group_replication_local_address =“127.0.0.1:24903”     #指定本机地址及端口,是通信端口,不是实例端口

loose-group_replication_group_seeds= "127.0.0.1:24903,127.0.0.1:24903,127.0.0.1:24903"    #设置组成员的主机名和端口,端口使用的是通信端口,不是实例端口

loose-group_replication_bootstrap_group=off #引导是否开启,选择关闭,手动引导

loose-group_replication_auto_increment_increment=7      #指定自增量,默认为7

loose-group_replication_single_primary_mode = off   #关闭单主模式的参数

loose-group_replication_enforce_update_everywhere_checks = on #开启强制检查

创建复制账号:

SET SQL_LOG_BIN=0;      #不写入二进制日志,避免扩散到其他机器

grant replication slave on *.* to 'backup'@'%' identified by '123456';

FLUSH PRIVILEGES;SET SQL_LOG_BIN=1;

主执行:

CHANGE MASTER TO MASTER_USER='stemp', MASTER_PASSWORD='123456' FOR CHANNEL 'group_replication_recovery';      #加入组

INSTALL PLUGIN group_replication SONAME 'group_replication.so';      #安装组复制插件。mysql自带有这个插件

SHOW PLUGINS;    #查看插件是否安装成功

SET GLOBAL group_replication_bootstrap_group = ON; #开始引导组

START GROUP_REPLICATION;                 #开启组复制

SET GLOBAL group_replication_bootstrap_group = OFF;  #关闭引导

查看:

SELECT * FROM performance_schema.replication_group_members;      #查看是否加入成功

其他机器执行(加入组复制):

SET SQL_LOG_BIN=0;      #不写入二进制日志,避免扩散到其他机器

grant replication slave on *.* to 'backup'@'%' identified by '123456';

FLUSH PRIVILEGES;SET SQL_LOG_BIN=1;

CHANGE MASTER TO MASTER_USER='stemp', MASTER_PASSWORD='123456' FOR CHANNEL 'group_replication_recovery';

INSTALL PLUGIN group_replication SONAME'group_replication.so';

START GROUP_REPLICATION;

这里和第一台机器不同的是不执行引导组的语句。

查看:SELECT * FROM performance_schema.replication_group_members;

MGR使用paxos算法来解决一致性的问题,自己的理解:比如一场法庭审判:

底下的人都是提议者,可以提出自己的意见和建议,但是,最后做出决定的是法官,这个法官可以是一个或者多个。提出提议的众人争先和法官联系。每一个提议者都会提出一个意见,这个意见会生成一个唯一的ID。如果有一个提议者和大多数法官(半数以上)取得的联系,那么这个提议就会被接受

法官就会记录这个提议生成的唯一ID,和上一个ID进行对比,如果现在的这个ID大于旧ID,那么这个意见就会被接收,然后法官们一起决定这个意见,以少数服从多数的方式决定。如果这个ID小于或者等于旧ID,那么法官就会拒绝这个提议,拒绝后,提议者会将这个ID号增加,然后继续向法官提出提议,直到被接受。在同一时间,只有一个提议能被接受。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值