案例说明:

通过案例描述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集群下流复制模式的详细配置过程。

KingbaseES V8R3集群运维案例之---流复制异步同步及全同步模式配置的更多相关文章

  1. KingbaseES V8R3集群运维案例之---主库系统down failover切换过程分析

    ​ 案例说明: KingbaseES V8R3集群failover时两个cluster都会触发,但只有一个cluster会调用脚本去执行真正的切换流程,另一个有对应的打印,但不会调用脚本,只是走相关的 ...

  2. KingbaseES V8R3集群运维案例之---kingbase_monitor.sh启动”two master“案例

    案例说明: KingbaseES V8R3集群,执行kingbase_monitor.sh启动集群,出现"two master"节点的故障,启动集群失败:通过手工sys_ctl启动 ...

  3. KingbaseES V8R3集群运维案例之---cluster.log ERROR: md5 authentication failed

    案例说明: 在KingbaseES V8R3集群的cluster.log日志中,经常会出现"ERROR: md5 authentication failed:DETAIL: password ...

  4. KingbaseES V8R3集群运维案例之---用户自定义表空间管理

    ​案例说明: KingbaseES 数据库支持用户自定义表空间的创建,并建议表空间的文件存储路径配置到数据库的data目录之外.本案例复现了,当用户自定义表空间存储路径配置到data下时,出现的故障问 ...

  5. KingbaseES V8R6集群运维案例之---repmgr standby promote应用案例

    案例说明: 在容灾环境中,跨区域部署的异地备节点不会自主提升为主节点,在主节点发生故障或者人为需要切换时需要手动执行切换操作.若主节点已经失效,希望将异地备机提升为主节点. $bin/repmgr s ...

  6. KingbaseES V8R3集群管理维护案例之---集群迁移单实例架构

    案例说明: 在生产中,需要将KingbaseES V8R3集群转换为单实例架构,可以采用以下方式快速完成集群架构的迁移. 适用版本: KingbaseES V8R3 当前数据库版本: TEST=# s ...

  7. KingbaseES V8R3集群维护案例之---pcp_node_refresh应用

    案例说明: 在一次KingbaseES V8R3集群切换分析中,运维人员执行了pcp_node_refresh,导致集群发生了failover的切换.此文档对pcp_node_refresh工具做了应 ...

  8. KingbaseES V8R3集群管理和维护案例之---failover切换wal日志变化分析

    ​ 案例说明: 本案例通过对KingbaseES V8R3集群failover切换过程进行观察,分析了主备库切换后wal日志的变化,对应用者了解KingbaseES V8R3(R6) failover ...

  9. KingbaseES V8R3集群维护案例之---在线添加备库管理节点

    案例说明: 在KingbaseES V8R3主备流复制的集群中 ,一般有两个节点是集群的管理节点,分为master和standby:如对于一主二备的架构,其中有两个节点是管理节点,三个数据节点:管理节 ...

  10. PB 级大规模 Elasticsearch 集群运维与调优实践

    PB 级大规模 Elasticsearch 集群运维与调优实践 https://mp.weixin.qq.com/s/PDyHT9IuRij20JBgbPTjFA | 导语 腾讯云 Elasticse ...

随机推荐

  1. 【Unity3D】基于深度和法线纹理的边缘检测方法

    1 前言 ​ 边缘检测特效中使用屏后处理技术,通过卷积运算计算梯度,检测每个像素周围像素的亮度差异,以识别是否是边缘像素:选中物体描边特效中也使用了屏后处理技术,通过 CommandBuffer 获取 ...

  2. 【Unity3D】流动雾效

    1 前言 ​ 屏幕深度和法线纹理简介中对深度和法线纹理的来源.使用及推导过程进行了讲解,激光雷达特效中讲述了一种重构屏幕像素点世界坐标的方法,本文将介绍使用深度纹理重构屏幕像素点在相机坐标系下的坐标计 ...

  3. 【OpenGL ES】纹理贴图

    1 前言 ​ 纹理贴图是指:将图片贴在模型的表面. ​ 纹理贴图的本质是:将图片划分为一系列三角形,使得图片顶点序列与模型顶点序列中的顶点一一对应,对于模型中任意三角形内部的坐标和图片中对应三角形内部 ...

  4. Java利用反射实现运行时方法调用

    1.介绍 在这篇短文中,我们将快速了解如何在运行时使用Java反射API调用方法. 2.准备工作 来创建一个简单的类: public class Operations { public double ...

  5. Git 分支管理参考模型

    一个值得参考的Git分支管理模型如下: master 生产主分支,发布到生产环境使用这个分支,由hotfix或者release分支合并过来,不直接提交代码. release 预发布分支, 基于feat ...

  6. SpringBoot使用令牌桶算法+拦截器+自定义注解+自定义异常实现简单的限流

    令牌桶 在高并发的情况下,限流是后端常用的手段之一,可以对系统限流.接口限流.用户限流等,本文就使用令牌桶算法+拦截器+自定义注解+自定义异常实现限流的demo. 令牌桶思想 大小固定的令牌桶可自行以 ...

  7. .NET高级调试之sos命令输出看不懂怎么办

    一:背景 1. 讲故事 很多.NET开发者在学习高级调试的时候,使用sos的命令输出会发现这里也看不懂那里也看不懂,比如截图中的这位朋友. .NET高级调试属于一个偏冷门的领域,国内可观测的资料比较少 ...

  8. 安装SQL Server 具有不支持的属性(Compressed)集。

    安装sqlserver 2014报错信息 D:\Program Files\Microsoft SQL Server 具有不支持的属性(Compressed)集.请通过使用文件夹属性对话框从该文件夹中 ...

  9. 05、secs协议常见问题分析以及如何建立通信

    1.建立通信 在主机和设备之间发送SECS-II消息之前,必须首先"建立"通信.这是通过S1F13(建立通信请求)消息来完成的.这应该是在初始启动后或在长时间不通信之后发送的第一个 ...

  10. SSH不对称密钥自动登入服务器

    SSH不对称密钥自动登入服务器 1.先在自己的电脑上创建密钥对 ssh-keygen -t rsa Windows下生成SSH密钥 $ ssh-keygen -t rsa -C "youre ...