本文为您介绍如何通过 MySQL 控制台设置只读实例延迟复制和启动/停止复制。您可通过设置延迟复制(即只读实例与主实例间的延迟)以及在延迟期间选择启动恢复到指定时间或 GTID(全局事务标识),来实现高效回档数据和故障快速回溯。
延迟复制:支持用户通过只读实例 RO 组配置或只读实例管理页开启和设置只读实例与主实例间的延迟复制时间。
启动/停止复制:支持用户手动启动或停止只读实例与主实例间的数据同步。
延迟复制说明
只读实例开启延时复制后,只读实例会被剔除出只读组且权重设置为0,同时触发只读实例被剔除的告警。此时使用只读组 VIP 地址访问时,流量不会转发到被剔除的只读实例上,仅能使用只读实例的 VIP 地址进行访问。
若只读组开启了延迟剔除功能,当只读实例关闭延时复制后,仅只读实例的延迟时间小于只读组的延迟阈值时,才会恢复只读实例的权重,权重恢复的同时,会触发只读实例剔除恢复的告警。
启动数据复制至指定位置期间,不能同时进行重启、调整配置、版本升级、升级内核小版本操作。
开启延迟复制
说明:
只读实例“延迟复制”默认为“不开启”,开启后会显示延迟复制时间。
通过只读实例 RO 组配置开启
1. 登录 MySQL 控制台,在实例列表,单击主实例 ID,进入实例管理页。
2. 在实例管理页面,选择只读实例页,在 RO 组列单击配置,进入 RO 组配置页。
3. 在 RO 组配置页,配置 RO 组信息里开启实例延迟复制,设置延迟时间,单击确定。
实例延迟复制:可通过设置延迟复制以及在延迟期间选择启动恢复到指定时间或 GTID(全局事务标识),来实现高效回档数据和故障快速回溯。
延迟时间:只读实例与主实例间的延迟复制时间,可设置范围:1秒 - 259200秒。
实例延迟超限剔除:指在实例的主从复制过程中,当从库无法及时获取主库的更新内容,并且延迟的时间超过预设的时间阈值时,会自动断开与主库的连接并将从库剔除出复制链路,以保障复制链路的可用性和性能。设置是否启动剔除策略。被剔除的实例权重会自动设置为0。若只读实例延迟超过阈值被剔除会向用户发出告警,配置只读实例剔除告警和接收对象请参见 告警功能。
延迟阈值:为只读实例设置延迟超限阈值,超过阈值的只读实例会被剔除 RO 组。
最少保留实例数:组内需要保证的实例下限数,若现有只读实例数小于等于此下限且延迟时间超过阈值,现有只读实例均不被剔除。
读权重分配:RO 组支持系统自动分配权重和自定义权重两种权重设置方式。权重输入范围为0 - 100,且必须是整数。
重新均衡负载:
关闭重新均衡负载时,修改权重时仅对新增负载生效,不改变原长连接所访问的只读实例,不会引起数据库闪断。
开启重新均衡负载时,数据库会有秒级闪断来断开所有连接,新增连接将按照设置的权重均衡负载。
通过只读实例管理页开启
1. 登录 MySQL 控制台,在实例列表,单击只读实例 ID 或操作列的管理,进入只读实例详情页。
2. 在只读实例详情页的部署信息 > 延迟复制处,单击开启。
3. 在弹出的对话框,设置延迟时间后,单击确定。
说明:
延迟时间范围值为:1秒 - 259200秒。
修改 RO 实例延迟时间会同步修改所属 RO 组中其他 RO 实例。
修改延迟复制
通过只读实例 RO 组配置修改
1. 登录 MySQL 控制台,在实例列表,单击主实例 ID,进入实例管理页。
2. 在实例管理页面,选择只读实例页,在 RO 组列单击配置,进入 RO 组配置页。
3. 在 RO 组配置页,修改延迟时间,单击确定。
通过只读实例管理页修改
1. 登录 MySQL 控制台,在实例列表,单击只读实例 ID,进入只读实例详情页。
2. 在只读实例详情页的部署信息 > 延迟复制处,单击修改。
3. 在弹出的对话框,设置延迟时间后,单击确定。
关闭延迟复制
通过只读实例 RO 组配置关闭
1. 登录 MySQL 控制台,在实例列表,单击主实例 ID,进入实例管理页。
2. 在实例管理页面,选择只读实例页,在 RO 组列单击配置,进入 RO 组配置页。
3. 在 RO 组配置页,单击关闭延迟复制,单击确定。
通过只读实例管理页关闭
1. 登录 MySQL 控制台,在实例列表,单击只读实例 ID,进入只读实例详情页。
2. 在只读实例详情页的部署信息 > 延迟复制处,单击关闭。
3. 在弹出的对话框,确认无误后,单击确定。
说明:
关闭延迟复制,则延迟复制时间将为0秒,即只读实例与主实例之间将恢复数据的实时同步。
启动数据复制
说明:
只读实例复制状态默认为正常,若用户设置了延迟复制,且在延迟复制的时间段内误删除数据,可通过误操作时的位置与 GTID,将只读实例复制到二进制日志文件位置或 GTID 之前,进而实现快速恢复数据的功能。
1. 登录 MySQL 控制台,在实例列表,单击只读实例 ID,进入只读实例详情页。
2. 在只读实例详情页下方的部署信息 > 复制状态处,单击启动。
3. 在弹出的对话框,单击确定。
说明:
启动复制后,只读实例恢复与主实例的数据同步。
4. 也可在部署信息 > 复制操作选择复制到指定位置,支持启动到具体时间点和对应 GTID,恢复到具体时间点或对应 GTID 后,只读实例后续将会停止复制直至切换为正常启动方式,才会继续进行复制。
时间:可选时间范围为停止复制时间到主库当前时间的时间段。
GTID:可选范围为只读实例未完成应用的二进制日志之后的所有日志。启动方式选择 GTID 时,可精确到具体事务之前停止复制。
实例 server_uuid 长度是规定的且均为36位,GTID 格式须为
server_uuid:transaction_id
。注意
若输入的二进制日志位置已在只读实例应用或者大于主实例的位点,会导致启动复制失败。
启动复制时,若有二进制日志存在断点,会导致启动复制失败。
避免因延迟只读实例停止复制过程,导致只读实例磁盘空间超用,只读实例磁盘容量小于5GB时,暂停只读实例的 IO 线程。
5. 复制到指定位置过程中,可单击复制状态后的数据回放中查询任务详情,支持刷新任务详情。
6. 复制完成后,在复制状态后单击启动,只读实例即可继续进行复制。
停止数据复制
说明:
仅开启了延迟复制功能,才允许操作停止复制功能,反之则停止按钮为不可用状态。
停止复制后同时停止 IO/SQL 线程。
1. 登录 MySQL 控制台,在实例列表,单击只读实例 ID,进入只读实例详情页。
2. 在只读实例详情页下方的部署信息 > 复制状态处,单击停止。
3. 在弹出的对话框,确认无误后,单击确定。
热点问题
如何获取 GTID?
建议您通过执行 flush log 命令获取 binlog 文件,来定位误操作时的位置和 GTID。