gtid 事务 可以使用gtid 或者文件名,位置来寻找
匿名事务没有分配 GTID,MySQL确保每个匿名事务都以Anonymous_gtid_log_event ,匿名事务只能使用文件名和位置来处理
gtid_mode 变量值 off / off_permissive / on permissive / on
on : 无法复制匿名事务 ; off 无法复制gtid 事务 ; off_permissive, 新的事务是 Anonymous_gtid_log_event 但允许gtid,和Anonymous
on_permissive 新的事务是gtid, 但新的复制允许同时使用gtid和匿名事务 。
副本与源的gtid_mode模式不能是 ON/OFF的关系 。否则将无法进行复制。
且gtid_mode 与gtid_next 变量不能是不兼容的组合 (gtid_mide=on gtid_next =ANONYMOUS 不兼容 开启binlog情况下 。 )
启动gtid :
1 在每台服务器上 执行 set @@global.enforce_gtid_consistency=WARN ; 检查事务是否违反gtid的一致性
2 直到第一步 不在报告警告 后每台服务器执行 set @@global.enforce_gtid_consistency = on
3 每台服务器执行 set @@global.gtid_mode= off_permissive ;
4 每台服务器执行 set @@global.gtid_mode= on permissive ;
5 在每台服务器上 等待状态变量 show status like ‘ONGOING_ANONYMOUS_TRANSACTION_COUNT’ 为零 检查是否还有匿名事务
6 flush logs 在每台服务器上执行 set @@global.gtid_mode=on ;
7 可选择将 变量 enforce_gtid_consistency = on ,gtid_mode=on 添加到配置文件 内。
8 启动slave CHANGE MASTER TO MASTER_AUTO_POSITION = 1 [FOR CHANNEL ‘channel’];START SLAVE [FOR CHANNEL ‘channel’];
验证匿名事务的复制
SELECT MASTER_POS_WAIT(file, position);
配置多源复制 : FOR CHANNEL “source_2”
启动多源复制 START SLAVE FOR CHANNEL “source_1”;mysql> START SLAVE FOR CHANNEL “source_2”
关闭多源复制 STOP SLAVE FOR CHANNEL “source_1”;
是 重置复制 reset slave for channel
监控多源复制
1 使用性能架构表监控复制关系 performance_schema.replication_connection_status 表
可参考更多性能模式复制表
复制 和二进制日志选项和变量
serverid : 于在复制拓扑中使用的服务器,您必须为每个复制服务器指定一个唯一的服务器 ID,范围从 1 到 2 - 1
server_uuid:mysql服务器生成的一个真正的UUID 全局只读变量 。 MySQL服务器在启动时自动获取UUID, 尝试获取、data/auto.cnf文件内的uuid .
如果文件未找到,则mysql会生成一个新的uuid 并将其保存在文件中,必要时会创建文件 。
auto.cnf 类似于my.cnf 但期内只包含server_uuid这个一个系统变量
使用mysql复制时 源和副本都彼此知道UUID ,可通过 shwo replicats (mysql8.0.20) show slave hosts 查看
auto increment_increment 和 auto_incemenet_offset 影响auto_incremen列的行为 。
半同步复制相关:需提前安装半同步插件
—rpl-semi-sync-master-enabled[={OFF|ON}] 控制是否启用半同步复制
rpl_semi_sync_master_timeout
rpl_semi_sync_master_trace_level 源上半同步复制跟踪级别
rpl_semi_sync_master_wait_for_slave_count 源在继续之前每个事务必须接收到副本确认数
rpl_semi_sync_master_wait_no_slave 控制源是否等待由配置 参数 时间
rpl_semi_sync_master_wait_point 此变量控制半同步复制源服务器在向提交事务的客户端返回状态之前等待事务接收的副本确认的时间点
rpl_semi_sync_slave_enabled
rpl_semi_sync_slave_trace_level
副本服务器选项,系统变量 。
master_info_file ,
master-retry-count : 副本放弃之前尝试重新连接到源次数
max-relay-log-size 副本一个中继日志的大小
relay-log-purge 副本一旦不需要中继日志即立即清除他们
relay-log-space-limit 副本上所有中继日志的总大小
—skip-replica-satrt/skip-slave-start 副本服务器启动时不启动 slave
slave-skip-errors 副本发送错误时的 错误处理 如 忽略错误 —slave-skip-errors=1062,1053
常见的复制管理
1 检查复制状态
show slave status\G 以及 perofrmance_schema 相关复制表