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

MogHA安装

由迪 2023-12-21
155

原作者: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>

image.png

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

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论