- 博客(16)
- 收藏
- 关注
转载 说MGR - 成员间的通信模块Part2
通信模块分为3部分。1.本地数据包接收部分负责接收本地成员向其它模块的数据发送请求,接收到的数据包被放入本地数据队列等待处理。2.成员间的通信部分负责和其它成员通信。通信工作包括:从本地数据队列读取数据包发送给其它成员,以及接收其它成员发送过来的数据包。各个成员之间通信使用了Paxos协议。3.全局数据包发送部分将所有的数据包按顺序返回给本地成员上的全局事务认证模块。当各个成...
2019-09-15 21:38:44
237
转载 说MGR - MGR中事务的执行过程Part1
MGR中group_replication插件最重要的功能就是事务分发器的功能,这里其分发的是Binlog Event,事务分发器的处理是在事务执行即将结束的时候。MGR将这称作乐观的事务执行策略,可以带来更好的性能。但这种策略下,多个成员上的事务可能发生冲突。MGR需要一个冲突检测机制来发现并处理冲突。根据事务处理过程中的不同处理步骤,MGR中事务分发器的功能划分为以下四个...
2019-09-15 00:34:44
381
转载 说MGR - MGR的基本原理
状态机复制MGR本质上一个状态机复制的集群。在状态机复制的架构中,数据库被当做一个状态机。每一次写操作都会导致数据库的状态变化。为了创建一个高可用的数据库集群,有一个组件,即事务分发器,将这些操作按照同样的顺序发送到多个初始状态一致的数据库上,让这些数据库执行同样的操作。因为初始状态相同,每次执行的操作也相同,所以每次状态变化后各个数据库上的数据保持一致。分布式的状态机复制事...
2019-09-14 00:00:23
1027
转载 说MGR - MGR的监控
表performance_schema.replication_group_member_stats可以显示MGR成员的诸多统计信息。[root@mysql.sock][performance_schema]> select * from replication_group_member_stats\G*************************** 1. row...
2019-09-13 20:27:18
293
转载 说MGR - 单独的通信机制
虽然MGR会使用Slave的通道,但只是使用这个通道的执行线程(Applier Thread)来执行Binlog Event,并没有使用这个通道来传输Binlog Event。MGR没有使用异步复制的Binlog Event传输机制,也不使用MySQL的服务端口来进行通信。MGR创建了一个独立的TCP端口来进行通信,各个MySQL服务器上的Group Replication插...
2019-09-08 19:44:55
417
转载 说MGR - MGR的日志
场景1,MGR的启动日志mysql01.com操作1.[root@mysql.sock][(none)]> CHANGE MASTER TO MASTER_USER='rpl_user', MASTER_PASSWORD='password' FOR CHANNEL 'group_replication_recovery';Query OK, 0 rows affect...
2019-08-26 01:05:28
655
转载 说MGR - MGR重点参数说明
transaction_write_set_extraction=XXHASH64Defines the algorithm used to generate a hash identifying the writes associated with a transaction. If you are using Group Replication, the hash val...
2019-08-19 22:58:32
492
转载 说GTID - 与GTID相关的4个基本函数和使用场景
4个基本函数1. GTID_SUBSET(set1,set2) - 若在set1中的GTID,也在set2中,返回true,否则返回false(set1是set2的子集)。[root@mysql.sock][(none)]> SELECT GTID_SUBSET('3E11FA47-71CA-11E1-9E33-C80AA9429562:23','3E11FA47-71...
2019-08-11 19:28:58
1034
转载 说GTID - GTID-based复制中的限制
同一个事务(语句)中,不能同时涉及事务和非事务数据表的变更,这会导致一个事务对应多个GTID,违反了事务与GTID的一对一对应原则。[root@mysql.sock][db1]> show create table t2 \G*************************** 1. row *************************** Tabl...
2019-08-04 16:18:12
155
转载 说GTID - Failover and Scaleout
在GTID-based复制中,如何扩容一个只读实例?这里使用mysqldump工具在Master节点上进行数据备份,注意一个关键参数:--set-gtid-purged[=name],该参数代表在备份文件中,哪些GTID已执行过了,在change master时,复制将从这些GTID之后进行。--set-gtid-purged[=name]Add 'SET @@GLOBAL....
2019-08-04 11:37:39
79
转载 说GTID - Auto-Positioning
GTID-based的复制,在初始化阶段,Slave节点会把已接收到的和提交的GTID集合信息,发送给Master节点。该GTID集合等价于后面两个GTID集合的并集,@@GLOBAL.gtid_executed + performance_schema.replication_connection_status.RECEIVED_TRANSACTION_SET。Master...
2019-08-03 12:32:18
160
转载 说GTID - 清除GTID的执行历史
RESET MASTER可以用来清除GTID的执行历史。如果想将一个执行过本地事务的节点,加入到Group Replication中,就要执行下RESET MASTER。执行RESET MASTER会带来以下一系列影响:·全局系统变量gtid_purged会被置空。·全局系统变量gtid_executed会被置空。·系统表mysql.gtid_executed会被清空。·若启...
2019-07-30 00:22:05
749
转载 说GTID - 与GTID相关的系统变量
gtid_next默认事务提交时,MySQL会为其生成一个GTID。当事务在Slave节点上回放时,使用的却是该事务在Master节点上产生的GTID,究其缘由和一个会话级系统变量gtid_next有关。若gtid_next的值为AUTOMATIC(其默认值),当启用二进制日志,无论在Slave节点还是Master节点上,事务提交都会产生新的GTID。但若将gtid_next...
2019-07-28 22:54:08
119
转载 说GTID - GTID的生命周期
1.事务提交时会获取到一个GTID,该GTID将位于事务前面一同被记录到二进制日志中。若事务不被记录到二进制日志中,它也不会获取到GTID。2.事务的GTID会以Gtid_log_event的形式记录到二进制日志,当二进制日志轮换或实例关闭时,MySQL会将所有已写入二进制日志的事务的GTID刷新到系统表mysql.gtid_executed。3.事务提交后,极短时间内其GT...
2019-07-28 00:22:26
142
转载 说GTID - GTID的组成和存储
GTID是什么GTID(Global Transaction Identifier)是事务在第一次提交时获取到的唯一标识,该标识在整个的复制拓扑中具有唯一性。GTID组成GTID = source_id:transaction_id(c4e5d4a0-a9be-11e9-b444-080027f22add:7)直观看,GTID有两部分组成,source_id和transact...
2019-07-21 19:58:12
467
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人