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(待补充)