配置部署

部署前提

配置 配置要求
系统环境, Linux环境  
防火墙状态, 关闭防火墙  
服务器台数, 两台服务器  
网络状态, 有一个能ping通的共同的网关  
仲裁盘, 至少一块能同时访问的仲裁盘(小于1G)  
共享存储盘, 至少一块共享存储盘  

部署流程

前提:Linux环境下的两台主机,部署流程如下:
1) 配置服务器
2) 配置仲裁盘
3) 配置共享存储盘
4) 安装数据库及创建实例
5) 在两台服务器上安装HA服务并进行相关参数设置
6) 运行测试

部署示例

通过设备名称挂载模式

环境要求

机器 网络名称 IP 浮动ip 网关 仲裁盘 共享盘
HA1 ens33 192.168.11.133 192.168.11.11 192.168.11.2 /dev/sdb1 /dev/sdb2
HA2 ens33 192.168.11.134

配置仲裁盘与共享磁盘

配置仲裁盘(/dev/sdb1)

注解

系统不同,配置方式不同。

两台主机均进行如下配置
oscarha对于仲裁盘写入内容极少,分配很少的空间即可,给与100m的空间即可,示例:分配仲裁盘100m空间
对磁盘进行分区
fdisk /dev/sdb
../../../../_images/image51.png
分区完了,去第二台主机上查询,使用fdisk -l命令可以查询到该分区(/dev/sdb1),如果查询不到,重启一下服务器。

注解

给磁盘分区以后不需要格式化分区!

以下步骤需要在两台主机上做配置
查询磁盘分区对应id
cat /proc/partitions
../../../../_images/image61.png
配置裸盘开机识别文件,进入到系统
cd /etc/udev/rules.d/目录下
在60-raw.rules(根据系统识别文件名称找到对应的文件名称)中添加配置裸盘信息内容如下:
ACTION=="add", KERNEL=="/dev/sdb1", RUN+="/bin/raw /dev/raw/raw1 %N"
ACTION=="add", ENV{MAJOR}=="8", ENV{MINOR}=="17", RUN+="/bin/raw /dev/raw/raw1 %M %m"
KERNEL=="raw[1-5]",OWNER="root",GROUP="root",MODE="660"
启动裸盘管理相关服务:start_udev
操作系统命令为:systemctl restart systemd-udev-trigger.service
示例:
../../../../_images/image7.png
查看生成的仲裁盘:
ll /dev/raw
../../../../_images/image8.png
部分操作操作系统上述操作可能无法立即生成raw1设备(需要重启),可通过以下命令生成,基本能实时生成:
modprobe raw
raw /dev/raw/raw1 /dev/sdb1
chmod 777 /dev/raw/ raw1

配置共享数据库盘(/dev/sdb2)

数据盘和之前的操作一样,但是不需要和仲裁盘一样配置管理服务。
../../../../_images/image9.png

格式化磁盘分区

mkfs.ext4 /dev/sdb2
使用blkid /dev/sdb2 查看两台主机的磁盘分区id,应该保持一致
(如果第二台主机查不到id,重启主机)
/dev/sdb2: UUID="1e26db5c-1f05-4c7d-a845-5ab77bdedade" TYPE="ext4"

注解

数据库的格式化格式可以有多种,因数据盘一般都比较大,大部分采用parted命令进行分区,而不是fdisk;且文件格式可以为xfs等。

HA1安装数据库及创建实例

挂载共享数据盘

手动新建/opt/ShenTong/odbs目录,挂载磁盘
mkdir -p /opt/ShenTong/odbs
mount /dev/sdb2 /opt/ShenTong/odbs/
在通过df-h的命令查看是否成功挂载相关磁盘
../../../../_images/image10.png

创建数据库实例

数据库默认安装在/opt/ShenTong目录下,创建数据库实例OSRDB。注意配置数据库文件路径(可以根据实际设置文件路径),这里都在/opt/ShenTong/odbs目录下面。

注解

建立实例时必须将控制文件放置在/opt/ShenTong/odbs/[实例名称]的目录下

HA2安装数据库

在安装HA2数据库前先在HA1停库
/etc/init.d/oscardb_OSRDBd stop
并卸载HA1共享磁盘
umount /opt/ShenTong/odbs/
将HA1上安装好的数据库拷贝到HA2相同目录:
cd /opt
scp -r ShenTong root@192.168.11.134:/opt/
../../../../_images/image111.png
配置HA2环境变量,修改/etc/profile添加数据库相关环境变量:
vi /etc/profile
环境变量如下:
#####################################
# add environment by shentong db 2021年 04月 25日 星期天 13:17:59 CST
SZ_OSCAR_HOME=/opt/ShenTong
export SZ_OSCAR_HOME
PATH=/opt/ShenTong/bin:/opt/ShenTong/dbstudio:${PATH}
PATH=/opt/ShenTong/bin:/opt/ShenTong/datamigrate:${PATH}
export PATH
LD_LIBRARY_PATH=/opt/ShenTong/bin:/opt/ShenTong/jre/lib/amd64:${LD_LIBRARY_PATH}
export LD_LIBRARY_PATH
#####################################
环境变量生效:
source /etc/profile

参数配置

注解

该文件在/opt/ShenTong/agent/HA/路径下,如果没有ha.conf文件,可以执行oscarha -i 生成。

需要配置的参数如下:
../../../../_images/image12.png
HA1配置参数 HA2配置参数
HA_PRODUCT_NAME=oscar HA_PRODUCT_NAME=oscar
NODE_ID=1 NODE_ID=2
CTRL_PORT=5430 CTRL_PORT=5430
HA_DETAIL_LOG=FALSE HA_DETAIL_LOG=FALSE
LOG_FILE_SIZE=512 LOG_FILE_SIZE=512
HA_DBNAME=OSRDB HA_DBNAME=OSRDB
HA_SERVICE_NAME=oscardb_OSRDBd HA_SERVICE_NAME=oscardb_OSRDBd
HA_START_DB_SERVICE_WAY=0 HA_START_DB_SERVICE_WAY=0
VOTE_DISK=/dev/raw/raw1 VOTE_DISK=/dev/raw/raw1
HA_SHARE_DISC_MOUNT_TYPE=0 HA_SHARE_DISC_MOUNT_TYPE=0
HA_SHARE_DISC_DEVICE=/dev/sdb2 HA_SHARE_DISC_DEVICE=/dev/sdb2
HA_SHARE_DISC_FSTYPE=ext4 HA_SHARE_DISC_FSTYPE=ext4
HA_SHARE_DISC_DIRECTORY=/opt/ShenTong/odbs HA_SHARE_DISC_DIRECTORY=/opt/ShenTong/odbs
IPV6_ENABLE=FALSE IPV6_ENABLE=FALSE
HA_LOCAL_NET_DEV_NAME=ens33 HA_LOCAL_NET_DEV_NAME=ens33
HA_SERVER_IP_ADDRESS=192.168.11.11 HA_SERVER_IP_ADDRESS=192.168.11.11
HA_GATEWAY=192.168.11.2 HA_GATEWAY=192.168.11.2

启动&&测试

启动服务

在HA1操作如下:
数据库agent服务
/etc/init.d/oscaragentd start
初始化仲裁盘:
oscarha -m /dev/sdb1
启动oscarha 进程
/etc/init.d/oscarhad start
查询进程情况:
ps -ef | grep oscar
../../../../_images/image13.png
在HA2操作如下:
注册agent服务:
oscaragent -i
注册ha服务:
oscarha -i
注册数据库服务:
oscar -o install -d osrdb
初始化仲裁盘:
oscarha -m /dev/sdb1
启动数据库agent服务
/etc/init.d/oscaragentd start
启动oscarha 进程
/etc/init.d/oscarhad start
查询进程情况:
ps -ef | grep oscar
../../../../_images/image14.png

测试双机

按照以上正常搭建成功,可以知道主机是HA1,备机是HA2。
在HA1查看磁盘和浮动ip的情况。
HA1如图所示:
查看磁盘是否挂载:
df -h
../../../../_images/image15.png
浮动ip是否挂载
ip addr
../../../../_images/image16.png
通过浮动ip连接数据库(需要关闭防火墙)
isql -h 浮动ip
../../../../_images/image171.png
查询数据库进程
ps -ef|grep oscar
../../../../_images/image18.png
HA2查询,无浮动ip 无挂载磁盘,无数据库实例进程
../../../../_images/image191.png

切换测试

将HA1的数据库实例kill或者stop,B机变主机
将A 机网络关闭;
../../../../_images/image20.png
../../../../_images/image211.png
B机变为主机,状态如下:
../../../../_images/image22.png
还可以通过-C参数进行主动切换

通过设备UUID挂载模式

环境要求

机器 网络名称 IP 浮动ip 网关 仲裁盘 共享盘
HA1 ens33 192.168.11.135 192.168.11.22 192.168.11.2 /dev/sdb1 UUID="964996ec-b7dd-4a11-9cd7-2c6811917e62"
HA2 ens33 192.168.11.136

UUID为系统中的存储设备提供唯一的标识字符串,不管这个设备是什么类型的。自动分配的设备名称并非总是一致的,它们依赖于启动时内核加载模块的顺序。如果你在插入了USB盘时启动了系统,而下次启动时又把它拔掉了,就有可能导致设备名分配不一致。如果你在系统中添加了新的存储设备如硬盘,很可能会造成一些麻烦,比如说启动的时候因为找不到设备而失败,而使用UUID则不会有这样的问题。

使用UUID配置双机热备HA流程如下:

配置仲裁盘与共享磁盘

配置仲裁盘

注解

系统不同,配置方式不同。

两台主机均进行如下配置
oscarha对于仲裁盘写入内容极少,分配很少的空间即可,给与100m的空间即可,示例:分配仲裁盘100m空间
对磁盘进行分区
../../../../_images/image23.png
分区完了,去第二台主机上查询,使用fdisk -l命令可以查询到该分区(/dev/sdb1),如果查询不到,重启一下服务器。

注解

给磁盘分区以后不需要格式化分区!

以下步骤需要在两台主机上做配置
查询磁盘分区对应id
../../../../_images/image24.png
配置裸盘开机识别文件,进入到系统
cd /etc/udev/rules.d/目录下
在60-raw.rules(根据系统识别文件名称找到对应的文件名称)中添加配置裸盘信息内容如下:
ACTION=="add", KERNEL=="/dev/sdb1", RUN+="/bin/raw /dev/raw/raw1 %N"
ACTION=="add", ENV{MAJOR}=="8", ENV{MINOR}=="17", RUN+="/bin/raw /dev/raw/raw1 %M %m"
KERNEL=="raw[1-5]",OWNER="root",GROUP="root",MODE="660"
启动裸盘管理相关服务:start_udev
操作系统命令为:systemctl restart systemd-udev-trigger.service
示例:
../../../../_images/image25.png
查看生成的仲裁盘:
ll /dev/raw
../../../../_images/image26.png
部分操作操作系统上述操作可能无法立即生成raw1设备(需要重启),可通过以下命令生成,基本能实时生成:
modprobe raw
raw /dev/raw/raw1 /dev/sdb1
chmod 777 /dev/raw/ raw1
也可以通过裸设备的方式进行处理。

配置共享数据库盘

数据盘和之前的仲裁盘一样
../../../../_images/image27.png
格式化磁盘分区
mkfs.ext4 /dev/sdb2
使用blkid 查看两台主机的磁盘分区id,应该保持一致

HA1安装数据库及创建实例

挂载共享数据盘

手动新建/opt/ShenTong/odbs目录,用于挂载磁盘
mkdir -p /opt/ShenTong/odbs
mount 964996ec-b7dd-4a11-9cd7-2c6811917e62 /opt/ShenTong/odbs/
../../../../_images/image28.png

创建数据库实例

数据库默认安装在/opt/ShenTong目录下,创建数据库实例OSRDB。注意配置数据库文件路径(可以根据实际设置文件路径),这里都在/opt/ShenTong/odbs目录下面。

注解

建立实例时必须将控制文件放置在odbs/[实例名称]的目录下

HA2装数据库

安装HA2数据库前先停HA1的数据库服务
/etc/init.d/oscardb_OSRDBd stop
卸载HA1共享磁盘
umount /opt/ShenTong/odbs/
将HA1上安装好的数据库拷贝到HA2相同目录:
cd /opt
scp -r ShenTong root@HA2ip:/opt/
配置HA2环境变量/etc/profile
nano /etc/profile
环境变量如下:
#####################################
# add environment by shentong db 2021年 04月 26日 星期一 10:29:14 CST
SZ_OSCAR_HOME=/opt/ShenTong
export SZ_OSCAR_HOME

PATH=/opt/ShenTong/bin:/opt/ShenTong/dbstudio:${PATH}
PATH=/opt/ShenTong/bin:/opt/ShenTong/datamigrate:${PATH}
export PATH
LD_LIBRARY_PATH=/opt/ShenTong/bin:/opt/ShenTong/jre/lib/amd64:${LD_LIBRARY_PATH}
export LD_LIBRARY_PATH
#####################################
环境变量生效:
source /etc/profile

参数配置

注解

该文件在/opt/ShenTong/agent/HA/路径下。如果没有ha.conf文件,可以执行oscarha -i 生成。

../../../../_images/image29.png
HA1配置参数 HA2配置参数
HA_PRODUCT_NAME=oscar HA_PRODUCT_NAME=oscar
NODE_ID=1 NODE_ID=2
CTRL_PORT=5430 CTRL_PORT=5430
HA_DETAIL_LOG=FALSE HA_DETAIL_LOG=FALSE
LOG_FILE_SIZE=512 LOG_FILE_SIZE=512
HA_DBNAME=OSRDB HA_DBNAME=OSRDB
HA_SERVICE_NAME=oscardb_OSRDBd HA_SERVICE_NAME=oscardb_OSRDBd
HA_START_DB_SERVICE_WAY=0 HA_START_DB_SERVICE_WAY=0
VOTE_DISK=/dev/raw/raw1 VOTE_DISK=/dev/raw/raw1
HA_SHARE_DISC_MOUNT_TYPE=1 HA_SHARE_DISC_MOUNT_TYPE=1
HA_SHARE_DISC_DEVICE=964996ec-b7dd-4a11-9cd7-2c6811917e62 HA_SHARE_DISC_DEVICE=964996ec-b7dd-4a11-9cd7-2c6811917e62
HA_SHARE_DISC_FSTYPE=ext4 HA_SHARE_DISC_FSTYPE=ext4
HA_SHARE_DISC_DIRECTORY=/opt/ShenTong/odbs HA_SHARE_DISC_DIRECTORY=/opt/ShenTong/odbs
HA_LOCAL_NET_DEV_NAME=ens33 HA_LOCAL_NET_DEV_NAME=ens33
HA_SERVER_IP_ADDRESS=192.168.11.22 HA_SERVER_IP_ADDRESS=192.168.11.22
HA_GATEWAY=192.168.11.2 HA_GATEWAY=192.168.11.2

启动&&测试

启动服务

在HA1操作如下:
数据库agent服务
/etc/init.d/oscaragentd start
初始化仲裁盘:
oscarha -m /opt/vote/data
启动oscarha 进程
/etc/init.d/oscarhad start
查询进程情况:
ps aux | grep oscar
../../../../_images/image30.png
在HA2操作如下:
注册agent服务:
oscaragent -i
注册ha服务:
oscarha -i
../../../../_images/image31.png
注册数据库服务:
oscar -o install -d osrdb
启动数据库agent服务
/etc/init.d/oscaragentd start
启动oscarha 进程
/etc/init.d/oscarhad start
查询进程情况:
ps aux | grep oscar
../../../../_images/image32.png

测试双机

按照以上正常搭建成功,可以知道主机是HA1,备机是HA2。
在HA1常看磁盘和浮动ip的情况。
HA1如图所示:
查看磁盘是否挂载:
df -h
../../../../_images/image33.png
浮动ip是否挂载
ip addr
../../../../_images/image34.png
在其他主机通过浮动ip连接数据库(需要关闭防火墙)
isql -h 浮动ip
../../../../_images/image35.png
查询数据库进程
ps aux | grep oscar
../../../../_images/image36.png
HA2查询,无浮动ip 无挂载磁盘,无数据库实例进程
../../../../_images/image37.png

切换测试

将HA1的数据库实例kill,B机变主机
A 机状态如下:
../../../../_images/image38.png
../../../../_images/image39.png
B机变为主机,状态如下:
../../../../_images/image40.png
还可以通过-C参数进行主动切换

通过NFS挂载模式

警告

由于NFS是有文件系统的,仲裁盘如如果也用NFS的盘,则可能导致仲裁信息写入磁盘存在延时,导致心跳误判。因此NFS建议只应用在测试环境,工程环境不建议使用。

环境要求

机器 网络名称 IP 浮动ip 网关 仲裁盘 共享盘
HA1 ens33 10.1.203.73 10.1.203.155 10.1.203.254 10.1.203.40:/export/v01 10.1.203.40:/export/osc01
HA2 ens33 10.1.203.74

配置仲裁盘与共享盘

配置仲裁盘

在HA1(以下简称一号机)配置环境;
建立一个文件夹:
mkdir -p /opt/vote
首先挂载仲裁盘:
mount -t nfs 10.1.203.40:/export/v01 /opt/vote
需要下载安装nfs程序 yum -y install nfs
在启动nfs systemctl start nfs
查看是否挂载成功
df -h
../../../../_images/image41.png
需要将仲裁盘进行永久挂载,这样服务器重启之后HA服务才可以正常启用。
编辑/etc/fstab文件系统信息
nano /etc/fstab
添加以下信息:
10.1.203.40:/export/v01 /opt/vote nfs defaults 0 0
重启服务器后使用df -h 查看发现仲裁盘已经自动挂载上了
建立一个文件data充当仲裁盘:
touch /opt/vote/data 配置共享数据库盘
在建立一个文件夹作为数据库挂载路径
mkdir -p /opt/ShenTong/odbs

挂载数据盘

mount -t nfs 10.1.203.40:/export/osr01 /opt/ShenTong/odbs
df -h 查看
../../../../_images/image42.png

卸载数据盘

umount 10.1.203.40:/export/osr01
然后在HA2虚拟机(以下简称二号机)进行相同的配置操作;
挂载仲裁盘与数据盘,验证能否正常挂载磁盘;

HA1安装数据库及创建实例

挂载共享数据盘

mount -t nfs 10.1.203.40:/export/osr01 /opt/ShenTong/odbs

创建数据库实例

1:打开终端进入root用户执行:source /etc/profile
2:输入:oscar
3:输入: create database osrdb
4:执行oscar -o restrict -d osrdb
5:执行oscar -o install -d osrdb
6:启动数据库

注解

创建数据库实例OSRDB。注意配置数据库文件路径(可以根据实际情况设置文件路径)。

启动命令/etc/init.d/oscardb_OSRDBd start
查看服务是否启动ps aux | grep oscar

HA2安装数据库

安装之后将一号机/opt/ShenTong文件夹完整拷贝到二号机;
此过程中可能需要关闭服务器防火墙
scp -r /opt/ShenTong root@10.1.203.74:/opt/
以及/etc/init.d/文件夹下的oscar服务都拷贝到二号机相应位置
环境变量也需要进行更新。
scp -r /etc/init.d/ root@10.1.203.74:/etc/init.d/
scp /etc/profile root@10.1.203.74:/etc/
source在当前环境下读取并执行FileName中的命令
source /etc/profile

在二号机下注册服务

oscarha -i
oscaragent -i
oscar -o install -d osrdb
初始化仲裁盘
oscarha -m /opt/vote/data

参数配置

注解

该文件在/opt/ShenTong/agent/HA/路径下。如果没有ha.conf文件,可以执行oscarha -i 生成。

nano /opt/ShenTong/agent/HA/ha.conf
参数配置如下,根据实际需求进行相应的调整,尤其是使用专用机的时候。
HA1配置参数 HA2配置参数
HA_PRODUCT_NAME=oscar HA_PRODUCT_NAME=oscar
NODE_ID=1 NODE_ID=2
CTRL_PORT=5430 CTRL_PORT=5430
HA_DETAIL_LOG=FALSE HA_DETAIL_LOG=FALSE
LOG_FILE_SIZE=512 LOG_FILE_SIZE=512
HA_DBNAME=OSRDB HA_DBNAME=OSRDB
HA_SERVICE_NAME=oscardb_OSRDBd HA_SERVICE_NAME=oscardb_OSRDBd
HA_START_DB_SERVICE_WAY=0 HA_START_DB_SERVICE_WAY=0
VOTE_DISK=/opt/vote/data VOTE_DISK=/opt/vote/data
HA_SHARE_DISC_MOUNT_TYPE=2 HA_SHARE_DISC_MOUNT_TYPE=2
HA_SHARE_DISC_DEVICE=10.1.203.40:/export/osc01 HA_SHARE_DISC_DEVICE=10.1.203.40:/export/osc01
HA_SHARE_DISC_FSTYPE=nfs HA_SHARE_DISC_FSTYPE=nfs
HA_SHARE_DISC_DIRECTORY=/opt/ShenTong/odbs HA_SHARE_DISC_DIRECTORY=/opt/ShenTong/odbs
HA_LOCAL_NET_DEV_NAME=eth0 HA_LOCAL_NET_DEV_NAME=eth0
HA_SERVER_IP_ADDRESS=10.1.203.155 HA_SERVER_IP_ADDRESS=10.1.203.155
HA_GATEWAY=10.1.203.254 HA_GATEWAY=10.1.203.254

启动&&测试

启动服务

/etc/init.d/oscaragent start
/etc/init.d/oscarhad start
查看服务是否成功启动
ps aux | grep oscar
../../../../_images/image43.png
查看路径是否成功挂载
df -h
../../../../_images/image44.png
若出现问题可以到/opt/ShenTong/log文件夹下查看相关日志信息
cd /opt/ShenTong/log
nano ha_log.txt
nano ha_log20210416_00000.txt 开启打印详细信息的话此日志可以看到更详细的详细
../../../../_images/image45.png

测试双机

isql -h 10.1.203.115(需要关闭防火墙)
../../../../_images/image46.png

切换测试

例如: 停掉当前挂载成功的服务器,去备机查看是否有自动更换挂载服务器。
直接对当前服务器进行重启操作 reboot
kill当前主机的数据库服务 kill -9 数据库服务进程号
一号机数据库服务进程被kill
../../../../_images/image47.png
二号机自动挂载上数据库与浮动IP
../../../../_images/image48.png
还可以通过-C参数进行主动切换

多实例挂载

环境要求

机器 网络名称 IP 浮动ip 网关 仲裁盘 共享盘
HA1 ens33 192.168.11.135 192.168.11.22 192.168.11.33 192.168.11.2 /dev/sdb1 /dev/sdc1 /dev/sdb2:UUID="964996ec-b7dd-4a11-9cd7-2c6811917e62" /dev/sdc2:UUID="0ecf8adb-48cf-4969-853c-8034d0eb4828"
HA2 ens33 192.168.11.136
使用UUID配置双机热备HA多实例流程如下:

配置仲裁盘与共享磁盘

配置仲裁盘

oscarha对于仲裁盘写入内容极少,分配很少的空间即可,给与100m的空间即可
示例:分配仲裁盘100m空间
对磁盘进行分区
fdisk /dev/sdb
依次键入 n p 1 回车 +100M w
fdisk /dev/sdc
依次键入 n p 1 回车 +100M w
分区完了,去HA2上查询,使用fdisk -l命令可以查询到该分区(/dev/sdb1与/dev/sdc1),如果查询不到,重启一下服务器就可以了。
配置裸盘开机识别文件,进入到系统
cd /etc/udev/rules.d/目录下
在60-raw.rules(根据系统识别文件名称找到对应的文件名称)中添加配置裸盘信息内容如下:
ACTION=="add", KERNEL=="/dev/sdb1", RUN+="/bin/raw /dev/raw/raw1 %N"
ACTION=="add", ENV{MAJOR}=="8", ENV{MINOR}=="17", RUN+="/bin/raw /dev/raw/raw1 %M %m"
KERNEL=="raw[1-5]",OWNER="root",GROUP="root",MODE="660"
ACTION=="add", KERNEL=="/dev/sdc1", RUN+="/bin/raw /dev/raw/raw2 %N"
ACTION=="add", ENV{MAJOR}=="8", ENV{MINOR}=="33", RUN+="/bin/raw /dev/raw/raw2 %M %m"
KERNEL=="raw[1-5]",OWNER="root",GROUP="root",MODE="660"
启动裸盘管理相关服务:start_udev
操作系统命令为:systemctl restart systemd-udev-trigger.service
示例:
../../../../_images/image49.png
查看生成的仲裁盘:
ll /dev/raw
../../../../_images/image50.png
部分操作操作系统上述操作可能无法立即生成raw1设备(需要重启),可通过以下命令生成,基本能实时生成:
modprobe raw
raw /dev/raw/raw1 /dev/sdb1
chmod 777 /dev/raw/ raw1
raw /dev/raw/raw2 /dev/sdc1
chmod 777 /dev/raw/ raw2

配置共享数据库盘

数据盘和之前的仲裁盘一样
fdisk /dev/sdb
依次键入 n、p、2、回车、回车、w
fdisk /dev/sdc
依次键入 n、p、2、回车、回车、w
在格式化磁盘分区
mkfs.ext4 /dev/sdb2
mkfs.ext4 /dev/sdc2
使用blkid 查看两台服务器的磁盘分区id

HA1安装数据库及创建实例

挂载共享数据盘

手动新建/opt/ShenTong/OSRDB 与/opt/ShenTong/ROC目录,挂载磁盘
mkdir -p /opt/ShenTong/OSRDB
mkdir -p /opt/ShenTong/ROC
挂载共享盘
mount 964996ec-b7dd-4a11-9cd7-2c6811917e62 /opt/ShenTong/OSRDB
mount 0ecf8adb-48cf-4969-853c-8034d0eb4828 /opt/ShenTong/ROC
df -h 查看能否正常挂载共享磁盘

创建数据库实例

按照图形化界面安装数据库,安装在/opt/ShenTong目录下
安装完成后创建数据库实例OSRDB、ROC
注意配置数据库文件路径,实例控制文件需要在/opt/ShenTong/[oscarname]对应的名称路径下

HA2安装数据库

安装HA2数据库前先停HA1的数据库服务
/etc/init.d/oscardb_OSRDBd stop
/etc/init.d/oscardb_ROCd stop
卸载HA1共享磁盘
umount /opt/ShenTong/OSRDB
umount /opt/ShenTong/ROC
将HA1上安装好的数据库拷贝到HA2相同目录:
cd /opt
scp -r ShenTong root@HA2ip:/opt/
配置HA2环境变量/etc/profil
nano /etc/profile
环境变量如下:
#####################################
# add environment by shentong db 2021年 04月 26日 星期一 10:29:14 CST
SZ_OSCAR_HOME=/opt/ShenTong
export SZ_OSCAR_HOME
PATH=/opt/ShenTong/bin:/opt/ShenTong/dbstudio:${PATH}
PATH=/opt/ShenTong/bin:/opt/ShenTong/datamigrate:${PATH}
export PATH
LD_LIBRARY_PATH=/opt/ShenTong/bin:/opt/ShenTong/jre/lib/amd64:${LD_LIBRARY_PATH}
export LD_LIBRARY_PATH
#####################################
环境变量生效:
source /etc/profile

参数配置

注解

多实例的参数配置是需要分开的,可以自定义参数配置文件路径来启动服务。

配置参数如下
   
实例1节点1配置参数, 实例2节点1配置参数  
NODE_ID=1 NODE_ID=1
CTRL_PORT=5430 CTRL_PORT=5431
HA_DETAIL_LOG=FALSE HA_DETAIL_LOG=FALSE
LOG_FILE_SIZE=512 LOG_FILE_SIZE=512
HA_ENABLE_REBOOT=TRUE HA_ENABLE_REBOOT=TRUE
HA_DBNAME=OSRDB HA_DBNAME=ROC
HA_SERVICE_NAME=oscardb_OSRDBd HA_SERVICE_NAME=oscardb_ROCd
HA_START_DB_SERVICE_WAY=0 HA_START_DB_SERVICE_WAY=0
VOTE_DISK=/dev/raw/raw1 VOTE_DISK=/dev/raw/raw2
HA_SHARE_DISC_MOUNT_TYPE=0 HA_SHARE_DISC_MOUNT_TYPE=0
HA_SHARE_DISC_DEVICE=/dev/sdb2 HA_SHARE_DISC_DEVICE=/dev/sdc2
HA_SHARE_DISC_FSTYPE=ext4 HA_SHARE_DISC_FSTYPE=ext4
HA_SHARE_DISC_DIRECTORY=/opt/ShenTong/OSRDB HA_SHARE_DISC_DIRECTORY=/opt/ShenTong/ROC
HA_LOCAL_NET_DEV_NAME=ens33 HA_LOCAL_NET_DEV_NAME=ens33
HA_SERVER_IP_ADDRESS=192.168.11.11 HA_SERVER_IP_ADDRESS=192.168.11.22
HA_GATEWAY=192.168.11.2 HA_GATEWAY=192.168.11.2
   
实例1节点2配置参数, 实例2节点2配置参数  
NODE_ID=2 NODE_ID=2
CTRL_PORT=5430 CTRL_PORT=5431
HA_DETAIL_LOG=FALSE HA_DETAIL_LOG=FALSE
LOG_FILE_SIZE=512 LOG_FILE_SIZE=512
HA_ENABLE_REBOOT=TRUE HA_ENABLE_REBOOT=TRUE
HA_DBNAME=OSRDB HA_DBNAME=ROC
HA_SERVICE_NAME=oscardb_OSRDBd HA_SERVICE_NAME=oscardb_ROCd
HA_START_DB_SERVICE_WAY=0 HA_START_DB_SERVICE_WAY=0
VOTE_DISK=/dev/raw/raw1 VOTE_DISK=/dev/raw/raw2
HA_SHARE_DISC_MOUNT_TYPE=0 HA_SHARE_DISC_MOUNT_TYPE=0
HA_SHARE_DISC_DEVICE=/dev/sdb2 HA_SHARE_DISC_DEVICE=/dev/sdc2
HA_SHARE_DISC_FSTYPE=ext4 HA_SHARE_DISC_FSTYPE=ext4
HA_SHARE_DISC_DIRECTORY=/opt/ShenTong/OSRDB HA_SHARE_DISC_DIRECTORY=/opt/ShenTong/ROC
HA_LOCAL_NET_DEV_NAME=ens33 HA_LOCAL_NET_DEV_NAME=ens33
HA_SERVER_IP_ADDRESS=192.168.11.11 HA_SERVER_IP_ADDRESS=192.168.11.22
HA_GATEWAY=192.168.11.2 HA_GATEWAY=192.168.11.2

启动&&测试

启动服务

下面为好区分两个实例将实例1用oscarha1表示、实例2用oscarha2表示;
在HA1操作如下:
启动数据库agent服务
/etc/init.d/oscaragentd start
初始化仲裁盘:
oscarha1 -m /opt/vote1/data
oscarha2 -m /opt/vote2/data
启动oscarha 进程
/etc/init.d/oscarhad1 实例1ha.conf路径 start
/etc/init.d/oscarhad2 实例2ha.conf路径 start
查询进程情况:
ps aux | grep oscar
查看是否启动了两个HA服务
在HA2操作如下:
注册agent服务:
oscaragent -i
注册ha服务:
oscarha -i
注册数据库服务:
oscar -o install -d osrdb
oscar -o install -d roc
启动数据库agent服务
/etc/init.d/oscaragentd start
启动oscarha 进程
/etc/init.d/oscarhad 实例1ha.conf路径 start
/etc/init.d/oscarhad 实例2ha.conf路径 start
查询进程情况:
ps aux | grep oscar

测试双机

按照以上正常搭建成功,可以知道主机是HA1,备机是HA2。
在HA1常看磁盘和浮动ip的情况。
HA1如图所示:
查看磁盘是否挂载、正常情况下挂载两个共享磁盘
df -h
浮动ip是否挂载、正常情况下挂载两个浮动IP
ip addr
在其他主机通过浮动ip连接数据库(需要关闭防火墙)
isql -h 浮动ip
示例: isql -h 192.168.11.22
isql -h 192.168.11.33
查询数据库进程、正常情况下运行两个数据库实例服务进程
ps aux | grep oscar
HA2查询,无浮动ip 无挂载磁盘,无数据库实例进程

切换测试

使用kill -9 命令可以单独杀死一个数据库实例或者手动卸载某个实例的浮动IP,查看单个实例的切换会不会影响另一个实例的正常运行。
示例:卸载ip:ip addr del 192.168.11.22/24 dev ens33
kill -9 命令可以单独杀死一个数据库实例:kill -9 数据库服务进程号
还可以通过oscarha -C 命令主动切换