首页 > 其他分享 >KingbaseES V8R3集群运维案例之---流复制异步同步及全同步模式配置

KingbaseES V8R3集群运维案例之---流复制异步同步及全同步模式配置

时间:2023-09-18 16:24:26浏览次数:34  
标签:同步 运维 synchronous SYNC kingbase 510000D0 V8R3 node3 node2

案例说明:
通过案例描述KingbaseES V8R3集群异步、同步及全同步强一致性配置,本案例为一主二备的架构。

适用版本:
KingbaseES V8R3

集群架构:

集群复制配置参数说明:
1)sync_flag

[kingbase@node101 bin]$ cat ../etc/HAmodule.conf |grep -i sync_
#1->synchronous cluster,0->asynchronous cluster ,default 1.example:SYNC_FLAG=1
SYNC_FLAG=0

说明:此参数强制配置流复制同异步模式,0为异步模式,1为同步模式。

2)synchronous_standby_names

[kingbase@node101 bin]$ cat ../data/kingbase.conf |grep -i standby_name
##synchronous_standby_names = ''        # standby servers that provide sync rep
#synchronous_standby_names='1 (node1, node2)'

说明:此参数用于配置在流复制同步模式下,参与同步复制的备库节点;
例如一主二备集群:'1 (node1,node2,node3)',其中node1是主库,则node2为同步备库,node3为潜在同步备库;
'2 (node1,node2,node3)',其中node1是主库,则node2为同步备库,node3为同步备库;
synchronous_standby_names = '' ,则node2,node3均为异步备库。

3)synchronous_commit

[kingbase@node101 bin]$ cat ../data/kingbase.conf |grep _commit
#synchronous_commit = on                # synchronization level;

说明:用于同步模式下接收到wal日志流的处理方式:
remote_write:备库将wal日志写入到文件系统缓存后,给主库返回commit的ack信息。
on:          备库将wal日志写入到wal日志文件后,给主库返回commit的ack信息。
remote_apply:备库将wal日志写入到wal日志文件并apply后,给主库返回commit的ack信息,
              强制主备事务同步。

如下图所示:

一、流复制异步模式配置

1、sync_flag配置

[kingbase@node101 bin]$ cat ../etc/HAmodule.conf |grep -i flag
#1->synchronous cluster,0->asynchronous cluster ,default 1.example:SYNC_FLAG=1
SYNC_FLAG=0

2、集群启动后流复制状态查看

TEST=# select * from sys_stat_replication;
  PID  | USESYSID | USENAME | APPLICATION_NAME |  CLIENT_ADDR  | CLIENT_HOSTNAME | CLIENT_PORT |         BACKEND_STAR
T         | BACKEND_XMIN |   STATE   | SENT_LOCATION | WRITE_LOCATION | FLUSH_LOCATION | REPLAY_LOCATION | SYNC_PRIOR
ITY | SYNC_STATE
-------+----------+---------+------------------+---------------+-----------------+-------------+---------------------
----------+--------------+-----------+---------------+----------------+----------------+-----------------+-----------
----+------------
 31144 |       10 | SYSTEM  | node2            | 192.168.1.102 |                 |       16989 | 2023-05-07 00:55:00.
110856+08 |              | streaming | 1/500000D0    | 1/500000D0     | 1/500000D0     | 1/500000D0      |
  0 | async
 31275 |       10 | SYSTEM  | node3            | 192.168.1.103 |                 |       30046 | 2023-05-07 00:55:03.
014221+08 |              | streaming | 1/500000D0    | 1/500000D0     | 1/500000D0     | 1/500000D0      |
  0 | async
(2 rows)

# SYNCHRONOUS_STANDBY_NAMES默认配置 
[kingbase@node101 data]$ cat kingbase.auto.conf
# Do not edit this file manually!
# It will be overwritten by ALTER SYSTEM command.
SYNCHRONOUS_STANDBY_NAMES = ''

TEST=# show synchronous_standby_names ;
 synchronous_standby_names
---------------------------

(1 row)

如下图所示,两个备库节点流复制均为async模式:

二、流复制同步模式配置
1、sync_flag配置

[kingbase@node101 bin]$ cat ../etc/HAmodule.conf |grep -i flag
#1->synchronous cluster,0->asynchronous cluster ,default 1.example:SYNC_FLAG=1
SYNC_FLAG=1

2、集群启动后流复制状态查看

TEST=# select * from sys_stat_replication;
 PID  | USESYSID | USENAME | APPLICATION_NAME |  CLIENT_ADDR  | CLIENT_HOSTNAME | CLIENT_PORT |         BACKEND_START
         | BACKEND_XMIN |   STATE   | SENT_LOCATION | WRITE_LOCATION | FLUSH_LOCATION | REPLAY_LOCATION | SYNC_PRIORI
TY | SYNC_STATE
------+----------+---------+------------------+---------------+-----------------+-------------+----------------------
---------+--------------+-----------+---------------+----------------+----------------+-----------------+------------
---+------------
 3966 |       10 | SYSTEM  | node2            | 192.168.1.102 |                 |       18965 | 2023-05-07 01:01:12.3
76208+08 |              | streaming | 1/510000D0    | 1/510000D0     | 1/510000D0     | 1/510000D0      |
 2 | sync
 3970 |       10 | SYSTEM  | node3            | 192.168.1.103 |                 |       30106 | 2023-05-07 01:01:14.9
62029+08 |              | streaming | 1/510000D0    | 1/510000D0     | 1/510000D0     | 1/510000D0      |
 3 | potential
(2 rows)

说明:node2同步模式sync,node3同步模式potential(潜在同步,实为异步)

# SYNCHRONOUS_STANDBY_NAMES默认配置 
[kingbase@node101 bin]$ cat ../data/kingbase.auto.conf
# Do not edit this file manually!
# It will be overwritten by ALTER SYSTEM command.
SYNCHRONOUS_STANDBY_NAMES = '1 (node1, node2, node3)'

TEST=# show synchronous_standby_names ;
 synchronous_standby_names
---------------------------
 1 (node1, node2, node3)
(1 row)

如下图,默认流复制同步模式配置,其中一个节点为sync,其余为potential:

三、集群流复制全同步模式配置
1、sync_flag配置

[kingbase@node101 bin]$ cat ../etc/HAmodule.conf |grep -i flag
#1->synchronous cluster,0->asynchronous cluster ,default 1.example:SYNC_FLAG=1
SYNC_FLAG=1

2、配置 synchronous_standby_names

TEST=# alter system set synchronous_standby_names='2 (node1, node2, node3)';
ALTER SYSTEM

TEST=# select sys_reload_conf();
 SYS_RELOAD_CONF
-----------------
 t
(1 row)

TEST=# show synchronous_standby_names ;
 synchronous_standby_names
---------------------------
 2 (node1, node2, node3)
(1 row)

[kingbase@node101 bin]$ cat ../data/kingbase.auto.conf
# Do not edit this file manually!
# It will be overwritten by ALTER SYSTEM command.
SYNCHRONOUS_STANDBY_NAMES = '2 (node1, node2, node3)'

3、查看流复制同步模式

TEST=# select * from sys_stat_replication;
 PID  | USESYSID | USENAME | APPLICATION_NAME |  CLIENT_ADDR  | CLIENT_HOSTNAME | CLIENT_PORT |         BACKEND_START
         | BACKEND_XMIN |   STATE   | SENT_LOCATION | WRITE_LOCATION | FLUSH_LOCATION | REPLAY_LOCATION | SYNC_PRIORI
TY | SYNC_STATE
------+----------+---------+------------------+---------------+-----------------+-------------+----------------------
---------+--------------+-----------+---------------+----------------+----------------+-----------------+------------
---+------------
 3966 |       10 | SYSTEM  | node2            | 192.168.1.102 |                 |       18965 | 2023-05-07 01:01:12.3
76208+08 |              | streaming | 1/510000D0    | 1/510000D0     | 1/510000D0     | 1/510000D0      |
 2 | sync
 3970 |       10 | SYSTEM  | node3            | 192.168.1.103 |                 |       30106 | 2023-05-07 01:01:14.9
62029+08 |              | streaming | 1/510000D0    | 1/510000D0     | 1/510000D0     | 1/510000D0      |
 3 | sync
(2 rows)

如下图所示,两个备库节点node2和node3流复制均为sync模式:

4、读写分离配置备库强一致性

[kingbase@node101 log]$ cat ../db/data/kingbase.conf|grep _commit
synchronous_commit = remote_apply                # synchronization level;

说明:配置synchronous_commit = remote_apply,主库事务commit,需要等待所有备库
接收到wal日志流并写入到wal日志文件,执行apply完成事务的操作后,向主库返回ack,
主库完成事务的commit。
因此,此时主库及备库查询到的事务的结果是一致的,但是对事务繁忙的业务, 性能
会有很大的影响。

四、总结
KingbaseES V8R3和KingbaseES V8R6集群在流复制同异步模式配置不同,通过以上案例的描述,可以了解到在KingbaseES V8R3集群下流复制模式的详细配置过程。

标签:同步,运维,synchronous,SYNC,kingbase,510000D0,V8R3,node3,node2
From: https://www.cnblogs.com/kingbase/p/17561161.html

相关文章

  • kingbaseES V8R3集群运维案例之---集群部署前后ssh端口修改
    kingbaseESV8R3集群运维案例之---集群部署前后ssh端口修改案例说明:kingbaseESV8R3集群部署读写分离的集群是使用ssh的默认端口(22)部署,当改为非默认端口时,在部署中或部署后会因kingbasecluster脚本ssh的连接而失败,现提出以下解决方案。适用版本:KingbaseESV8R31......
  • KingbaseES V8R6运维案例之---数据库resetwal后启动失败
    KingbaseESV8R6运维案例之---数据库resetwal后启动失败案例说明:KingbaseESV8R6集群触发failover切换后,原主库自动recovery失败,现在需要将原主库启动为单实例的数据库运行,在执行了resetwal后,启动数据库失败。sys_log记录以下故障信息:适用版本:KingbaseESV8R6......
  • KingbaseES V8R6集群运维案例之---访问系统表unrecognized token- false故障
    KingbaseESV8R6集群运维案例之---访问系统表‘unrecognizedtoken:"false"’故障案例说明:KingbaseESV8R6集群在升级补丁后,主备库访问系统表出现‘unrecognizedtoken:"false"’故障,如下图所示:适用版本:KingbaseESV8R3/R6一、问题分析1、连接数据库执行系统表访问(如......
  • KingbaseES V8R6集群运维案例--cluster模式备份sys_backup.sh init故障
    KingbaseESV8R6集群运维案例--cluster模式备份sys_backup.shinit故障案例说明:通过脚本方式部署KingbaseESV8R6集群后,在‘cluster’模式备份,执行sys_backup.shinit时,出现“cannotcontain//for”log-path"option"错误,但是在‘single’模式下备份,无此错误。故障信息......
  • KingbaseES V8R6集群运维案例之---修改ssh端口后脚本创建互信
    案例分析:在KingbaseESV8R6集群部署时,需要建立节点之间ssh互信(或者使用securecmdd工具),在有的生产环境,为了安全起见会修改ssh的默认端口;KingbaseESV8R6集群部署提供了脚本用于创建ssh互信,如果修改了系统的ssh端口号后,也需要修改对应的脚本。适用版本:KingbaseESV8R6一、集群节......
  • xxl-job 执行过程中报时间不同步错误
    场景:将不同机器的执行器注册到调度器时由于不同的机器的系统时间存在误差导致任务无法执行!报错信息如下:msg:com.xxl.rpc.util.XxlRpcException:Thetimestampdifferencebetweenadminandexecutorexceedsthelimit.  解决办法:保证各个调度器的时间和控制中心的系统时间......
  • 线程同步与进程同步方式
    要注意这里的同步并不是指同时进行的意思,而是按照先后顺序依次进行。首先了解一下同步与互斥的概念:同步:多个进程因为合作产生的直接制约关系,使得进程有一定的先后执行关系;互斥:多个进程在同一时刻只有一个进程能进入临界区。一、进程同步方式进程同步就是控制多个进程按一......
  • K8S运维必备排查手册
      一、Pod相关问题及排查 1.Pod无法启动,如何查找原因? 使用kubectldescribepod[pod_name]-n[namespace_name]命令查看该Pod的状态信息,检查容器的状态和事件信息,判断是否出现问题。使用kubectllogs[pod_name]-n[namespace_name]命令查看该Pod容器的......
  • Linux企业运维人员最常用150个命令汇总2
    Linux企业运维人员最常用150个命令汇总 收录在日常运维杂烩系列命令功能说明线上查询及帮助命令(2个)man查看命令帮助,命令的词典,更复杂的还有info,但不常用。help查看Linux内置命令的帮助,比如cd命令。文件和目录操作命令(18个)ls......
  • 深入了解信号量:多线程同步的得力工具
    随着计算机科学和软件工程的不断发展,多线程编程变得越来越重要。多线程允许程序同时执行多个任务,提高了程序的效率和性能。然而,多线程编程也引入了新的问题,例如竞态条件和数据竞争。为了解决这些问题,同步工具变得至关重要,而信号量是其中一个强大的工具。什么是信号量?信号量是一......