原作者:Together
- 一.环境说明
- 二.环境准备
- 2.1 关闭selinux
- 2.2关闭防火墙
- 2.3关闭透明大页
- 2.4数据库安装包依赖
- 2.5安装python3
- 三、安装Mogdb数据库软件
- 3.1 创建数据库软件目录
- 3.2创建 XML 配置文件
- 3.3预安装
- 3.4切换用户执行安装
- 3.5登陆验证
- 3.6配置pg_hba.conf
- 3.7修改数据库password_encryption_type类型
- 3.8配置高可用
- 3.9环境配置要求
- 四、数据库配置要求
- 4.1安装mogha
- 4.2配置文件
- 4.3启动
- 参考文档:
一.环境说明
主节点:192.168.122.112
从节点:192.168.122.113
OS:centos7.6
二.环境准备
2.1 关闭selinux
setenforce 0
sed -i.bak "s/SELINUX=enforcing/SELINUX=disabled/g" /etc/selinux/config
2.2关闭防火墙
systemctl disable firewalld.service
systemctl stop firewalld.service
2.3关闭透明大页
echo never > /sys/kernel/mm/transparent_hugepage/enabled
2.4数据库安装包依赖
yum -y install libaio-devel flex bison ncurses-devel glibc-devel patch openeuler-lsb-core readline-devel
2.5安装python3
mkdir -p /usr/local/python3
tar -zxvf Python-3.6.5.tgz
cd Python-3.6.5
./configure --prefix=/usr/local/python3 --enable-shared CFLAGS=-fPIC && make && make install
ln -s /usr/local/python3/bin/python3 /usr/bin/python3
ln -s /usr/local/python3/bin/pip3 /usr/bin/pip3
cp libpython3.6m.so.1.0 /usr/lib64
三、安装Mogdb数据库软件
3.1 创建数据库软件目录
mkdir -p /opt/software/mogdb
chmod 755 -R /opt/software
软件目录在/opt/software/mogdb
tar -xvf MogDB-2.0.1-Centos-x86_64.tar
tar -xvf MogDB-2.0.1-Centos-64bit-om.tar.gz
3.2创建 XML 配置文件
如果是验证安装测试使用,建议修改其中的 ip 地址和 hostname,标红加粗部分,正式环境安装需要根据实际情况修改配置文件中所有的文件目录
<?xml version="1.0" encoding="UTF-8"?>
<ROOT>
<!-- MogDB整体信息 -->
<CLUSTER>
<PARAM name="clusterName" value="dbCluster" />
<PARAM name="nodeNames" value="mogdb1,mogdb2" />
<PARAM name="backIp1s" value="192.168.122.112,192.168.122.113"/>
<PARAM name="gaussdbAppPath" value="/opt/mogdb/app" />
<PARAM name="gaussdbLogPath" value="/var/log/mogdb" />
<PARAM name="gaussdbToolPath" value="/opt/mogdb/tools" />
<PARAM name="corePath" value="/opt/mogdb/corefile"/>
<PARAM name="clusterType" value="single-inst"/>
</CLUSTER>
<!-- 每台服务器上的节点部署信息 -->
<DEVICELIST>
<!-- node1节点信息-->
<DEVICE sn="1000001">
<PARAM name="name" value="mogdb1"/>
<PARAM name="azName" value="AZ1"/>
<PARAM name="azPriority" value="1"/>
<!-- 如果服务器只有一个网卡可用,将backIP1和sshIP1配置成同一个IP -->
<PARAM name="backIp1" value="192.168.122.112"/>
<PARAM name="sshIp1" value="192.168.122.112"/>
<!--dbnode-->
<PARAM name="dataNum" value="1"/>
<PARAM name="dataPortBase" value="26000"/>
<PARAM name="dataNode1" value="/mogdb/data/db1,mogdb2,/mogdb/data/db1"/>
</DEVICE>
<!-- node2节点信息 -->
<DEVICE sn="1000002">
<PARAM name="name" value="mogdb2"/>
<PARAM name="azName" value="AZ1"/>
<PARAM name="azPriority" value="1"/>
<!-- 如果服务器只有一个网卡可用,将backIP1和sshIP1配置成同一个IP -->
<PARAM name="backIp1" value="192.168.122.113"/>
<PARAM name="sshIp1" value="192.168.122.113"/>
</DEVICE>
</DEVICELIST>
</ROOT>

3.3预安装
在安装过程中请输入 root,omm 两个用户的密码
/opt/software/mogdb/script/gs_preinstall -U omm -G dbgrp -X /opt/software/mogdb/cluster_config.xml
3.4切换用户执行安装
su - omm
gs_install -X /opt/software/mogdb/cluster_config.xml
3.5登陆验证
[omm@mog ~]$ gsql -r -p26000 -dpostgres
gsql ((MogDB 2.0.1 build b5f25b20) compiled at 2022-03-21 14:42:30 commit 0 last mr )
Non-SSL connection (SSL connection is recommended when requiring high-security)
Type "help" for help.
3.6配置pg_hba.conf
在pg的hba中的ipv4行中加入以下行:
host all all 0.0.0.0/0 md5
3.7修改数据库password_encryption_type类型
openGauss=# alter system set password_encryption_type = 1;
ALTER SYSTEM SET
3.8配置高可用
组件下载
如无特殊说明,请在所有节点执行,执行用户为 root
下载高可用组件 mogha-2.3.0-CentOS-x86_64.tar.gz
下 载 地 址 : https://docs.mogdb.io/zh/mogha/v2.3/release-notes/
3.9环境配置要求
由于 MogHA 需要自动挂虚拟 IP 的操作,内部需要通过 ifconfig 指令来操作网卡,MogHA 是通过数据库安装用户进行启动的,要想执行网卡操作就需要 sudo 权限,在安装期间脚本会检查 /etc/sudoers 配置中是否配置了运行用户的权限,如果存在就跳过配置,如果没有, 会尝试自动的将 omm 用户添加到 /etc/sudoers 中,并赋予 ifconfig的权限。
所以建议在部署 MogHA 服务之前,先检查一下 /etc/sudoers 中是否成功配置了 运行用户的 sudo权限,配置参考如下:
追加下列 1 行到文件末尾
vim /etc/sudoers
omm ALL=(ALL) NOPASSWD: /usr/sbin/ifconfig
四、数据库配置要求
数据库要求至少为一主一备,数据库模式为同步。postgresql.conf 中参数要求如下:
synchronous_commit = on
4.1安装mogha
建议存放在用户的家目录下,如 omm 用户,建议存放在/home/omm 目录下,! 注意:安装过程请使用 root 用户进行操作,涉及到给数据库安装用户sudo权限以及注册系统服务。
cd /opt/omm
tar -zxf mogha-2.2.2-x86_64.tar.gz
# 进入刚刚解压后的文件夹
cd /home/omm/mogha
# 执行安装脚本
sudo ./install.sh omm /mogdb/data/db1
4.2配置文件
安装完成后,会生成一个 node.conf 文件,修改此配置文件中host1、host2和zone1部分
# docs: https://docs.mogdb.io/zh/mogha/v2.3/overview
[config]
# 数据库端口db_port=26000
# 数据库的操作系统用户,通常为 omm db_user=omm
# 数据库的数据目录db_datadir=/mogdb/data/db1
# 本地主库元数据存储路径
# primary_info=/root/mogha/primary_info
# 本地备库元数据存储路径
# standby_info=/root/mogha/standby_info
# 是否使用 lite 模式,可选值:True / False
lite_mode=True
# HA 节点之间通信端口,如果有防火墙,需要配置互通agent_port=8081
# [2.3.0 新增]
# HA 节点间 HTTP API 请求超时时间(秒)
# http_req_timeout=3
# 心跳间隔时间
# heartbeat_interval=3
# 主库丢失的探测时间
# primary_lost_timeout=10
# 主库的孤单时间
# primary_lonely_timeout=10
# 双主确认超时时间
# double_primary_timeout=10
# 本地元数据文件类型,支持 json/bin
# meta_file_type=json
# 是否为数据库实例进程限制 cpu # taskset=False
# 设置输出的日志格式
#logger_format=%(asctime)s %(levelname)s[%(filename)s:%(lineno)d]:%(message)s
# [2.3.0 新增]设置日志存储目录# log_dir=/root/mogha
# [2.3.0 新增] 日志文件最大字节数(接近该值时,将发生日志滚动) # 支持的单位:KB, MB, GB (忽略大小写)
# log_max_size=512MB
# [2.3.0 新增] 日志保留的文件个数# log_backup_count=10
# 设置除了主备相关的机器,允许可以访问到 web 接口的 IP 列表, 多个 IP 时逗号分隔
# allow_ips=
# [2.1 新增] 主实例进程未启动时,是否需要 HA 进行拉起或切换
# 搭配 primary_down_handle_method 使用
#handle_down_primary=True
# [2.1 新增] 备库进程未启动时,是否需要 HA 进行拉起
# handle_down_standby=True
# [2.1 新增] 主库实例进程未启动时,如何处理# 支持两种处理方式:
# - restart: 尝试重启,尝试次数在 restart_strategy 参数中设定
# - failover: 直接切换
# primary_down_handle_method=restart
# [2.1 新增] 重启实例最大尝试条件: times/minutes
# 例如: 10/3 最多尝试 10 次或者 3 分钟,任何一个条件先满足就不再尝试。
# restart_strategy=10/3
# [2.1.1 新增] UCE(uncorrectederror)故障感知功能,默认开启
# uce_error_detection=True
# [2.1.1 新增] UCE 检查时,读取最后多少行日志数据进行判断
# uce_detect_max_lines=200
# [2.2.1 新增]
# debug_mode=False
# (选填) 元数据库的连接参数(openGauss 类数据库)
# [meta]
#ha_name=
#HA集群的名称,全局唯一,禁止两套HA集群共用一个名字
#host=
#机器IP
# port=
# 端口
# db=
# 数据库名
# user=
# 用户名
# password=
# 密码
# connect_timeout=3
# 连接超时,单位秒
# host1-9,每个代表一个机器(最多支持 1 主 8 备)
# (lite 模式需仅配置 host1 和 host2 即可,)
# - ip: 业务 IP
# - heartbeat_ips: 心跳网络 ip,允许配置多个心跳网络,以逗号隔开
[host1]
ip=192.168.122.112
heartbeat_ips=
[host2]
ip=192.168.122.113
heartbeat_ips=
# [host3]
# ip=
# heartbeat_ips=
# [host4]
# ip=
# heartbeat_ips=
# [host5]
# ip=
# heartbeat_ips=
# [host6]
# ip=
# heartbeat_ips=
# [host7]
# ip=
# heartbeat_ips=
# [host8]
# ip=
# heartbeat_ips=
# [host9]
# ip=
# heartbeat_ips=
# zone1~3 用于定义机房,不同机房配置独立虚拟 IP,
# 切换不会切过去,作为异地保留项目
# - vip: 机房虚拟 IP (没有不填)
# - hosts: 本机房内机器列表, 填写机器在配置文件中对应的配置模块名 host1~9, 示例:host1,host2
# - ping_list: 用于检查网络是否通畅的仲裁节点,例如网关,支持填写多个 IP (逗号分隔)
# - cascades: 机房内的级联机器列表 (配置方式同 hosts, 没有不填)
# - arping: (选填) 机房的 arping 地址
[zone1]
## 该 VIP 为虚拟 ip 地址,请根据实际情况填写
vip=
hosts=host1,host2
ping_list=
cascades=
arping=
# [zone2] # vip=
# hosts=
# ping_list= # cascades= #arping=
# [zone3] # vip=
# hosts=
#ping_list=
# cascades=
#arping=
4.3启动
systemctl start mogha.service
mogdb1:
[root@mogdb1 ~]# systemctl status mogha.service
● mogha.service - MogHA High Available Service
Loaded: loaded (/usr/lib/systemd/system/mogha.service; enabled; vendor preset: disabled)
Active: active (running) since Tue 2022-10-18 15:01:21 CST; 6 days ago
Docs: https://docs.mogdb.io/zh/mogha/v2.0/installation-and-depolyment
Main PID: 7594 (mogha)
Tasks: 14
Memory: 51.0M
CGroup: /system.slice/mogha.service
├─7594 /home/omm/mogha/mogha -c /home/omm/mogha/node.conf
├─7599 mogha: watchdog
├─7600 mogha: http-server
└─7601 mogha: heartbeat
Oct 18 15:01:21 mogdb1 systemd[1]: [/usr/lib/systemd/system/mogha.service:5] Unknown lvalue 'StartLimitIntervalSec' in section 'Unit'
Oct 18 15:01:21 mogdb1 systemd[1]: Started MogHA High Available Service.
Oct 18 15:01:21 mogdb1 mogha[7594]: MogHA Version: Version: 2.2.2
Oct 18 15:01:21 mogdb1 mogha[7594]: GitHash: 35f192e
Oct 18 15:01:21 mogdb1 mogha[7594]: config loaded successfully
Oct 18 17:05:25 mogdb1 systemd[1]: [/usr/lib/systemd/system/mogha.service:5] Unknown lvalue 'StartLimitIntervalSec' in section 'Unit'
mogdb2:
[root@mogdb2 ~]# systemctl status mogha.service
● mogha.service - MogHA High Available Service
Loaded: loaded (/usr/lib/systemd/system/mogha.service; enabled; vendor preset: disabled)
Active: active (running) since Tue 2022-10-18 14:43:38 CST; 6 days ago
Docs: https://docs.mogdb.io/zh/mogha/v2.0/installation-and-depolyment
Main PID: 86194 (mogha)
Tasks: 14
Memory: 51.1M
CGroup: /system.slice/mogha.service
├─86194 /home/omm/mogha/mogha -c /home/omm/mogha/node.conf
├─86197 mogha: watchdog
├─86198 mogha: http-server
└─86199 mogha: heartbeat
Oct 18 14:43:38 mogdb2 systemd[1]: mogha.service: main process exited, code=exited, status=1/FAILURE
Oct 18 14:43:38 mogdb2 systemd[1]: Stopped MogHA High Available Service.
Oct 18 14:43:38 mogdb2 systemd[1]: Unit mogha.service entered failed state.
Oct 18 14:43:38 mogdb2 systemd[1]: mogha.service failed.
Oct 18 14:43:38 mogdb2 systemd[1]: Started MogHA High Available Service.
Oct 18 14:43:39 mogdb2 mogha[86194]: MogHA Version: Version: 2.2.2
Oct 18 14:43:39 mogdb2 mogha[86194]: GitHash: 35f192e
Oct 18 14:43:39 mogdb2 mogha[86194]: config loaded successfully
Oct 18 17:05:23 mogdb2 systemd[1]: [/usr/lib/systemd/system/mogha.service:5] Unknown lvalue 'StartLimitIntervalSec' in section 'Unit'
参考文档:
https://docs.mogdb.io/zh/mogha/v2.3/overview




