MGR使用限制
仅支持innodb存储引擎
mysql> create table tb_myisam(id int, name varchar(50), primary key(id)) engine=myisam;
Query OK, 0 rows affected (0.05 sec)
mysql> insert into tb_myisam select 1, '1';
ERROR 3098 (HY000): The table does not comply with the requirements by an external plugin.
复制
表必须有主键,或者非Null的唯一键
# 创建没有主键的表,写入数据失败
mysql> create table tb_no_primary_key(name varchar(50));
Query OK, 0 rows affected (0.15 sec)
mysql> insert into tb_no_primary_key select '1';
ERROR 3098 (HY000): The table does not comply with the requirements by an external plugin.
# 创建Null唯一索引的表,写入数据失败
mysql> create table tb_null_unique_key(name varchar(50), unique key(name));
Query OK, 0 rows affected (0.09 sec)
mysql> insert into tb_null_unique_key select '1';
ERROR 3098 (HY000): The table does not comply with the requirements by an external plugin.
# 创建非Null唯一索引的表,写入数据成功
mysql> create table tb_no_null_unique_key(name varchar(50) not null, unique key(name));
Query OK, 0 rows affected (0.04 sec)
mysql> insert into tb_no_null_unique_key select '1';
Query OK, 1 row affected (0.06 sec)
Records: 1 Duplicates: 0 Warnings: 0
复制
复制
网络限制
MGR忽略表锁和命名锁
MGR多主模式中限制
默认不支持 SERIALIZABLE 隔离级别。
对同一个对象进行并发的有冲突的ddl和dml操作导致这种冲突在部分成员节点中无法检测到,最终可能导致数据不一致。
多主模式下,不支持级联约束的外键,可能造成有冲突的操作无法检测。
多主模式下可能导致死锁,比如select ...for update在不同节点执行,由于多节点锁无法共享,很容易导致死锁。
不支持超大事务。
不支持复制过滤,如果有节点设置了复制过滤,将影响节点间决议的达成。
MGR最多支持9个节点,大于9个节点,将拒绝新节点的加入。
节点配置要求
log_bin
log_slave_updates
binlog_format=ROW
gtid_mode=ON
master_info_repository=TABLE
relay_log_info_repository=TABLE
transaction_write_set_extraction=XXHASH64
# 并行复制
slave_parallel_type=LOGICAL_CLOCK
slave_preserve_commit_order=1
slave_parallel_workers=[N]
binlog_checksum=NONE
#官方推荐在MGR中隔离级别设置为RC
transaction_isolation=READ-COMMITTED
复制
MGR冲突检测
MGR新节点加入过程
第一阶段,新节点会从组内online的节点中选择一个作为贡献者(donor),通过标准的异步复制通道,拉取贡献者的binlog,并应用这些binlog。与此同时,新节点也会获取当前组内正在交换的事务信息,并将其缓存到队列中,当binlog应用完成,也就是应用到View_change事件处,异步复制通道关闭,进入第二阶段。
第二阶段,新节点处理缓存在队列中的组内事务信息,当队列中的事务信息处理完成,即缓存队列长度为0时,新节点在组内状态变为online。
复制
文章转载自潍鲸,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。
评论
相关阅读
【MySQL 30周年庆】MySQL 8.0 OCP考试限时免费!教你免费领考券
墨天轮小教习
2093次阅读
2025-04-25 18:53:11
MySQL 30 周年庆!MySQL 8.4 认证免费考!这次是认真的。。。
严少安
729次阅读
2025-04-25 15:30:58
【活动】分享你的压箱底干货文档,三篇解锁进阶奖励!
墨天轮编辑部
419次阅读
2025-04-17 17:02:24
MySQL 9.3 正式 GA,我却大失所望,新特性亮点与隐忧并存?
JiekeXu
385次阅读
2025-04-15 23:49:58
3月“墨力原创作者计划”获奖名单公布
墨天轮编辑部
358次阅读
2025-04-15 14:48:05
openHalo问世,全球首款基于PostgreSQL兼容MySQL协议的国产开源数据库
严少安
337次阅读
2025-04-07 12:14:29
记录MySQL数据库的一些奇怪的迁移需求!
陈举超
230次阅读
2025-04-15 15:27:53
MySQL 8.4 新特性深度解析:功能增强、废弃项与移除项全指南
JiekeXu
180次阅读
2025-04-18 20:21:32
GreatSQL 新版发布:MySQL 牵手“鸭子”
严少安
138次阅读
2025-04-19 14:57:56
MySQL8.0窗口函数实验
一名数据库小白的成长笔记
107次阅读
2025-04-08 17:16:54