github 代码位置:https://github.com/ADBSQL/AntDB
QQ交流群:496464280
AntDB是基于postgres-xc架构的分布式数据库,在原有postgres-xc基础上,提供了oracle语法兼容,增强了集群在高并发大压力下的稳定性等多方面的改进。
下面主要介绍AntDB提供的锁集群功能。
锁集群
AntDB数据库集群包含多个coordinator节点,coordinator节点之间存在相互通信。在锁集群操作时,我们只需要在其中一个coordinator节点上执行锁集群语句即可,
锁集群语句为"SELECT PG_PAUSE_CLUSTER()",示例如下:
postgres=# SELECT PG_PAUSE_CLUSTER();
pg_pause_cluster
------------------
t
(1 row)
锁集群发生后,除了所集群涉及的当前session可以继续执行sql等语句操作,其它任何连接到coordinaator上的session上都无法执行sql等语句操作,操作hang住,
等待集群锁释放才能继续执行,可以理解为各个coordinator上不再允许有新的连接进来执行应用操作。
释放集群锁
需要释放集群锁时,需要在锁集群涉及的session界面执行释放集群锁语句即可,释放集群锁语句为"SELECT PG_UNPAUSE_CLUSTER()",示例如下:
postgres=# SELECT PG_UNPAUSE_CLUSTER();
pg_unpause_cluster
--------------------
t
(1 row)
释放集群锁后,所有的coordinator均可接受连接执行操作,原有的由于锁集群被hang住的语句恢复正常执行。
需要说明的是:
1.在集群正常运行状态下才能够锁集群成功,若有coordinator节点异常则锁集群操作失败;
2.执行完锁集群操作后执行"\q"或其它操作导致与coordinator连接断开,会自动触发释放集群锁操作;