修改GaussDB(for MySQL)代理的一致性级别
云数据库 GaussDB(for MySQL)支持在创建数据库代理时设置一致性级别,具体请参见开通数据库代理。也支持数据库代理创建成功后修改一致性级别。
本章节主要介绍数据库代理创建成功后修改一致性级别的方法。
一致性级别介绍
云数据库 GaussDB(for MySQL)提供了以下几种一致性级别,可以满足不同场景对一致性的要求。
- 最终一致性(默认)
开启数据库代理后,同一会话内,连续多次SELECT请求会根据权重配比,路由到不同的数据库节点,由于主节点与读节点之前存在复制时延,并且各个读节点的复制时延大小不一定完全相同,可能会导致每次SELECT请求得到的结果存在差异,因此默认情况下,数据库代理只能保证数据的最终一致。
- 会话一致性
由于最终一致性可能会导致多次SELECT请求的结果存在差异,数据库代理进一步提供了会话级别的数据一致性,保证了在同一会话内,每次SELECT请求都可以获取到上一次写入操作后的最新数据。
数据库代理会记录每个数据节点的日志序号(Log Sequence Number,简称LSN),同时针对每一个会话也会维护对应的LSN,即Session LSN。当某个会话有数据更新操作执行完成时,数据库代理会根据当时主节点的LSN来更新对应的Session LSN,后续有读请求进来时,数据库代理会比较Session LSN以及各个数据节点的LSN,将请求发往LSN大于或等于Session LSN的数据节点,从而保证当前会话内,SELECT请求总能获取到上一次更新操作后的最新数据。
图1 会话一致性实现原理
开启会话一致性后,如果主节点与读节点复制时延较大,各个读节点LSN均小于Session LSN,会导致SELECT请求发送到主节点,从而增大主节点的压力,整个数据库集群的读写性能会有一定的降低。
使用须知
- 会话一致性级别需要GaussDB(for MySQL)实例内核版本为2.0.54.1及以上,还需要数据库代理内核版本为2.7.4.0及以上。
操作步骤
- 登录管理控制台。
- 单击管理控制台左上角的,选择区域和项目。
- 在页面左上角单击,选择 。
- 在“实例管理”页面,选择目标实例,单击实例名称,进入实例概览页面。
- 在左侧导航栏,单击“数据库代理”,进入数据库代理页面。
- 单击目标代理实例名称,在“实例信息”模块的“一致性级别”处,单击按钮。
图2 修改一致性级别
- 选择对应的一致性级别,单击。
修改一致性级别后,需要您在管理控制台上手动重启数据库代理或与数据库代理重新建立连接。
重启数据库代理实例请参见重启GaussDB(for MySQL)代理。