AntDB 企业增强特性介绍——读写分离

面对日益增加的系统访问量,读写分离可以充分利用备机资源,有效地提升数据库的吞吐量。过去常用的手段是通过应用层来控制数据库的读写流量。

AntDB 通过在 Coordinator 组件的 SQL 解析路由层增加对读写流量的精确访问控制且对应用透明,做到强一致性的数据访问体验。

针对写少读多、数据实时性要求不那么高的分析业务场景,可以通过读写分离有效地提升主从机器资源的使用率,如图 3-26 所示。

AntDB 企业增强特性介绍——读写分离_第1张图片

下面描述如何使用读写分离特性以及使用注意事项。

用户连接 Coordinator,执行 SQL 语句,最终数据的修改和查询都会访问Datanode。一般情况下,Datanode 有同步或者异步备节点。如果是同步备节点, 则数据与主节点实时一致,因此备节点可以提供数据查询的功能。但是当主节点正常工作时,备节点只提供数据备份的功能,造成资源的浪费。
AntDB 从内核层面实现了读写分离,打开读写分离的开关,就可以实现, 执行读操作访问备节点,写操作访问主节点,对应用层完全透明,有效提升主从机器资源的使用率,增加数据库的吞吐量。

1)读写分离控制参数
读写分离涉及的开关有两个,在 adbmgr 上通过设置参数开启读写分离功能。
有同步节点的情况下:
set coordinator all(enable_readsql_on_slave = on):
没有同步节点,只有异步节点,并希望异步节点提供读的功能的情况下:
set coordinator all(enable_readsql_on_slave = on);
set coordinator all(enable_readsql_on_slave_async = on);

■enable_readsql_on_slave:读写分离总开关。
enable_readsql_on_slave_async:允许异步节点提供读的功能开关。

2)检测读写分离功能
读写分离启动之前,pgxc_node 表中的信息如下:

AntDB 企业增强特性介绍——读写分离_第2张图片

没有 slave 节点信息,所以读操作发送到 master 节点上:

AntDB 企业增强特性介绍——读写分离_第3张图片

其中,dn2_1 为 master 节点。
读写分离启用后,在 coord 的 pgxc_node 表中,会有 slave 节点信息:

AntDB 企业增强特性介绍——读写分离_第4张图片

上述结果中,E 类型的节点即是 slave 节点。读操作发送到 slave 节点上:

AntDB 企业增强特性介绍——读写分离_第5张图片

其中,dn2_2 为 slave 节点。

3)注意事项
某些场景下,开启读写分离且 master 流复制为同步时,在 master 节点上执行 DML 操作立即查询时,发现查不到对应的数据。原因是 master 节点上的DML 操作在 slave 节点上没 apply,导致发送到 slave 节点的查询操作读不到最新的数据。如果想避免这种情况,可以设置 Datanode 的 synchronous_commit
参数为 remote_apply,确保 master 的操作在 slave 上,apply 之后才给客户端返回消息。

你可能感兴趣的:(AntDB,国产数据库,数据库,服务器,antdb,antdb数据库)