openGauss/MogDB-3.0.0 dcf 测试(非 om 安装)

本文出处:https://www.modb.pro/db/402037

IP 地址

... LERDER

... FOLLOWER

... FOLLOWER

一、安装 openGauss

安装依赖包

yum install -y bzip2 bzip2-devel curl libaio

创建用户、组并创建目录

groupadd omma -g 20001

useradd omma -g 20001 -u 20001

echo "*@" | passwd --stdin omma

mkdir -p /opengauss/{soft,data}

tar xf openGauss-3.0.0-CentOS-64bit-all.tar.gz -C /opengauss/soft

配置环境变量

echo "export GAUSSHOME=/opengauss/soft" >> /home/omma/.bashrc &&

echo "export PATH=$GAUSSHOME/bin:$PATH " >> /home/omma/.bashrc &&

echo "export LD_LIBRARY_PATH=$GAUSSHOME/lib:$LD_LIBRARY_PATH" >> /home/omma/.bashrc

解压数据库软件包

cd /opengauss/soft

tar -xf openGauss-3.0.0-CentOS-64bit.tar.bz2

初始化数据库 后续所有操作均使用 omma 用户,初始化需要加-c 参数,会生成 dcf 相关文件(注意 nodename)

gs_initdb --nodename=gaussdb1 -w *@ -D /opengauss/data/ -c

二、配置 dcf 参数

1.配置白名单

在 pg_hba.conf 里添加白名单

2.配置 dcf 参数与 replconninfo

因为在初始化时加了-c,会自动打开 enable_dcf 参数 在节点一的 postgresql.conf 里添加

port=21000

dcf_node_id = 1

dcf_ssl=off

dcf_data_path = '/opengauss/data/dcf_data'

dcf_log_path= '/opengauss/data/dcf_log'

dcf_config='[{"stream_id":1,"node_id":1,"ip":"...","port":21000,"role":"LEADER"},{"stream_id":1,"node_id":2,"ip":"...","port":21000,"role":"FOLLOWER"},{"stream_id":1,"node_id":3,"ip":"...","port":21000,"role":"FOLLOWER"}]'

replconninfo1 = 'localhost=... localport=21001 localheartbeatport=21005 localservice=21004 remotehost=... remoteport=21001 remoteheartbeatport=21005 remoteservice=21004'

replconninfo2 = 'localhost=... localport=21001 localheartbeatport=21005 localservice=21004 remotehost=... remoteport=21001 remoteheartbeatport=21005 remoteservice=21004'

类似得,在其他两个备机添加 节点二:

port=21000

dcf_node_id = 2

dcf_ssl=off

dcf_data_path = '/opengauss/data/dcf_data'

dcf_log_path= '/opengauss/data/dcf_log'

dcf_config='[{"stream_id":1,"node_id":1,"ip":"...","port":21000,"role":"LEADER"},{"stream_id":1,"node_id":2,"ip":"...","port":21000,"role":"FOLLOWER"},{"stream_id":1,"node_id":3,"ip":"...","port":21000,"role":"FOLLOWER"}]'

replconninfo1 = 'localhost=... localport=21001 localheartbeatport=21005 localservice=21004 remotehost=... remoteport=21001 remoteheartbeatport=21005 remoteservice=21004'

replconninfo2 = 'localhost=... localport=21001 localheartbeatport=21005 localservice=21004 remotehost=... remoteport=21001 remoteheartbeatport=21005 remoteservice=21004'

节点三:

port=21000

dcf_node_id = 3

dcf_ssl=off

dcf_data_path = '/opengauss/data/dcf_data'

dcf_log_path= '/opengauss/data/dcf_log'

dcf_config='[{"stream_id":1,"node_id":1,"ip":"...","port":21000,"role":"LEADER"},{"stream_id":1,"node_id":2,"ip":"...","port":21000,"role":"FOLLOWER"},{"stream_id":1,"node_id":3,"ip":"...","port":21000,"role":"FOLLOWER"}]'

replconninfo1 = 'localhost=... localport=21001 localheartbeatport=21005 localservice=21004 remotehost=... remoteport=21001 remoteheartbeatport=21005 remoteservice=21004'

replconninfo2 = 'localhost=... localport=21001 localheartbeatport=21005 localservice=21004 remotehost=... remoteport=21001 remoteheartbeatport=21005 remoteservice=21004'

三、启动 openGauss

全部以备机身份拉起

gs_ctl start -D /opengauss/data -M standby

手动设置存活节点为少数派模式运行,在主节点执行(即 LEADER)

gs_ctl setrunmode -D /opengauss/data -v 1 -x minority

集群其他节点主动重建拉起,在所有备节点执行(即 FOLLOWER) gs_ctl build -b full -D /opengauss/data ... 存活节点重回多数派,在主节点执行(即 LEADER)

gs_ctl setrunmode -D /opengauss/data -x normal

全部节点查看状态

gs_ctl query -D /opengauss/data

四、数据同步测试

主节点

[omma@localhost ~]$ gsql -p 21000 postgres -r

gsql ((openGauss 3.0.0 build 02c14696) compiled at 2022-04-01 18:12:34 commit 0 last mr )

Non-SSL connection (SSL connection is recommended when requiring high-security)

Type "help" for help.

openGauss=# create table ysl (id int);

CREATE TABLE

openGauss=# insert into ysl values(1);

INSERT 0 1

openGauss=# select * from ysl;

id

1

(1 row)

备机

五、故障切换测试

主节点进行停数据库 gs_ctl stop -D /opengauss/data/

可以看到我们的 node2 变成了主节点,身份是 leader,而我们的原主变成了它的 follower

拉起原主库,以 standby 方式启动,查看当前状态,原主节点依旧是新主节点的 follower gs_ctl start -D /opengauss/data -M standby

六、switchover 切换测试

在节点 1 进行 switchover 操作,之前节点 1 为 follower,执行完切换之后,可以看到我们的节点 1 又重新恢复成主节点。

此时查看节点 2,也就是我们 switchover 之前的主节点,发现节点 2 已经 shutdown 了,需要手动再加入集群

总结:

1.openGauss-3.0.0 版本的 dcf 对于 switchover,在进行切换之后会把原主节点 shutdown,而不会重启为 follower,需要手动重启。 2.此外 dcf 不像 om 工具这种部署的主备,dcf 在主节点 pg_stat_replication 视图里查询不到复制信息。 数据复制流程区别:

openGauss/MogDB-3.0.0 dcf测试(非om安装)的更多相关文章

  1. Exploratory Testing 3.0 - 探索式测试

    最近看了James Bach新发的一篇文章,名为Exploratory Testing 3.0,文章链接:http://www.satisfice.com/blog/archives/1509 这篇文 ...

  2. Mysql 8.0 新特性测试

    Mysql 8.0 新特性测试 Role MySQL8.0版本添加了role特性,role是一种逻辑概念是权限的集合,可以将一个或以上的权限赋予给role,再将role赋给user.Oracle,Po ...

  3. [Linux] 非root安装GCC9.1.0

    说明 一般Linux系统自带或公共的GCC版本都很低,如目前我们的服务器版本的GCC还停留在gcc-4.9.3,而官网已到达9.2版本(下载http://ftp.gnu.org/gnu/gcc/) , ...

  4. Android 4.0.3 CTS 测试

    Android-CTS 4.0.3测试基本配置 1. Download CTS CTS的获取方式有两种: 1.1.由Google提供 1.1.1.打开浏览器输入连接: http://source.an ...

  5. sysbench 0.5 oltp测试笔记

    sysbench 0.5相比0.4版本的主要变化是,oltp测试结合了lua脚本,不需要修改源码,通过自定义lua脚本就可以实现不同业务类型的测试.同时0.5相比0.4需要消耗更多的cpu资源. 1. ...

  6. Node.js 4.0.0:灵雀云和 OneAPM 的整合测试

    关于 Node.js 4.0.0 稳定版刚刚推出,备受期待,迫不及待地想用它写点东西:此外,要把 Demo 放到 Internet 上得有一个公网 IP ,看到灵雀云挺不错的而且提供域名解析,简直业界 ...

  7. 【转】Android 4.0.3 CTS 测试

    原文网址:http://blog.csdn.net/zxm317122667/article/details/8508013 Android-CTS 4.0.3测试基本配置 1. Download C ...

  8. vue2.0父子组件以及非父子组件如何通信

    1.父组件传递数据给子组件 父组件数据如何传递给子组件呢?可以通过props属性来实现 父组件: <parent> <child :child-msg="msg" ...

  9. js中的0就是false,非0就是true及案例

    在处理js代码判断真假时经常会这么写. 但fun()可能得到的是数字0,这可不是表示的没有值,但是!js中的数字0就是false,非0就是true. 于是0就被无情的当做false了. 已经被这个坑过 ...

  10. 基于HDP3.0的基础测试

    1,TestDFSIO write和read的性能测试, 测试hadoop读写的速度.该测试为Hadoop自带的测试工具,位于$HADOOP_HOME/share/hadoop/mapreduce目录 ...

随机推荐

  1. vmware虚拟机出现此电脑无法运行win11,虚拟机中安装win11系统教程

    一.点击新建虚拟机 二.选择自定义安装 三.默认 四.选择win11镜像 五.选择windows 六.命名 七.勾选安全引导 八.两个处理器即可 九.最低4G内存,接下来一直默认点下一步即可 十.创建 ...

  2. 建立两台linux主机的ssh信任,实现ssh免密登录远程服务器

    1.介绍 假设我们现在有AB两个服务器,要求A能够远程登录到B服务. CentOS版本:CentOS Linux release 7.6.1810 (Core) 2.实操 1.先在A服务上输入以下命令 ...

  3. 如何获取拼多多推流码并使用OBS进行直播-疯狂URL

    简介 拼多多直播在PC端可以用多多视频|多多直播端进行开播,它的功能类似于常见的抖音直播助手和快手直播伴侣等等客户端.此教程测试时间 2023-7-12,第三方随时可能会升级,无法保证时效,建议不要升 ...

  4. npm install --legacy-peer-deps 安装出现依赖包冲突的解决方案

    npm install --legacy-peer-deps 安装出现依赖包冲突的解决方案 为什么 在安装依赖包的时候,会有依赖包的冲突 比如A包引用了C的1.0版本 B包依赖了C的1.1版本 win ...

  5. 码上掘金 里面 嵌入自定义组件,可以用做组件demo演示

    查看代码片段 https://code.juejin.cn/pen/7128211910696108066 需求 将写的组件演示出来,默认 码上掘金 不能 嵌入组件. 解决问题 选择自定义模板,所有代 ...

  6. 海词 dict.cn 有 词义饼状分布图 和 词性饼状分布图 - 词典推荐

    海词 dict.cn 有 词义饼状分布图 和 词性饼状分布图 http://dict.cn/like

  7. php time 时间 前台拿到 需要*1000能正确显示 dayjs(time*1000).format('YYYY-MM-DD HH:mm:ss')

    php time 时间 前台拿到 需要1000能正确显示 dayjs(time1000).format('YYYY-MM-DD HH:mm:ss')

  8. Python isinstance() 函数含义及用法解析

    描述 isinstance() 函数来判断一个对象是否是一个已知的类型,类似 type(). isinstance() 与 type() 区别: type() 不会认为子类是一种父类类型,不考虑继承关 ...

  9. C++自定义比较函数的bug

    auto cmp = [] (int x, int y) {return true;}; priority_queue<int, vector<int> , cmp> q; 报 ...

  10. gcc生成静态链接库与动态链接库步骤,并链接生成可执行文件的简单示例

    编写 mylib.h void test(); 编写 mylib.c #include<stdio.h> void test(){ printf("hello world&quo ...