
接着上次问题,MGR 有那些要求及限制。现在来理一理
要求:
1.InnoDB 存储引擎
InnoDB 提供了一些附加功能,可以在与组复制一起操作时更好地管理和处理冲突。
使用其他存储引擎,包括临时 MEMORY 存储引擎,可能会导致组复制中的错误。
建议:
disabled_storage_engines="MyISAM,BLACKHOLE,FEDERATED,ARCHIVE,MEMO
RY"
2.主键
组复制必须有主键,或者至少一列非空唯一列(等效主键),组复制具有其自己的内置的主键
或主键等效项检查集,并且不使用 sql_require_primary_key 系统变量执行的检查 。
3.网络性能
组复制服务器实例位于同一位置并共享本地组通信引擎(XCom)实例,所有组成员之间必须
始终保持双向通信。
如果针对服务器实例阻止了入站或出站通信(例如,通过防火墙或由于连接问题),则该成员
无法在该组中运行,并且该组成员(包括有问题的成员)可能无法报告受影响的服务器实例的
正确成员状态。
4.数据库配置
--log-bin[=log_file_name] binlog 必须打开并且 binlog_format 必须设置为 ROW 模式
--log-slave-updates=ON 组成员需要记录加入时从主库接收并通过复制应用程序应用的事务,
并记录他们从组中接收并应用的所有事务。
这使组复制能够通过从现有组成员的二进制日志进行状态来执行恢复。
--binlog-checksum=NONE 关闭二进制日志校验和(适用于 MySQL 8.0.20)组复制无法使
用校验和,并且不支持二进制日志中的校验和。
从 MySQL 8.0.21 开始,组复制支持校验和,因此组成员可以使用默认设置
binlog_checksum=CRC32。
gtid_mode=ON 全局事务标识符打开
master_info_repository=TABLE
relay_log_info_repository=TABLE
复制应用程序需要将复制元数据写入 mysql.slave_master_info 和
mysql.slave_relay_log_info 表,
不建议使用 File
--lower-case-table-names 小写表格名称。 在所有组成员上 设置 为相同的值
slave_parallel_workers=16 在成员上启用多线程应用程序,并且最多可以指定 1024 个并行
应用程序线程
slave_parallel_type=LOGICAL_CLOCK
评论