#定义同步备

在最大可用模式和最大保护模式下,主机事务提交需要等待redo同步的备机,称为同步备。默认情况下,同步备指MAJORITY,即系统中需要多数派备机收到redo,主机事务才可提交成功。

YashanDB支持由用户自定义同步备,这通过设置QUORUM_SYNC_STANDBYS和REQUIRED_SYNC_STANDBYS参数实现。

QUORUM_SYNC_STANDBYS和REQUIRED_SYNC_STANDBYS参数支持在线设置,立即生效。

每个节点实例上均存在QUORUM_SYNC_STANDBYS和REQUIRED_SYNC_STANDBYS参数且可以独立设置,主机的设置不会同步到备机。

只有当前主机上的QUORUM_SYNC_STANDBYS和REQUIRED_SYNC_STANDBYS参数设置才起作用。但由于可能发生主备角色变化,当进行该参数设置的维护时,需要考虑到环境中所有的节点并对其操作。

QUORUM_SYNC_STANDBYS和REQUIRED_SYNC_STANDBYS参数仅在最大保护模式下生效。

分布式部署下不建议部署后修改下述两个参数。

# QUORUM_SYNC_STANDBYS

QUORUM_SYNC_STANDBYS参数的格式为: ANY syncNum (standby1,standby2,...)

  • (standby1,standby2,...)表示一组备机的名称。单机部署下该名称需与ARCHIVE_DEST_x参数对应名称一致,如ARCHIVE_DEST_1对应的备机名称应该为此处的standby1;分布式部署下该名称需与分布式集群部署配置文件中节点在组内顺序一致,如节点组内第一个节点对应的备机名称应该为此处的standby1。
  • *表示当前所有备机。
  • syncNum表示这组备机里,至少需要syncNum个备机收到redo日志,主机事务才可以提交。
  • 该参数默认值为MAJORITY,默认至少有N/2个备机收到redo日志,主机事务才可以提交,其中N为所有节点(包含主机)的数量。

示例

--QUORUM_SYNC_STANDBYS默认值为MAJORITY
SHOW PARAMETER QUORUM_SYNC_STANDBYS;
NAME                                                             VALUE                                                            
---------------------------------------------------------------- ---------------------------------------------------------------- 
QUORUM_SYNC_STANDBYS                                             MAJORITY     

--主机事务提交,要确保备机2和备机3里,任意一个收到redo
ALTER SYSTEM SET QUORUM_SYNC_STANDBYS='ANY 1 (standby2, standby3)' SCOPE=BOTH;

--主机事务提交,要确保所有备机里,任意一个收到redo
ALTER SYSTEM SET QUORUM_SYNC_STANDBYS='ANY 1 (*)' SCOPE=BOTH;

# REQUIRED_SYNC_STANDBYS

REQUIRED_SYNC_STANDBYS参数的格式为: standby1,standby2,...

  • standby1,standby2,..表示一组备机的名称。单机部署下该名称需与ARCHIVE_DEST_x参数对应名称一致,如ARCHIVE_DEST_1对应的备机名称应该为此处的standby1;分布式部署下该名称需与分布式集群部署配置文件中节点在组内顺序一致,如节点组内第一个节点对应的备机名称应该为此处的standby1。
  • *表示当前所有备机。
  • 该参数表示必须这组备机全部收到redo日志,主机事务才可以提交。
--主机事务提交,要确保standby2收到redo
ALTER SYSTEM SET REQUIRED_SYNC_STANDBYS ='standby2' SCOPE=BOTH;

--主机事务提交,要确保所有备机都收到redo
ALTER SYSTEM SET REQUIRED_SYNC_STANDBYS ='*' SCOPE=BOTH;

Note

  • QUORUM_SYNC_STANDBYS和REQUIRED_SYNC_STANDBYS参数可以同时设置,并同时生效。例如,当QUORUM_SYNC_STANDBYS设为'ANY 2 (*)',REQUIRED_SYNC_STANDBYS设为'standby2'时,表示主机的事务提交,必须在redo同步到备机2,且同步到另外的任意1个备机后,才能成功返回。
  • 同步备的参数配置, 同一个组内节点应该配置一致,否则可能出现异常。
  • 自动选举开启后,无法通过QUORUM_SYNC_STANDBYS和REQUIRED_SYNC_STANDBYS参数指定备机名。