操作场景
云数据库 MySQL 支持用户创建一个或多个只读实例,以支持用户的读写分离和一主多从应用场景,可显著提高用户数据库的读负载能力。
目前已支持数据库代理,创建只读实例后,可以购买数据库代理并开启读写分离功能,在应用程序中配置数据库代理地址,就可以使写请求自动转发到主实例,读请求自动转发到各个只读实例。
基本概念
RO 组:带有负载均衡功能的只读实例组。若 RO 组内有多个只读实例,可将用户读请求量均匀分配到组内的每个只读实例上。且 RO 组会对外提供 IP、PORT 供访问数据库。
只读实例:可以支持读请求的单节点(无从机)实例。只读实例无法单独存在,每个只读实例都属于某个 RO 组。
基础架构
只读实例采用 MySQL binlog 主从同步功能,将主实例(源数据库)的更改同步到所有只读实例中。只读实例均采用单节点(不含备机)架构,若只读实例宕机,我们将不断的尝试恢复,若需要更高的可用性,您可以选择 RO 组。
注意:
RO 组中只有一个只读实例的情况会存在单点风险,且此 RO 组不会计入云数据库 MySQL 服务的整体可用性计算中,单个只读实例不提供可用性 SLA 保证,建议 RO 组中至少选购2个只读实例,来保证 RO 组的可用性。
功能限制
同一个 RO 组内的实例类型需保持一致,不能既有通用型实例,又有独享型实例。
单节点云盘版实例不支持创建只读实例。
仅支持1GB内存、50GB硬盘及以上规格,且 MySQL 5.6 及以上版本、InnoDB 引擎的双节点、三节点、集群版主实例购买只读实例,若主实例低于此规格,请先升级主实例规格。
只读实例最低规格要求为1GB内存、50GB硬盘,且必须大于或等于主实例已购存储规格。
一个双节点、三节点主实例最多可以创建5个只读实例,一个集群版实例最多可以创建15个只读实例。
不支持备份以及回档功能。
不支持数据迁移至只读实例。
不支持创建/删除数据库,不支持 phpMyAdmin(PMA)。
不支持创建/删除账号,不支持为账号授权以及修改账号及密码。
注意事项
只读实例无需维护账号与数据库,均从主实例同步。
若 MySQL 版本为 5.6 但未开启 GTID,可通过控制台开启 GTID,再添加只读实例。
开启 GTID 过程耗时较长,且实例将会有几秒钟的闪断,建议在业务低谷期操作,并在访问数据库的程序中添加重连机制。
只读实例仅支持 InnoDB 引擎。
由于数据同步有延迟,多个只读实例之间可能存在少量数据不一致的情况。各只读实例与主实例之间的同步时延可在控制台查看。
只读实例的实例规格可以与主实例不一致,方便用户根据负载情况升级。建议同一 RO 组内的只读实例的实例规格保持一致。
操作步骤
1. 登录 MySQL 控制台,在实例列表,单击实例 ID 或操作列的管理,进入实例详情页。
2. 在实例详情页,单击实例架构图中的添加只读实例(集群版为新增独立只读实例),或在只读实例页,单击新建,进入购买页。
3. 在购买页,选择只读实例的相应配置,确认无误后,单击立即购买。
参数 | 说明 |
指定 RO 组 | 支持系统自动分配、新建 RO 组、已有 RO 组。 系统自动分配:若一次购买多个实例,将为每个实例分配一个独立的 RO 组,权重分配方式默认为系统自动分配。 新建 RO 组:新建一个 RO 组,若一次购买多个实例,将都分配至这个 RO 组,权重分配方式默认为系统自动分配。 已有 RO 组:指定一个已有 RO 组,若一次购买多个实例,将都分配至这个 RO 组。权重分配方式与 RO 组设置相同:如果 RO 组设置为系统自动分配,则根据购买规格自动添加 RO 组;如果为自定义分配,则默认权重为零。由于同一 RO 组内网地址相同,因此若是 VPC 网络将共享同一个安全组设置。若选择已有 RO 组,则在购买时无法再自定义安全组。 |
设置 RO 组名称 | 选择新建 RO 组时需设置新 RO 组的名称,支持长度小于60的中文/英文/数字/"-"/"_"/"." |
延迟超限剔除 | 选择是否启用剔除策略。若启用,则需设置延迟阈值和最小保留实例数,被剔除的实例权重自动设置为0。 若只读实例延迟超过阈值被剔除,会向用户发出告警(配置只读实例剔除告警和接收对象请参见 告警功能),且实例状态为停服同步中、权重为0,当只读实例延迟时间小于阈值时会重新加入到 RO 组。同时,不管实例是否启用延时超限剔除功能,当只读实例故障被剔除后,待实例修复也会重新加入到 RO 组。 |
计费模式 | 支持包年包月和按量计费。 |
可用区 | 新建 RO 组时,支持选择与主实例同可用区或跨可用区。不同可用区之间没有实质性区别,选择创建跨可用区 RO 组将提升数据容灾能力,但存在几毫秒的网络延迟。 |
4. 购买完成后,返回实例列表,待实例状态变为运行中,即可正常使用。
热点问题
只读实例剔除规则是什么?
启用延迟超限剔除后,RO 组会根据延迟阈值和最少保留实例数来判断剔除实例,被剔除的实例权重自动设置为0。若只读实例延迟超过阈值被剔除会向用户发出告警,且实例状态为停服同步中、权重为0,当只读实例延迟时间小于阈值时会重新加入到 RO 组。
延迟阈值:为只读实例设置延迟超限阈值,超过阈值的只读实例会被剔除 RO 组。
最少保留实例数:组内需要保证的实例下限数,若现有只读实例数小于等于此下限且延迟时间超过阈值,现有只读实例均不被剔除。
若只读实例销毁/退货,对主实例有什么影响?
只读实例销毁/退货,对主实例没有影响。
创建只读实例时,为什么无法选择某个可用区?
无法选择某个可用区,表示该可用区暂无资源,您可以根据实际购买页面选择其他可用区,不影响您使用只读实例。
创建只读实例时,是否可以选择和主实例分布在不同的可用区?
可以。创建只读实例,选择新建 RO 组时,支持选择和主实例不同的可用区,但如果创建只读实例时选择已有 RO 组,则该只读实例的可用区只能与所选的已有 RO 组所在可用区保持一致,不一定和主实例分布在同一可用区。