作者: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: default
Debug Mode: false
Plugins:
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: 48
Running: 0
Paused: 0
Stopped: 48
Images: 18
Server Version: 20.10.7
Storage Driver: overlay2
Backing Filesystem: xfs
Supports d_type: true
Native Overlay Diff: false
userxattr: false
Logging Driver: json-file
Cgroup Driver: cgroupfs
Cgroup Version: 1
Plugins:
Volume: local
Network: bridge host ipvlan macvlan null overlay
Log: awslogs fluentd gcplogs gelf journald json-file local logentries splunk syslog
Swarm: inactive
Runtimes: io.containerd.runc.v2 io.containerd.runtime.v1.linux runc
Default Runtime: runc
Init Binary: docker-init
containerd version: d71fcd7d8303cbf684402823e425e9dd2e99285d
runc version: b9ee9c6314599f1b4a7f497e1f1f856fe433d3b7
init version: de40ad0
Security Options:
seccomp
Profile: default
Kernel Version: 5.4.17-2102.201.3.el7uek.x86_64
Operating System: Oracle Linux Server 7.9
OSType: linux
Architecture: x86_64
CPUs: 4
Total Memory: 4.268GiB
Name: hhj
ID: HHHZ:DPVB:WA2L:J5BI:D4Q6:YMH4:NQEQ:WS4M:A6KP:R3JC:L6EW:LS6V
Docker Root Dir: /var/lib/docker
Debug Mode: false
Registry: https://index.docker.io/v1/
Labels:
Experimental: false
Insecure Registries:
192.168.56.102:5000
127.0.0.0/8
Registry 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=# \l
List of databases
Name | 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/omm
template1 | 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/data
HA state:
local_role : Primary
static_connections : 1
db_state : Normal
detail_information : Normal
Senders info:
sender_pid : 320
local_role : Primary
peer_role : Standby
peer_state : Normal
state : Streaming
sender_sent_location : 0/4000268
sender_write_location : 0/4000268
sender_flush_location : 0/4000268
sender_replay_location : 0/4000268
receiver_received_location : 0/4000268
receiver_write_location : 0/4000268
receiver_flush_location : 0/4000268
receiver_replay_location : 0/4000268
sync_percent : 100%
sync_state : Sync
sync_priority : 1
sync_most_available : On
channel : 172.11.0.101:5434-->172.11.0.102:38096
Receiver 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=# \l
List of databases
Name | 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/omm
template1 | 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/data
HA state:
local_role : Standby
static_connections : 1
db_state : Normal
detail_information : Normal
Senders info:
No information
Receiver info:
receiver_pid : 338
local_role : Standby
peer_role : Primary
peer_state : Normal
state : Normal
sender_sent_location : 0/40004A8
sender_write_location : 0/40004A8
sender_flush_location : 0/40004A8
sender_replay_location : 0/40004A8
receiver_received_location : 0/40004A8
receiver_write_location : 0/40004A8
receiver_flush_location : 0/40004A8
receiver_replay_location : 0/40004A8
sync_percent : 100%
channel : 172.11.0.102:38096<--172.11.0.101:5434
omm@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 1
omm=# select * from test;
id
----
1
2
(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=# \d
List of relations
Schema | Name | Type | Owner | Storage
--------+------+-------+-------+----------------------------------
public | test | table | omm | {orientation=row,compression=no}
(1 row)
omm=# select * from test;
id
----
1
2
(2 rows)
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/394117.html
標籤:其他
