麒麟4(Ubuntu)环境下通过docker搭建OpenGauss主备机,实现主备同步、主备切换

1.安装docker

1.1下载路径

链接: https://download.docker.com/linux/ubuntu/dists/xenial/pool/stable/amd64/

1.2下载版本

离线安装docker需要下载3个包,containerd.io ,docker-ce-cli,docker-ce
containerd.io_1.2.6-3_amd64.deb
docker-ce_19.03.9_3-0_ubuntu-xenial_amd64.deb
docker-ce-cli_19.03.9_3-0_ubuntu-xenial_amd64.deb

1.3上传到麒麟4服务器

依次执行安装,顺序不能改变

dpkg -i containerd.io_1.2.6-3_amd64.deb
dpkg -i docker-ce-cli_19.03.9_3-0_ubuntu-xenial_amd64.deb
dpkg -i docker-ce_19.03.9_3-0_ubuntu-xenial_amd64.deb

1.4配置docker

systemctl start docker //启动docker
systemctl status docker//查看状态
docker version//查看版本号
# 设置 docker自动启动
systemctl enable docker.service
# 查看docker 在系统中状态
systemctl list-unit-files |grep docker

2、安装配置OpenGauss

2.1 拉取opengauss镜像

这里我使用的是3.0.0版本

docker pull enmotech/opengauss:3.0.0 //拉取镜像

下载完成后,通过指令查看镜像

docker images

在这里插入图片描述

2.2配置docker子网

因为无法通过网络直接访问docker内镜像,所以需要在服务器跟docker镜像之间做一个端口映射
(这里我创建了一个名为opengaussnetwork的子网,网关为192.168.20.1,子网掩码为255.255.255.0/24)

docker network create --subnet  192.168.20.1/24 opengaussnetwork

查看docker网络信息

docker network ls

在这里插入图片描述

2.3创建主机

镜像拉取后就可以用一条命令启动实例。
用作主机的虚拟机ip为167,docker内镜像ip为20.11;备机虚拟机ip为168,dockers镜像ip为20.11,所以是20.11去链接168,20.12去链接167.

docker run --network opengaussnetwork --ip 192.168.20.11 --privileged=true --name opengauss_master -h opengauss_master -p 5432:5432 -p 5434:5434 -d -e GS_PORT=5432 -e OG_SUBNET=opengaussnetwork -e GS_PASSWORD=Enmo@123 -e NODE_NAME=opengauss_master -e REPL_CONN_INFO="replconninfo1 = 'localhost=192.168.20.11 localport=5434 localservice=5432 remotehost=192.168.1.167 remoteport=5434 remoteservice=5432'\n" enmotech/opengauss:3.0.0 -M primary

–network 代表镜像网络配置,选择上面配置的opengaussnetwork
–ip 代表镜像ip
–h 代表连接主机名称为opengauss_master
-p 代表端口映射,将镜像5432和5434端口映射到服务器5432和5434
GS_PORT 代表访问数据库的端口
OG_SUBNET 代表docker内部网络的子网
GS_PASSWORD 代表数据库密码可以修改成自己熟悉的密码。(密码至少需要三种字符,否则实例无法启动)
NODE_NAME 代表数据库节点实例名称
REPL_CONN_INFO 存储本机和对方的ip和端口信息
-M 表示本机角色primary为主机,standby为从机

查看实例信息

docker ps -a

在这里插入图片描述
启动实例

docker start d0e4995d11f6  //换成自己实例的ID

进入实例

docker exec -it d0e4995d11f6  /bin/bash  //换成自己实例的ID

2.4创建备机

docker run --network opengaussnetwork --ip 192.168.20.12 --privileged=true --name opengauss_slave1 -h opengauss_slave1 -p 5432:5432 -p 5434:5434 -d -e GS_PORT=5432 -e OG_SUBNET=opengaussnetwork -e GS_PASSWORD=Enmo@123 -e NODE_NAME=opengauss_slave1 -e REPL_CONN_INFO="replconninfo1 = 'localhost=192.168.20.12 localport=5434 localservice=5432 remotehost=192.168.1.166 remoteport=5434 remoteservice=5432'\n"  enmotech/opengauss:3.0.0 -M standby	

2.5查看数据库信息

进入镜像后切换为内置omm角色

su omm

查看信息

gs_ctl query -D /var/lib/opengauss/data/

可以查看本机角色,查看主备连接信息
完成主备同步后,此时主机的操作将会同步到备机
主机信息
在这里插入图片描述
备机信息
在这里插入图片描述

进入数据库

gsql

常用指令

/l  列举所有数据库

2.6主备切换

#本端以主机模式启动或数据库升为主机模式
切换完成之后主机变备机,备机变主机
gs_ctl switchover -M primary

primary:本端以主机模式启动或数据库升为主机模式
standby:本端以备机模式启动或数据库升为备机模式。
cascadestandby:本端以级联备机模式启动或数据库升为级联备机模式。
cascadestandby1:本端以次级联备机模式启动。
pending:本端处于等待状态,等待提升为主机、备机、级联备机或次级联备机。

部署一主多备(待补充)

通过c++代码操作postpresql(待补充)

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

我要创造一个不收费的C-S-D-N

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值