抢鲜体验2:openGauss从源码到主备

2024年 1月 12日 30.1k 0

原作者:彭冲

上一篇记录了使用官方脚本安装过程中遇到的一些问题及解决方法,链接如下:openGauss 安装编译过程要点及问题解决
本文介绍源码编译方式搭建主备的过程。

前期准备

操作系统
Centos7.6 x86_64

创建用户及组

# groupadd dbgrp -g 2000
# useradd omm -g 2000 -u 2000
# passwd omm

规划安装目录、数据目录及权限

# mkdir -p {/opt/og,/opt/ogdata}
# chown -R omm: {/opt/og,/opt/ogdata}
# chmod -R 755 /opt/og
# chmod -R 700 /opt/ogdata

注意:ogdata数据目录权限注意只能owner具有读写权限

安装依赖包

# yum install libaio-devel flex bison ncurses-devel glibc-devel readline-devel libxml2-devel
# yum install patch
# yum install redhat-lsb-core
# yum install unzip gcc gcc-c++ perl
# yum install openssl-devel
# yum install https://forensics.cert.org/centos/cert/7/x86_64/libiconv-1.15-1.el7.x86_64.rpm
# yum install libffi-devel libtool zlib-devel

下载文件
从码云下载两个文件包:

一个是opengauss-openGauss-server-master.zip本体文件
一个是编译时依赖的第三方库文件,地址如下:
https://opengauss.obs.cn-south-1.myhuaweicloud.com/1.0.0/openGauss-third_party_binarylibs.tar.gz

下载文件放到/home/omm

# chown omm: openGauss-third_party_binarylibs.tar.gz
# chmod 755 openGauss-third_party_binarylibs.tar.gz

# chown omm: opengauss-openGauss-server-master.zip
# chmod 755 opengauss-openGauss-server-master.zip

编译前准备

# su - omm

$ unzip opengauss-openGauss-server-master.zip

$ tar -zxvf openGauss-third_party_binarylibs.tar.gz
$ mv openGauss-third_party_binarylibs binarylibs

export CODE_BASE=/home/omm/openGauss-server
export BINARYLIBS=/home/omm/binarylibs
export GAUSSHOME=/opt/og
export GCC_PATH=$BINARYLIBS/buildtools/centos7.6_x86_64/gcc8.2/
export CC=$GCC_PATH/gcc/bin/gcc
export CXX=$GCC_PATH/gcc/bin/g++
export LD_LIBRARY_PATH=$GAUSSHOME/lib:$GCC_PATH/gcc/lib64:$GCC_PATH/isl/lib:$GCC_PATH/mpc/lib/:$GCC_PATH/mpfr/lib/:$GCC_PATH/gmp/lib/:$LD_LIBRARY_PATH
export PATH=$GAUSSHOME/bin:$GCC_PATH/gcc/bin:$PATH

注意:版本1.1开始需要改成下面的gcc7.3

export GCC_PATH=$BINARYLIBS/buildtools/centos7.6_x86_64/gcc7.3/

编译安装

$ cd openGauss-server/

先clean一下,第一次报错可以忽略,如果重新编译需要clean
$ make clean

编译release版本
$ ./configure --prefix=/opt/og \
--3rd=/home/omm/binarylibs \
--gcc-version=8.2.0 \
--without-readline \
--without-zlib \
--enable-thread-safety \
CC=g++ CFLAGS="-O2 -g3"

虚拟机推荐配置4G以上内存,这里虚拟机使用单线程编译,物理机可以增加-j参数
$ make
...
All of openGauss successfully made. Ready to install.
看到上面的提示则,make完成

安装
$ make install
...
openGauss installation complete.
看到上面的提示则,安装完成

查看版本
$ /opt/og/bin/gsql --version
gsql (openGauss 1.0.0 build ) compiled at 2020-07-12 20:44:07 commit 0 last mr

主库初始化

$ /opt/og/bin/gs_initdb --nodename=master_6432 \
--pgdata=/data/data_og \
--encoding=UTF-8 \
--locale=en_US.UTF-8 \
--dbcompatibility='A' \
--username=omm \
--pwpasswd=Enmotech@2020

主库配置

postgresql.conf文件增加如下配置
port=6432
listen_addresses = '0.0.0.0'
password_encryption_type = 0
remote_read_mode=non_authentication
replconninfo1 = 'localhost=MasterIPAddresses \
localport=6439 \
localservice=6432 \
remotehost=StandbyIPAddresses \
remoteport=6439 \
remoteservice=6432'

注意:上面的\是为了排版,localport与port间隔要大于1,remoteport同理。

启动主库

pg_hba.conf配置
host all all 0.0.0.0/0 md5
host replication repuser MasterIP/32 md5
host replication repuser StandbyIP/32 md5

/opt/og/bin/gs_ctl start \
-D /opt/ogdata \
-M primary \
-l og_server.log &

创建流复制用户

$ /opt/og/bin/gsql -Uomm postgres
postgres=# create user repuser SYSADMIN REPLICATION PASSWORD 'Enmotech@2020';

注意:需要具有SYSADMIN REPLICATION权限

备库搭建

bin文件可以直接从主库复制过来,目录及权限与主库保持一致即可

基础备份
$ /opt/og/bin/gs_basebackup --pgdata=/opt/ogdata \
--host=MasterIP \
--port=6432 \
--username=repuser \
--password

备库配置

1.对称修改postgresql.conf里的replconninfo1,将localhost与remotehost值对调。
2.设置nodename
$ /opt/og/bin/gs_guc set -D /data/data_og \
-c "pgxc_node_name='og18_6432'"

启动备库

$ /opt/og/bin/gs_ctl start \
-D /data/data_og \
-M standby \
-l og_server.log &

查询状态

分别在主备机器执行上述查询,可看到对应的角色及状体即为正常。
$ /opt/og/bin/gs_ctl query \
-D /data/data_og

如下主库节点查询状态
HA state:
local_role : Primary
static_connections : 1
db_state : Normal
detail_information : Normal

如下备库节点查询状态
HA state:
local_role : Standby
static_connections : 1
db_state : Normal
detail_information : Normal

主备测试

数据读写测试

主备正常切换

只能在备库执行

$ /opt/og/bin/gs_ctl switchover \
-D /data/data_og

双主恢复

如果查询两个库都是主,则需要恢复

1.确定降级的备库,执行服务关闭操作。
$ /opt/og/bin/gs_ctl stop \
-D /data/data_og

2.使用build命令重建
$ /opt/og/bin/gs_ctl build \
-D /data/data_og \
-b incremental

这里先选择增量模式重建,如果增量模式失败再尝试全备方式

$ /opt/og/bin/gs_ctl build \
-D /data/data_og \
-b full

相关文章

Oracle如何使用授予和撤销权限的语法和示例
Awesome Project: 探索 MatrixOrigin 云原生分布式数据库
下载丨66页PDF,云和恩墨技术通讯(2024年7月刊)
社区版oceanbase安装
Oracle 导出CSV工具-sqluldr2
ETL数据集成丨快速将MySQL数据迁移至Doris数据库

发布评论