GaussDB(for MySQL)一致性级别

GaussDB(for MySQL)约束限制

GaussDB(for MySQL)一致性级别需要数据库内核小版本为8.0.22.28.1及以上。

开启会话一致性还需您的数据库代理引擎版本为2.7.4.0及以上。

开启全局一致性还需您的数据库代理引擎版本为2.23.02.000及以上。

GaussDB(for MySQL)最终一致性

GaussDB(for MySQL)实例开启数据库代理后,同一会话内,连续多次SELECT请求会根据权重配比,路由到不同的数据库节点,由于主节点与读节点之前存在复制时延,并且各个读节点的复制时延大小不一定完全相同,可能会导致每次SELECT请求得到的结果存在差异,因此默认情况下,数据库代理只能保证数据的最终一致。

GaussDB(for MySQL)会话一致性

由于GaussDB(for MySQL)最终一致性可能会导致多次SELECT请求的结果存在差异,数据库代理进一步提供了会话级别的数据一致性,保证了在同一会话内,每次SELECT请求都可以获取到上一次写入操作后,数据库的最新数据。

GaussDB(for MySQL)数据库代理会记录每个数据节点的日志序号(Log Sequence Number,简称LSN),同时针对每一个会话也会维护对应的LSN,即Session LSN。当某个会话有数据更新操作执行完毕时,数据库代理会根据当时主节点的LSN来更新对应的Session LSN,后续有读请求来的时候,数据库代理会比较Session LSN以及各个数据节点的LSN,将请求发往LSN大于或等于Session LSN的数据节点,从而保证当前会话内,SELECT请求总能获取到上一次更新操作后的最新数据。


说明:GaussDB(for MySQL)开启会话一致性后,如果主节点与读节点复制时延较大,各个读节点LSN均小于Session LSN,会导致SELECT请求发送到主节点,从而增大主节点的压力,整个数据库集群的读写性能会有一定的降低。

GaussDB(for MySQL)全局一致性

GaussDB(for MySQL)数据库代理提供了全局级别的数据一致性,保证在不同会话内,数据一致,即写入数据后,立即执行查询类操作,能够准确查到修改后的数据。

适用场景:建议在业务读多写少的场景下选择全局一致性。

GaussDB(for MySQL)全局一致性提供以下两个参数:

参数
说明

ConsistTimeout

GaussDB(for MySQL)全局一致性读超时时间,即允许用于只读节点的LSN更新至主节点最新LSN的时间。若超出该时间,数据库代理将根据ConsistTimeoutPolicy参数设置的策略进行对应操作。

取值范围:0~300000,默认值为30,单位为毫秒。

ConsistTimeoutPolicy

GaussDB(for MySQL)全局一致性读超时策略,若未能在参数ConsistTimeout设置的时间内将只读节点的LSN更新至主节点最新LSN,数据库代理将根据ConsistTimeoutPolicy参数设置进行对应操作。

取值范围如下:

lrouteMaster:将读请求发往主节点(默认)。

lretry:代理返回一个错误报文wait replication complete timeout, please retry给应用端。

说明:如需修改表中的参数,需要联系华为云客服人员申请权限。

使用GaussDB(for MySQL)全局一致性的时候数据库会向主库进行探活,并且探活会给主库增加一定的压力。

开启GaussDB(for MySQL)全局一致性时,会增加整体业务的SQL平均响应时延,同时主节点的压力也会增大;当主从延迟较高时,可能会导致应用卡顿,根据ConsistTimeoutPolicy参数设置的策略,可能更多的请求被路由到主节点,造成主节点压力进一步增大,业务延迟也可能增加。

如果在使用GaussDB(for MySQL)全局一致性过程中遇到“Failed to obtain the LSN from the master node.....”报错信息,可能是由于数据库主节点压力过大,导致获取LSN失败,请联系技术支持协助。

GaussDB(for MySQL)事务拆分功能

GaussDB(for MySQL)事务拆分操作背景

默认情况下,云数据库GaussDB(for MySQL)数据库代理会将事务内的所有请求都发送到主节点以保障事务的正确性,但是某些框架会将所有请求封装到非自动提交的事务中(通过set autocommit=0;关闭自动提交),导致主节点负载过大。

GaussDB(for MySQL)事务拆分使用限制

设置事务拆分需要满足数据库代理引擎版本为2.3.9.5及以上。

在默认的REPEATABLE_READ隔离级别下,云数据库GaussDB(for MySQL)不支持事务拆分功能。

仅READ-UNCOMMITTED和READ-COMMITTED级别允许事务拆分,请修改事务隔离级别。

仅读写模式支持事务拆分功能。

GaussDB(for MySQL)事务拆分功能描述

GaussDB(for MySQL)数据库代理提供事务拆分的功能,能够将事务内写操作之前的读请求转发到只读节点,降低主节点负载。

事务拆分功能默认关闭。

开启事务拆分后,当云数据库GaussDB(for MySQL)关闭自动提交后,仅会在发生写操作时才正式开启事务,正式开启事务前的读请求会通过负载均衡模块分流至只读节点。

GaussDB(for MySQL)事务拆分注意事项

当 GaussDB(for MySQL)事务拆分功能开启后,仅支持将事务隔离级别修改为READ-UNCOMMITTED或READ-COMMITTED,若需要将事务隔离级别修改至更高的级别,需要关闭事务拆分功能。

GaussDB(for MySQL)事务拆分操作步骤

步骤 1登录管理控制台

步骤 2单击管理控制台左上角的,选择区域和项目。

步骤 3在页面左上角单击,选择“数据库 > 云数据库 GaussDB(for MySQL)”。

步骤 4在“实例管理”页面,选择目标实例,单击实例名称,进入实例基本信息页面。

步骤 5在左侧导航栏,单击“数据库代理”。

步骤 6在“数据库代理”页面,单击“事务拆分”后的。

步骤 7在弹框中单击“确认”,开启事务拆分。

----结束

说明:开通或关闭事务拆分后仅对新连接生效。

GaussDB(for MySQL)访问控制

操作背景

GaussDB(for MySQL)事务拆分数据库代理实例开启了负载均衡,数据库代理实例的安全组不生效,默认不限制连接数据库代理的源IP地址,需通过访问控制功能限制源IP地址。

如果管理控制台上没有显示开启访问控制功能的按钮,说明数据库代理实例安全组会生效,不需要使用访问控制功能。

GaussDB(for MySQL)数据库开启访问控制

步骤 1 登录管理控制台

步骤 2 单击管理控制台左上角的,选择区域和项目。

步骤 3 在页面左上角单击,选择“数据库 > 云数据库 GaussDB(for MySQL)”。

步骤 4 在“实例管理”页面,选择指定的实例,单击实例名称,进入实例的“基本信息”页面。

步骤 5 在“数据库代理”页面,选择目标代理实例,单击“访问控制”处的,开启访问控制。

步骤 6 单击“设置”,弹框中设置访问控制方式和IP地址。

访问控制方式:仅支持设置黑名单或白名单的其中一种,切换后原设置失效,黑名单内的地址禁止访问,请谨慎操作。

IP地址或网段:输入符合规范的IP地址或网段,具体要求如下:

−每行一个IP地址或网段,以回车结束。

−每个IP地址或网段都可以用“|”分隔添加备注,如“192.168.10.10丨GaussDB01”,备注长度范围是0到50字符,不能包含<>。

−最多可添加300个IP地址或网段。

----结束

GaussDB(for MySQL)数据库关闭访问控制

步骤 1 登录管理控制台。

步骤 2 单击管理控制台左上角的,选择区域和项目。

步骤 3 在页面左上角单击,选择“数据库 > 云数据库 GaussDB(for MySQL)”。

步骤 4 在“实例管理”页面,选择指定的实例,单击实例名称。

步骤 5 在“数据库代理”页面,选择目标代理实例,单击“访问控制”处的。

步骤 6 弹框中单击“是”,关闭访问控制。

----结束

专题内容推荐

活动规则

活动对象:华为云电销客户及渠道伙伴客户可参与消费满送活动,其他客户参与前请咨询客户经理

活动时间: 2020年8月12日-2020年9月11日

活动期间,华为云用户通过活动页面购买云服务,或使用上云礼包优惠券在华为云官网新购云服务,累计新购实付付费金额达到一定额度,可兑换相应的实物礼品。活动优惠券可在本活动页面中“上云礼包”等方式获取,在华为云官网直接购买(未使用年中云钜惠活动优惠券)或参与其他活动的订单付费金额不计入统计范围内;