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

Mogdb v2.0.1 集群扩容

由迪 2024-03-13
180

原作者:杨金福

适用范围

Mogdb v2.0.1 集群从1主1备,扩容为1主2备.

背景概述

某客户原部署为1主1备mogdb V2.0.1集群,因两个节点均在可用区1,不满足客户公司的容灾要求,客户要求在可用2增加一个备节点。

解决方案

一、节点3安装准备

1.软硬件环境要求

准备一台与原环境的备节点软硬件一致的服务器

2.操作系统配置

2.1 关闭防火墙,selinux

解释## 关闭防火墙:
systemctl stop firewalld

## 禁用开机启动:
systemctl disable firewalld

## 查看firewall防火墙状态:
systemctl status firewalld

2.2 禁用selinux

解释## 永久禁用
sed -i 's/^SELINUX=.*/SELINUX=disabled/' /etc/selinux/config
cat /etc/selinux/config|grep SELINUX

## 重启
reboot 

2.3 设置字符集参数

解释## 将各数据库节点的字符集设置为相同的字符集。
cat>> /etc/profile<<EOF
export LANG=en_US.UTF-8
EOF

## 查看
cat /etc/profile | grep LANG
确保与原集群节点的字符集一致

2.4 修改主机名(可选)

解释## 查看
hostname

## 修改主机名为mogdb-node3
vi /etc/hostname

## 重启
reboot

2.5 设置时区和时间(可选)

解释## 查看
timedatectl
如果与原集群主机不一致,则修改;一致则跳过
rm -fr /etc/localtime
ln -s /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
ll /etc/localtime

2.6 关闭swap交换内存(可选)

解释## 关闭swap交换内存,修改分区表文件,删除SWAP mount信息
cp /etc/fstab /etc/fstab.bak
sed -i '/swap/s/^/#/' /etc/fstab
cat /etc/fstab|grep -v ^#|grep -v '^$'

ps:内存较大时关闭交换内存(建议32G以上)

2.7 设置网卡MTU值(可选)

解释## 除非网卡支持,否则不建议修改
## 使用如下命令将各数据库节点的网卡MTU值设置为相同大小。
对于X86,MTU值推荐1500;对于ARM,MTU值推荐8192。
## 查看原节点1或节点2的mtu值
ifconfig -a 
## 如需要修改,参照以下命令
ifconfig 网卡编号 mtu值

2.8 配置NTPD

解释## 节点3安装ntpdate(可参照节点2设置定时任务)
yum install -y ntpdate

## 查看当前时间
date

## 同步时间
ntpdate 192.168.115.83

## 设置定时任务
crontab -e  #添加定时任务(每10分钟同步一次)
*/10 * * * * /usr/sbin/ntpdate 192.168.115.83

2.9 允许root用户远程SSH

解释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
cat /etc/ssh/sshd_config |grep -v ^#|grep -E 'PermitRootLogin|Banner'
systemctl restart sshd

2.10 关闭透明大页

解释## 关闭透明大页可以减少宿主机操作系统的开销,以便获得更稳定的性能
cat /sys/kernel/mm/transparent_hugepage/enabled

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

cat /sys/kernel/mm/transparent_hugepage/enabled

2.11 配置操作系统参数(可选)

解释## 修改内核参数

cat >> /etc/sysctl.conf << EOF

net.ipv4.tcp_retries1 = 5
net.ipv4.tcp_syn_retries = 5
net.ipv4.tcp_fin_timeout = 60
 
EOF

## 重启
reboot

2.12 安装依赖包

解释yum install -y libaio-devel  flex  bison ncurses-devel glibc-devel  patch   readline-devel  redhat-lsb-core  openssh expect openssl-devel
yum install -y gcc*
yum install -y java-1.8.0-openjdk* psmisc bzip2

yum install -y bzip2 libaio-devel flex bison ncurses-devel glibc-devel libxml2-devel patch redhat-lsb-core unzip gcc gcc-c++ perl openssl-devel libffi-devel libtool zlib-devel

二、Python3安装

1.解压并配置

解释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

2.安装

make
make install

3.创建软连接

解释ln -s /usr/local/python3/bin/python3 /usr/bin/python3
ln -s /usr/local/python3/bin/pip3 /usr/bin/pip3
find / -name libpython3.6m.so.1.0
cp libpython3.6m.so.1.0 /usr/lib64

4.查看版本

python3 -V

三、 备份MogDB主库

1.备份主库(在主库节点上操作)

解释mkdir -p /mogdb/data/db1_bak
chown -R omm:dbgrp /mogdb/data/db1_bak
su - omm
gs_basebackup -D /mogdb/data/db1_bak -h 192.168.115.83 -p 26000 -Fplain -Xstream

四、 扩容MogDB

1.添加主机

节点3:vi /etc/hosts

解释192.168.115.83 mogdb-node1
192.168.115.84 mogdb-node2
192.168.115.85 mogdb-node3
## 查看
cat /etc/hosts
## 有些环境对/etc/hosts文件配置了127.0.0.1的条目,会影响数据库的正常安装,因此安装MogDB数据库时需要将如下127.0.0.1配置条目注释,安装完数据库之后再打开

vi /etc/hosts
#127.0.0.1  XXXXXX

原节点1和节点2:vi /etc/hosts

解释192.168.115.85 mogdb-node3
## 查看
cat /etc/hosts

## 有些环境对/etc/hosts文件配置了127.0.0.1的条目,会影响数据库的正常安装,因此安装MogDB数据库时需要将如下127.0.0.1配置条目注释,安装完数据库之后再打开

vi /etc/hosts
#127.0.0.1  XXXXXX

2.建立用户

原节点1和节点2查看omm用户

id omm
uid=1000(omm) gid=1000(dbgrp) groups=1000(dbgrp)

原节点3执行创建组和用户

groupadd -g 1000 dbgrp
useradd -u 1000 -g dbgrp omm
passwd omm     ##密码如:omm123

3.建立互信

解释节点3 root执行:
ssh-keygen -t rsa 
ssh-copy-id -i .ssh/id_rsa.pub root@mogdb-node1
ssh-copy-id -i .ssh/id_rsa.pub root@mogdb-node2
ssh-copy-id -i .ssh/id_rsa.pub root@mogdb-node3
ssh-copy-id -i .ssh/id_rsa.pub root@192.168.115.83
ssh-copy-id -i .ssh/id_rsa.pub root@192.168.115.84
ssh-copy-id -i .ssh/id_rsa.pub root@192.168.115.85
原节点1和节点2 root执行:
ssh-copy-id -i .ssh/id_rsa.pub root@mogdb-node3
ssh-copy-id -i .ssh/id_rsa.pub root@192.168.115.85
解释节点3 omm执行:
su - omm
ssh-keygen -t rsa 
ssh-copy-id -i .ssh/id_rsa.pub omm@mogdb-node1
ssh-copy-id -i .ssh/id_rsa.pub omm@mogdb-node2
ssh-copy-id -i .ssh/id_rsa.pub omm@mogdb-node3
ssh-copy-id -i .ssh/id_rsa.pub omm@192.168.115.83
ssh-copy-id -i .ssh/id_rsa.pub omm@192.168.115.84
ssh-copy-id -i .ssh/id_rsa.pub omm@192.168.115.85
原节点1和节点2 omm执行:
su - omm
ssh-copy-id -i .ssh/id_rsa.pub omm@mogdb-node3
ssh-copy-id -i .ssh/id_rsa.pub omm@192.168.115.85

4.停业务系统并执行检查点

解释su - omm
gsql -d postgres -p 26000 -r
checkpoint;
checkpoint;
checkpoint;
\q

5.创建新clusterconfig.xml文件

解释cd /opt/software/mogdb/
cp clusterconfig.xml clusterconfig.xml.bf
vi clusterconfig.xml

--新增补充节点3信息

6.clusterconfig.xml示例

解释<?xml version="1.0" encoding="UTF-8"?> 
<ROOT> 
    <!-- MogDB整体信息 --> 
    <CLUSTER> 
        <PARAM name="clusterName" value="dbCluster" /> 
        <PARAM name="nodeNames" value="node1,node2,node3" /> 
        <PARAM name="backIp1s" value="192.168.0.11,192.168.0.12, 192.168.0.13"/> 
        <PARAM name="gaussdbAppPath" value="/opt/mogdb/app" /> 
        <PARAM name="gaussdbLogPath" value="/var/log/mogdb" /> 
        <PARAM name="gaussdbToolPath" value="/opt/enmo/wisequery" /> 
        <PARAM name="corePath" value="/opt/mogdb/corefile"/> 
        <PARAM name="clusterType" value="single-inst"/> 
    </CLUSTER> 
    <!-- 每台服务器上的节点部署信息 --> 
    <DEVICELIST> 
        <!-- node1上的节点部署信息 --> 
        <DEVICE sn="1000001"> 
            <PARAM name="name" value="node1"/> 
            <PARAM name="azName" value="AZ1"/> 
            <PARAM name="azPriority" value="1"/> 
            <!-- 如果服务器只有一个网卡可用,将backIP1和sshIP1配置成同一个IP --> 
            <PARAM name="backIp1" value="192.168.0.11"/> 
            <PARAM name="sshIp1" value="192.168.0.11"/> 
             
	    <!--dbnode--> 
	    <PARAM name="dataNum" value="1"/> 
	    <PARAM name="dataPortBase" value="26000"/> 
	    <PARAM name="dataNode1" value="/mogdb/data/db1,node2,/mogdb/data/db1, node3,/mogdb/data/db1"/> 
        </DEVICE> 
 
        <!-- node2上的节点部署信息,其中“name”的值配置为主机名称 --> 
        <DEVICE sn="1000002"> 
            <PARAM name="name" value="node2"/> 
            <PARAM name="azName" value="AZ1"/> 
            <PARAM name="azPriority" value="1"/> 
            <!-- 如果服务器只有一个网卡可用,将backIP1和sshIP1配置成同一个IP --> 
            <PARAM name="backIp1" value="192.168.0.12"/> 
            <PARAM name="sshIp1" value="192.168.0.12"/> 
	</DEVICE> 
<!—node3上的节点部署信息,其中“name”的值配置为主机名称 --> 
        <DEVICE sn="1000002"> 
            <PARAM name="name" value="node3"/> 
            <PARAM name="azName" value="AZ1"/> 
            <PARAM name="azPriority" value="1"/> 
            <!-- 如果服务器只有一个网卡可用,将backIP1和sshIP1配置成同一个IP --> 
            <PARAM name="backIp1" value="192.168.0.13"/> 
            <PARAM name="sshIp1" value="192.168.0.13"/> 
	</DEVICE> 
    </DEVICELIST> 
</ROOT>

7.检查集群状态

解释##节点1上检查集群状态
su - omm
gs_om -t status 
gs_om -t status --detail
gs_om -t status --all
gs_om -t refreshconf

8.集群扩容

解释##在集群第一个节点root用户下执行

cd /opt/software/mogdb/script/impl/expansion
vi ExpansionImpl.py
--将第921、933 行中的 gaussdb 改为 mogdb

cd /opt/software/mogdb/script
source /home/omm/.bashrc
./gs_expansion -U omm -G dbgrp -X /opt/software/mogdb/clusterconfig.xml -h 192.168.115.85

9.检查环境变量设置

解释##检查原节点1和节点2的环境变量
more /etc/profile
more /home/omm/.bash_profile
more /home/omm/.bashrc
more /etc/bashrc
注:通常在/etc/profile和/home/omm/.bashrc有自定义环境变量

##对节点3添加环境变量,与原节点1同步,如:
cat>> /etc/profile<<EOF
export LD_LIBRARY_PATH=/opt/software/mogdb/script/gspylib/clib:$LD_LIBRARY_PATH
export PATH=/root/gauss_om/omm/script:$PATH
EOF

source  /etc/profile
echo $LD_LIBRARY_PATH

##恢复前面注释掉的127.0.0.1条目
vi /etc/hosts
127.0.0.1  XXXXXX

10.登陆和验证

解释su -omm
gsql -d postgres -p26000 -r

show server_version;
SELECT version();
\q

gs_om -t status 
gs_om -t status --detail
gs_om -t status --all

11.更改同步节点

解释默认备库为异步,如果想配置同步需在主库的vi postgresql.conf做如下配置。
synchronous_standby_names = '*' 
--重启集群
gs_om -t restart
gs_om -t status --all
--检查同步
su -omm
gsql -d postgres -p26000 -r
select * from pg_stat_replication;

参考文档

https://support.enmotech.com/article/history/5065

https://docs.mogdb.io/zh/mogdb/v5.0/gs_expansion粗体

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

文章被以下合辑收录

评论