【参赛作品66】快速搭建一套openGauss主备高可用集群
作者:Sally
openGauss是一款开源关系型数据库管理系统,采用木兰宽松许可证v2发行。openGauss内核早期源自PostgreSQL,深度融合华为在数据库领域多年的经验,结合企业级场景需求,持续构建竞争力特性。同时openGauss也是一个开源、免费的数据库平台,鼓励社区贡献、合作。
今天无意看到恩墨开源团队发布了openGauss新的容器镜像,此版本镜像还支持创建主从复制的openGauss高可用集群。
本篇文件记录快速部署的主从复制的openGauss高可用集群的过程以及中间遇到的问题,希望对学习openGauss的同学有所帮助。
参考dockerhub网址:https://hub.docker.com/r/enmotech/opengauss
基础环境准备
[root@hhj ~]# cat /etc/system-release
Oracle Linux Server release 7.9
[root@hhj ~]# docker info
Client:Context: defaultDebug Mode: falsePlugins:app: Docker App (Docker Inc., v0.9.1-beta3)buildx: Build with BuildKit (Docker Inc., v0.5.1-docker)scan: Docker Scan (Docker Inc., v0.8.0)Server:Containers: 48Running: 0Paused: 0Stopped: 48Images: 18Server Version: 20.10.7Storage Driver: overlay2Backing Filesystem: xfsSupports d_type: trueNative Overlay Diff: falseuserxattr: falseLogging Driver: json-fileCgroup Driver: cgroupfsCgroup Version: 1Plugins:Volume: localNetwork: bridge host ipvlan macvlan null overlayLog: awslogs fluentd gcplogs gelf journald json-file local logentries splunk syslogSwarm: inactiveRuntimes: io.containerd.runc.v2 io.containerd.runtime.v1.linux runcDefault Runtime: runcInit Binary: docker-initcontainerd version: d71fcd7d8303cbf684402823e425e9dd2e99285drunc version: b9ee9c6314599f1b4a7f497e1f1f856fe433d3b7init version: de40ad0Security Options:seccompProfile: defaultKernel Version: 5.4.17-2102.201.3.el7uek.x86_64Operating System: Oracle Linux Server 7.9OSType: linuxArchitecture: x86_64CPUs: 4Total Memory: 4.268GiBName: hhjID: HHHZ:DPVB:WA2L:J5BI:D4Q6:YMH4:NQEQ:WS4M:A6KP:R3JC:L6EW:LS6VDocker Root Dir: /var/lib/dockerDebug Mode: falseRegistry: https://index.docker.io/v1/Labels:Experimental: falseInsecure Registries:192.168.56.102:5000127.0.0.0/8Registry Mirrors:https://1nj0zren.mirror.aliyuncs.com/https://docker.mirrors.ustc.edu.cn/http://f1361db2.m.daocloud.io/https://registry.docker-cn.com/Live Restore Enabled: false
快速拉取openGauss最新镜像
[root@hhj ~]# docker pull enmotech/opengauss:latest
latest: Pulling from enmotech/opengauss
Digest: sha256:d5a3e38fa2553a44e7fa1cd5cad0b4f0845a679858764067d7b0052a228578a0
Status: Image is up to date for enmotech/opengauss:latest
docker.io/enmotech/opengauss:latest
修改openGauss的镜像标签
注意:不修改标签在启动容器时会报找不到镜像
[root@hhj ~]# docker tag enmotech/opengauss:latest opengauss:latest
[root@hhj ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
enmotech/opengauss latest b4dd24d09223 2 months ago 383MB
opengauss latest b4dd24d09223 2 months ago 383MB
获取创建主备容器脚本并运行
[root@hhj ~]# # wget https://raw.githubusercontent.com/enmotech/enmotech-docker-opengauss/master/create_master_slave.sh
[root@hhj ~]## chmod +x create_master_slave.sh
[root@hhj ~]# ./create_master_slave.sh
Please input OG_SUBNET (容器所在网段) [172.11.0.0/24]:
OG_SUBNET set 172.11.0.0/24
Please input GS_PASSWORD (定义数据库密码)[Enmo@123]:
GS_PASSWORD set Enmo@123
Please input MASTER_IP (主库IP)[172.11.0.101]:
MASTER_IP set 172.11.0.101
Please input SLAVE_1_IP (备库IP)[172.11.0.102]:
SLAVE_1_IP set 172.11.0.102
Please input MASTER_HOST_PORT (主库数据库服务端口)[5432]:
MASTER_HOST_PORT set 5432
Please input MASTER_LOCAL_PORT (主库通信端口)[5434]:
MASTER_LOCAL_PORT set 5434
Please input SLAVE_1_HOST_PORT (备库数据库服务端口)[6432]:
SLAVE_1_HOST_PORT set 6432
Please input SLAVE_1_LOCAL_PORT (备库通信端口)[6434]:
SLAVE_1_LOCAL_PORT set 6434
Please input MASTER_NODENAME [opengauss_master]:
MASTER_NODENAME set opengauss_master
Please input SLAVE_NODENAME [opengauss_slave1]:
SLAVE_NODENAME set opengauss_slave1
Please input openGauss VERSION [1.0.1]: latest
openGauss VERSION set latest
starting
13b4cf3a545cdc51539b2f4e6b227536cacd5caa764a167701927d7a6cbd21e5
OpenGauss Database Network Created.
85c9894a167ca992c237900bb27ed50c8ffb323217de6c1011614f5a67f8dcd6
OpenGauss Database Master Docker Container created.
e3fbdd36d6203a34051eea9d6a756d404528a0dcdca169aa2be42502a45d3087
OpenGauss Database Slave1 Docker Container created.
注意如果遇到容器存在或者网络存在可以如下删除
[root@hhj ~]# docker rm opengauss_master
opengauss_master
[root@hhj ~]# docker network rm opengaussnetwork
opengaussnetwork
验证openGauss主备集群状态
查看容器启动情况
[root@hhj ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
e3fbdd36d620 opengauss:latest "entrypoint.sh -M st…" 13 seconds ago Up 12 seconds 5432/tcp, 0.0.0.0:6432->6432/tcp, :::6432->6432/tcp opengauss_slave1
85c9894a167c opengauss:latest "entrypoint.sh -M pr…" 46 seconds ago Up 43 seconds 0.0.0.0:5432->5432/tcp, :::5432->5432/tcp opengauss_master
进入openGauss主库
[root@hhj ~]# docker exec -it opengauss_master bash
root@opengauss_master:/# su - omm
omm@opengauss_master:~$ gsql
gsql ((openGauss 2.1.0 build 590b0f8e) compiled at 2021-09-30 14:29:04 commit 0 last mr )
Non-SSL connection (SSL connection is recommended when requiring high-security)
Type "help" for help.omm=# \lList of databasesName | Owner | Encoding | Collate | Ctype | Access privileges
-----------+-------+----------+-------------+-------------+-------------------omm | omm | UTF8 | en_US.UTF-8 | en_US.UTF-8 |postgres | omm | UTF8 | en_US.UTF-8 | en_US.UTF-8 |template0 | omm | UTF8 | en_US.UTF-8 | en_US.UTF-8 | =c/omm +| | | | | omm=CTc/ommtemplate1 | omm | UTF8 | en_US.UTF-8 | en_US.UTF-8 | =c/omm +| | | | | omm=CTc/omm
(4 rows)omm=# \q
检查主从情况
[2021-12-19 04:29:35.624][350][][gs_ctl]: gs_ctl query ,datadir is /var/lib/opengauss/dataHA state:local_role : Primarystatic_connections : 1db_state : Normaldetail_information : NormalSenders info:sender_pid : 320local_role : Primarypeer_role : Standbypeer_state : Normalstate : Streamingsender_sent_location : 0/4000268sender_write_location : 0/4000268sender_flush_location : 0/4000268sender_replay_location : 0/4000268receiver_received_location : 0/4000268receiver_write_location : 0/4000268receiver_flush_location : 0/4000268receiver_replay_location : 0/4000268sync_percent : 100%sync_state : Syncsync_priority : 1sync_most_available : Onchannel : 172.11.0.101:5434-->172.11.0.102:38096Receiver info:
No information
omm@opengauss_master:~$
omm@opengauss_master:~$ exit
logout
root@opengauss_master:/# exit
exit
进入openGauss从库
root@opengauss_slave1:/# su - omm
omm@opengauss_slave1:~$ gsql -r -p6432
gsql ((openGauss 2.1.0 build 590b0f8e) compiled at 2021-09-30 14:29:04 commit 0 last mr )
Non-SSL connection (SSL connection is recommended when requiring high-security)
Type "help" for help.omm=# \lList of databasesName | Owner | Encoding | Collate | Ctype | Access privileges
-----------+-------+----------+-------------+-------------+-------------------omm | omm | UTF8 | en_US.UTF-8 | en_US.UTF-8 |postgres | omm | UTF8 | en_US.UTF-8 | en_US.UTF-8 |template0 | omm | UTF8 | en_US.UTF-8 | en_US.UTF-8 | =c/omm +| | | | | omm=CTc/ommtemplate1 | omm | UTF8 | en_US.UTF-8 | en_US.UTF-8 | =c/omm +| | | | | omm=CTc/omm
(4 rows)omm=# \q
检查主从情况
omm@opengauss_slave1:~$ gs_ctl query -D /var/lib/opengauss/data/
[2021-12-19 04:31:24.788][361][][gs_ctl]: gs_ctl query ,datadir is /var/lib/opengauss/dataHA state:local_role : Standbystatic_connections : 1db_state : Normaldetail_information : NormalSenders info:
No informationReceiver info:receiver_pid : 338local_role : Standbypeer_role : Primarypeer_state : Normalstate : Normalsender_sent_location : 0/40004A8sender_write_location : 0/40004A8sender_flush_location : 0/40004A8sender_replay_location : 0/40004A8receiver_received_location : 0/40004A8receiver_write_location : 0/40004A8receiver_flush_location : 0/40004A8receiver_replay_location : 0/40004A8sync_percent : 100%channel : 172.11.0.102:38096<--172.11.0.101:5434omm@opengauss_slave1:~$ exit
logout
root@opengauss_slave1:/# exit
exit
[root@hhj ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
e3fbdd36d620 opengauss:latest "entrypoint.sh -M st…" 8 minutes ago Up 8 minutes 5432/tcp, 0.0.0.0:6432->6432/tcp, :::6432->6432/tcp opengauss_slave1
85c9894a167c opengauss:latest "entrypoint.sh -M pr…" 9 minutes ago Up 9 minutes 0.0.0.0:5432->5432/tcp, :::5432->5432/tcp opengauss_master
验证openGauss主备集群主从同步
进入主库创建表和插入数据
[root@hhj ~]# docker exec -it opengauss_master bash
root@opengauss_master:/# su - omm
omm@opengauss_master:~$ gsql -r
gsql ((openGauss 2.1.0 build 590b0f8e) compiled at 2021-09-30 14:29:04 commit 0 last mr )
Non-SSL connection (SSL connection is recommended when requiring high-security)
Type "help" for help.omm= create table test(id int);
CREATE TABLE
omm=# insert into test values(1);
INSERT 0 1
omm=# insert into test values(2);
INSERT 0 1omm=# select * from test;id
----12
(2 rows)omm=# exit
omm-# \q
omm@opengauss_master:~$ exit
logout
root@opengauss_master:/# exit
exit
进入从库验证数据同步
[root@hhj ~]# docker exec -it opengauss_slave1 bash
root@opengauss_slave1:/# su - omm
omm@opengauss_slave1:~$ gsql -r -p 6432
gsql ((openGauss 2.1.0 build 590b0f8e) compiled at 2021-09-30 14:29:04 commit 0 last mr )
Non-SSL connection (SSL connection is recommended when requiring high-security)
Type "help" for help.omm=# \dList of relationsSchema | Name | Type | Owner | Storage
--------+------+-------+-------+----------------------------------public | test | table | omm | {orientation=row,compression=no}
(1 row)
omm=# select * from test;id
----12
(2 rows)
【参赛作品66】快速搭建一套openGauss主备高可用集群相关推荐
- 部署一套完整的K8s高可用集群(二进制-V1.20)
<部署一套完整的企业级K8s集群> v1.20,二进制方式 作者信息 李振良(阿良),微信:xyz12366699 DevOps实战学院 http://www.aliangedu.cn 说 ...
- ElasticSearch高可用集群环境搭建和分片原理
1.ES是如何实现分布式高并发全文检索 2.简单介绍ES分片Shards分片技术 3.为什么ES主分片对应的备分片不在同一台节点存放 4.索引的主分片定义好后为什么不能做修改 5.ES如何实现高可用容 ...
- 16、Kubernetes搭建高可用集群
文章目录 前言 一.高可用集群 1.1 高可用集群技术细节 二.部署高可用集群 2.1 准备环境 2.2 所有master节点部署keepalived 2.2.1 安装相关包和keepalived 2 ...
- kafka高可用集群搭建
################################################################# 物理环境(两台机子组成的真实集群): Desktop一个zk节点 L ...
- 搭建Eureka高可用集群
做的快哭了已经 文章目录 Eureka可用高集群的搭建 一.Eureka的工作原理 二.Eureka中服务提供者与服务消费者的关系 三.搭建Eureka-Server和Eureka-Client 四. ...
- Hadoop的HA机制原理解析,与HA高可用集群环境搭建
2019独角兽企业重金招聘Python工程师标准>>> Hadoop的HA工作机制示意图 下面我们开始搭建这一套高可用集群环境 hadoop2.0已经发布了稳定版本了,增加了很多特性 ...
- mycat mysql好可用架构_想要学会MyCat高可用集群搭建,但是这些知识点却还玩不明白?...
一.集群架构 1.MyCat实现读写分离架构 在我前面的文章, 我已经讲解过了通过MyCat来实现MySQL的读写分离, 从而完成MySQL集群的负载均衡 , 如下面的结构图: 但是以上架构存在问题 ...
- docker 如何加入kubernetes_使用 Kind 在 5 分钟内快速部署一个 Kubernetes 高可用集群...
什么是 Kind Kind(Kubernetes in Docker) 是一个Kubernetes孵化项目,Kind是一套开箱即用的Kubernetes环境搭建方案.顾名思义,就是将Kubernete ...
- 深入浅出keepalived+nginx实现网关主备高可用
深入浅出keepalived+nginx实现网关主备高可用 目录 背景 当用Nginx作网关的时候,如果网关宕机了,整个服务将会变得不可用,那么如何保证网关的高可用呢?我们可以用Keepalived来 ...
最新文章
- 参考别人博客,自己实现用idea运行eclipse项目--学生管理系统-
- 想做网络工程师不?最好学下Linux
- word转pdf后公式出现乱码怎么办?
- 初识Frida--Android逆向之Java层hook (二)
- java面试题九 数组初始化
- 用 div 仿写 input 和 textarea 功能
- javascript校验2
- 腾讯云连续四年排名中国音视频解决市场第一,头部厂商中RTC增速第一
- Codeforces - 1176E - Cover it! - bfs
- 反向传播算法(BP)学习笔记
- 如何使用TeamViewer在会话期间画图?
- uboot修改传递给内核的cmdline的方法
- wordpress无法上传图片至wp-conten/uploads
- 转载:“凤求凰”的解释,有才
- 没有十年网龄都不知道的事儿
- 【巴什博弈 抢夺资源】
- Android跳转-ARouter详细使用教程
- 2017国家集训队作业[agc016e]Poor Turkey
- Outlook2013/2016签名选项卡无法打开
- java 转账 锁_java 关于高并发下的银行转账问题
热门文章
- 行为识别阅读笔记(paper + parted code):Beyond Frame-level CNN Saliency-Aware 3-D CNN with LSTM for Video Acti
- iVMS-4200 Vs区别_55436红单足球预测 法甲 21:00 安格斯 VS 梅斯
- Check It Again: Progressive Visual Question Answeringvia Visual Entailment(SAR)
- linux shell 字符串长度
- 用python爬取交大图书馆图书信息
- 计算机网络安全凭据,账户为用户或计算机提供安全凭证,以便用户和计算机能够登录到网络,并拥有响应访 - 百科题库网...
- 基于Python的飞机票销售系统的设计和实现
- 微信小程序实现押金管理(支付押金、申请退还押金、押金明细)
- 罗切斯特大学计算机博士,罗切斯特大学生物博士排名,千万得慎重点看清
- 回顾(JavaScript)Js正则表达式