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

openGauss3.0.0企业版一主一备安装指南

原创 孙莹 2022-04-24
2901

openGauss3.0.0企业版一主一备安装指南

openGauss 3.0.0于2022年4月1日正式发布,本文基于openGauss 3.0.0 企业版在centos_x86_64操作系统上搭建一主一备测试环境,并将操作记录共享出来,希望能帮到有需要的小伙伴

准备软硬件安装环境

准备两台硬件环境:虚拟机4核心CPU,4GB内存,40G硬盘

检查CPU核心

cat /proc/cpuinfo | grep processor

检查内存大小

free -h

检查操作系统版本

cat /etc/centos-release

操作系统环境:CentOS7.6

下载地址:https://archive.kernel.org/centos-vault/7.6.1810/isos/x86_64/

以CentOS操作系统为例,主机信息如下表所示

主机名称 IP地址
node1 10.16.1.100
node2 10.16.1.101

修改/etc/hosts

检查主机名和IP地址是否配置正确,需要配置主机名和IP地址

hostname && ifconfig |grep broadcast|awk '{print $2}'

添加对应主机名和IP地址

echo "10.16.1.100 node1 ##openGauss OM IP Hosts Mapping" >>/etc/hosts echo "10.16.1.101 node2 ##openGauss OM IP Hosts Mapping" >>/etc/hosts echo -e "\n" >>/etc/hosts

关闭防火墙

停止firewall

systemctl stop firewalld.service

禁止firewall开机启动

systemctl disable firewalld.service

关闭SELINUX

sed -i 's/^SELINUX=.*/SELINUX=disabled/' /etc/selinux/config setenforce 0

设置字符集参数

cat>> /etc/profile<<EOF export LANG=en_US.UTF-8 EOF

设置时区和时间

rm -fr /etc/localtime ln -s /usr/share/zoneinfo/Asia/Shanghai /etc/localtime date -R hwclock

关闭swap交换内存

临时关闭swap

swapoff -a

修改分区表文件,删除swap mount信息

cp /etc/fstab /etc/fstab.bak sed -i '/swap/s/^/#/' /etc/fstab cat /etc/fstab|grep -v ^#|grep -v '^$'

设置网卡MTU值

对于X86,MTU值推荐1500,CentOS7.6默认不需要修改

ifconfig ens33 mtu 1500

关闭RemoveIPC[Only for openEulor]

在各数据库节点上,关闭RemoveIPC。CentOS操作系统无该参数,可以跳过该步骤。

sed -i '/^RemoveIPC/d' /etc/systemd/logind.conf sed -i '/^RemoveIPC/d' /usr/lib/systemd/system/systemd-logind.service echo "RemoveIPC=no" >> /etc/systemd/logind.conf echo "RemoveIPC=no" >> /usr/lib/systemd/system/systemd-logind.service systemctl daemon-reload systemctl restart systemd-logind

设置root用户远程登录

配置SSH服务(允许root登录,关闭Banner)

sed -i '/Banner/s/^/#/' /etc/ssh/sshd_config sed -i '/PermitRootLogin/s/^/#/' /etc/ssh/sshd_config echo -e "\n" >> /etc/ssh/sshd_config echo "Banner none " >> /etc/ssh/sshd_config echo "PermitRootLogin yes" >> /etc/ssh/sshd_config

重启服务使设置生效

systemctl restart sshd.service

配置操作系统参数

修改内核参数,并使其生效,注意执行完后可能会输出很多文件或目录不存在可以忽略重启后就正常了

cat >> /etc/sysctl.conf << EOF net.ipv4.tcp_max_tw_buckets = 10000 net.ipv4.tcp_tw_reuse = 1 net.ipv4.tcp_tw_recycle = 1 net.ipv4.tcp_keepalive_time = 30 net.ipv4.tcp_keepalive_probes = 9 net.ipv4.tcp_keepalive_intvl = 30 net.ipv4.tcp_retries1 = 5 net.ipv4.tcp_syn_retries = 5 net.ipv4.tcp_synack_retries = 5 net.sctp.path_max_retrans = 10 net.sctp.max_init_retransmits = 10 net.sctp.association_max_retrans = 10 net.sctp.hb_interval = 30000 net.ipv4.tcp_retries2 = 12 vm.overcommit_memory = 0 net.sctp.sndbuf_policy = 0 net.sctp.rcvbuf_policy = 0 net.sctp.sctp_mem = 94500000 915000000 927000000 net.sctp.sctp_rmem = 8192 250000 16777216 net.sctp.sctp_wmem = 8192 250000 16777216 net.ipv4.tcp_rmem = 8192 250000 16777216 net.ipv4.tcp_wmem = 8192 250000 16777216 net.core.wmem_max = 21299200 net.core.rmem_max = 21299200 net.core.wmem_default = 21299200 net.core.rmem_default = 21299200 net.ipv4.ip_local_port_range = 26000 65535 kernel.sem = 250 6400000 1000 25600 vm.min_free_kbytes = 419430 ##suggest to set as physical memory * 5% net.core.somaxconn = 65535 net.ipv4.tcp_syncookies = 1 net.sctp.addip_enable = 0 net.core.netdev_max_backlog = 65535 net.ipv4.tcp_max_syn_backlog = 65535 net.ipv4.tcp_fin_timeout = 60 kernel.shmall = 1152921504606846720 kernel.shmmax = 18446744073709551615 net.ipv4.tcp_sack = 1 net.ipv4.tcp_timestamps = 1 vm.extfrag_threshold = 500 vm.overcommit_ratio = 90 net.ipv4.ip_local_reserved_ports = 20050-20057,26000-26007 net.sctp.sctp_mem = 94500000 915000000 927000000 net.sctp.sctp_rmem = 8192 250000 16777216 net.sctp.sctp_wmem = 8192 250000 16777216 EOF sysctl -p

修改操作系统资源限制

配置文件系统参数、文件句柄设置、系统支持的最大进程数设置、网卡参数配置

echo "* soft stack 3072" >> /etc/security/limits.conf echo "* hard stack 3072" >> /etc/security/limits.conf echo "* soft nofile 1000000" >> /etc/security/limits.conf echo "* hard nofile 1000000" >> /etc/security/limits.conf echo "* soft nproc unlimited" >> /etc/security/limits.d/90-nproc.conf tail -n 4 /etc/security/limits.conf tail -n 1 /etc/security/limits.d/90-nproc.conf

关闭透明页[Only for CentOS]

临时关闭透明页

echo never > /sys/kernel/mm/transparent_hugepage/enabled echo never > /sys/kernel/mm/transparent_hugepage/defrag

编译grub,内核层面关闭透明页

sed -i '/^GRUB_CMDLINE_LINUX/d' /etc/default/grub echo "GRUB_CMDLINE_LINUX=\"rhgb quiet transparent_hugepage=never\"" >> /etc/default/grub grub2-mkconfig -o /boot/grub2/grub.cfg

创建用户以及组(可选)

创建omm用户以及dbgrp组

groupadd dbgrp useradd -g dbgrp -m omm echo omm | passwd --stdin omm

手工建立互信(可选)

生成密钥

mkdir ~/.ssh chmod 700 ~/.ssh ssh-keygen -t rsa ssh-keygen -t dsa

生成本机授权文件

cat ~/.ssh/id_rsa.pub >> ./.ssh/authorized_keys cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys

收集公钥互信文件分发

ssh node2 cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys ssh node2 cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys scp ~/.ssh/authorized_keys node2:~/.ssh/authorized_keys exec /usr/bin/ssh-agent $SHELL /usr/bin/ssh-add

测试互信

ssh node1 date ssh node2 date

安装相关软件包和python3.6.x

配置华为YUM源

mkdir /etc/yum.repos.d/bak mv /etc/yum.repos.d/*.repo /etc/yum.repos.d/bak/ wget -O /etc/yum.repos.d/CentOS-Base.repo \ https://repo.huaweicloud.com/repository/conf/CentOS-7-reg.repo yum clean all

使用华为YUM源安装依赖的软件包,注意官网文档里要求的依赖不全,最好安装下面所有的软件包

yum install -y lksctp* java-1.8.0-openjdk* readline-devel psmisc bzip2 python3 python3-devel \ libaio-devel flex bison ncurses-devel glibc-devel patch redhat-lsb-core expect

准备安装介质

创建安装包的存放目录

mkdir -p /opt/software/openGauss chmod 755 -R /opt/software

下载安装文件

cd /opt/software/openGauss wget https://opengauss.obs.cn-south-1.myhuaweicloud.com/3.0.0/x86/openGauss-3.0.0-CentOS-64bit-all.tar.gz

解压安装文件

tar -zxvf openGauss-3.0.0-CentOS-64bit-all.tar.gz tar -zxvf openGauss-3.0.0-CentOS-64bit-om.tar.gz

创建XML文件

下面是一主一备的xml

cat >> /opt/software/openGauss/cluster_config.xml << EOF <?xml version="1.0" encoding="UTF-8"?> <ROOT> <!-- opengauss整体信息 --> <CLUSTER> <!-- 数据库名称 --> <PARAM name="clusterName" value="dbCluster" /> <!-- 数据库节点名称(hostname) --> <PARAM name="nodeNames" value="node1,node2" /> <!-- 数据库安装目录--> <PARAM name="gaussdbAppPath" value="/opt/huawei/install/app" /> <!-- 日志目录--> <PARAM name="gaussdbLogPath" value="/var/log/omm" /> <!-- 临时文件目录--> <PARAM name="tmpMppdbPath" value="/opt/huawei/tmp"/> <!-- 数据库工具目录--> <PARAM name="gaussdbToolPath" value="/opt/huawei/install/om" /> <!-- 数据库core文件目录--> <PARAM name="corePath" value="/opt/huawei/corefile"/> <!-- 节点IP,与数据库节点名称列表一一对应 --> <PARAM name="backIp1s" value="10.16.1.100,10.16.1.101"/> </CLUSTER> <!-- 每台服务器上的节点部署信息 --> <DEVICELIST> <!-- 节点1上的部署信息 --> <DEVICE sn="node1"> <!-- 节点1的主机名称 --> <PARAM name="name" value="node1"/> <!-- 节点1所在的AZ及AZ优先级 --> <PARAM name="azName" value="AZ1"/> <PARAM name="azPriority" value="1"/> <!-- 节点1的IP,如果服务器只有一个网卡可用,将backIP1和sshIP1配置成同一个IP --> <PARAM name="backIp1" value="10.16.1.100"/> <PARAM name="sshIp1" value="10.16.1.100"/> <!--dn--> <PARAM name="dataNum" value="1"/> <PARAM name="dataPortBase" value="26000"/> <PARAM name="dataNode1" value="/opt/huawei/install/data/dn,node2,/opt/huawei/install/data/dn"/> <PARAM name="dataNode1_syncNum" value="0"/> </DEVICE> <!-- 节点2上的节点部署信息,其中“name”的值配置为主机名称 --> <DEVICE sn="node2"> <!-- 节点2的主机名称 --> <PARAM name="name" value="node2"/> <!-- 节点2所在的AZ及AZ优先级 --> <PARAM name="azName" value="AZ1"/> <PARAM name="azPriority" value="1"/> <!-- 节点2的IP,如果服务器只有一个网卡可用,将backIP1和sshIP1配置成同一个IP --> <PARAM name="backIp1" value="10.16.1.101"/> <PARAM name="sshIp1" value="10.16.1.101"/> </DEVICE> </DEVICELIST> </ROOT> EOF chmod +x /opt/software/openGauss/cluster_config.xml

配置环境变量

cat>> /etc/profile << EOF export LD_LIBRARY_PATH=/opt/software/openGauss/script/gspylib/clib:$LD_LIBRARY_PATH EOF

重启两台主机

init 6

执行交互模式前置脚本

在执行过程中自动创建操作系统root用户互信和omm用户互信

cd /opt/software/openGauss/script/ ./gs_preinstall -U omm -G dbgrp -X /opt/software/openGauss/cluster_config.xml

执行安装

使用root执行,给安装目录授权

cd /opt/software/openGauss/script chmod -R 775 /opt/software/openGauss/script chown -R omm:dbgrp /opt/software/openGauss/script

自定义内存参数安装

su - omm cd /opt/software/openGauss/script/ ./gs_install -X /opt/software/openGauss/cluster_config.xml \ --gsinit-parameter="--encoding=UTF8" \ --dn-guc="max_connections=1000" \ --dn-guc="max_process_memory=2GB" \ --dn-guc="shared_buffers=128MB" \ --dn-guc="bulk_write_ring_size=128MB" \ --dn-guc="cstore_buffers=16MB"

安装验证

以omm用户身份登录,命令检查数据库状态是否有两个节点P Primary Normal和S Standby Normal状态

su - omm gs_om -t status --detail

使用gsql工具登录

gsql -d postgres -p 26000 -r

在主库查询openGauss版本,创建表t1插入数据,在备库查询验证是否同步

[omm@node1 ~]$ gsql -d postgres -p 26000 -r gsql ((openGauss 3.0.0 build 02c14696) compiled at 2022-04-01 18:12:34 commit 0 last mr ) Non-SSL connection (SSL connection is recommended when requiring high-security) Type "help" for help. openGauss=# select version(); version ------------------------------------------------------------------------------------------------------------------------------------------------------ (openGauss 3.0.0 build 02c14696) compiled at 2022-04-01 18:12:34 commit 0 last mr on x86_64-unknown-linux-gnu, compiled by g++ (GCC) 7.3.0, 64-bit (1 row) openGauss=# create table t1 as select generate_series(1,10) id; INSERT 0 10 openGauss=# select * from t1; id ---- 1 2 3 4 5 6 7 8 9 10 (10 rows) openGauss=# \q [omm@node1 ~]$ [root@node2 ~]# su - omm Last login: Mon Apr 25 20:22:27 CST 2022 [omm@node2 ~]$ gsql -d postgres -p 26000 -r gsql ((openGauss 3.0.0 build 02c14696) compiled at 2022-04-01 18:12:34 commit 0 last mr ) Non-SSL connection (SSL connection is recommended when requiring high-security) Type "help" for help. openGauss=# select * from t1; id ---- 1 2 3 4 5 6 7 8 9 10 (10 rows) openGauss=# \q [omm@node2 ~]$
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论