暂无图片
暂无图片
4
暂无图片
暂无图片
暂无图片

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

原创 多米爸比 2020-07-13
3586

上一篇记录了使用官方脚本安装过程中遇到的一些问题及解决方法,链接如下: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 
最后修改时间:2021-05-25 10:56:32
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

文章被以下合辑收录

评论