linux环境搭建达梦双实例交叉主备守护集群
安装达梦数据库
创建用户组 创建用户
groupadd dinstall //创建用户组
useradd -g dinstall -d /home/dmdba dmdba //创建用户及用户目录
提前规划好搭建的文件路径
安装目录:/dm8/dmdbms
实例1:
数据目录:/dmdata/data/lsl
归档目录:/dmdata/data/lsl_arch01
备份目录:/dmbak
实例2:
数据目录:/dmdata/data/DAMENG
归档目录:/dmdata/data/arch02
备份目录:/dmbak
提前确定实例初始化参数
日志:2048*2
实例1:
数据库名:lsl
页大小:16
字符集:UTF8
端口:5237
其余默认
实例2:
页大小:16
字符集:UTF8
端口:5238
其余默认
修改open file的大小
vi /etc/security/limits.conf //末尾加上如下两行
//* soft nofile 65536
//* hard nofile 65536
reboot //重启
保险起见重启后可以再次使用ulimit -a命令查看一下
挂载镜像 使用dmdba用户执行安装命令
chmod 755 dm8_20210818_HWarm_centos7_64_ent_8.1.2.46_pack4.iso
mount dm8_20210818_HWarm_centos7_64_ent_8.1.2.46_pack4.iso /mnt/
./DMInstall.bin -i //-i表示命令行安装,注意使用创建的dmdba用户安装
此处注意用dmdba用户安装后需要用root执行一条语句。
初始化实例1
分别在两台主机上初始化实例1
//进入安装bin目录
./dminit help //查看初始化信息帮助
./dminit PATH=/dmdata/data/ charset=1 db_name=lsl page_size=16 log_size=2048 port_num=5237
完成初始化之后需要启停数据库一次
./dmserver /dmdata/data/lsl/dm.ini //安装目录下bin目录执行
exit
对实例1备份还原
为保证数据同步故选择备份还原的方法
//进入安装bin目录
./dmrman ctlstmt="backup database '/dmdata/data/lsl/dm.ini' full to backup2021 backupset '/home/dmdba/bak/'"
scp -r /home/dmdba/bak/ dmdba@192.168.2.18:/home/dmdba/ //由主库发送到备库
在备库进行还原
./dmrman ctlstmt="restore database '/dmdata/data/lsl/dm.ini' from backupset '/home/dmdba/bak/'"
./dmrman ctlstmt="recover database '/dmdata/data/lsl/dm.ini' from backupset '/home/dmdba/bak/'"
./dmrman ctlstmt="recover database '/dmdata/data/lsl/dm.ini' update db_magic" //更新数据库魔术
修改文件
修改主库配置文件:
进入lsl目录
修改dm.ini配置文件中如下几项
INSTANCE_NAME=lsl_01
ARCH_INI=1
MAL_INI=1
ALTER_MODE_STATUS= 0
ENABLE_OFFLINE_TS = 2
修改dmmal.ini 配置文件如下:
MAL_CHECK_INTERVAL = 5
MAL_CONN_FAIL_INTERVAL = 5
[MAL_INST1]
MAL_INST_NAME = lsl_01
MAL_HOST =192.168.2.17
MAL_PORT = 61141
MAL_INST_HOST = 192.168.2.17
MAL_INST_PORT = 5237
MAL_DW_PORT = 52141
MAL_INST_DW_PORT = 33141
[MAL_INST2]
MAL_INST_NAME = lsl_02
MAL_HOST = 192.168.2.18
MAL_PORT = 61142
MAL_INST_HOST = 192.168.2.18
MAL_INST_PORT = 5237
MAL_DW_PORT = 52142
MAL_INST_DW_PORT = 33142
修改dmarch.ini
新建一个/dmdata/data/lsl_arch文件夹
ARCH_WAIT_APPLY=1 //事务一致性
[ARCHIVE_TIMELY1]
ARCH_TYPE = TIMELY
ARCH_DEST = lsl_02
[ARCHIVE_LOCAL1]
ARCH_TYPE = LOCAL
ARCH_DEST = /dmdata/data/lsl_arch
ARCH_FILE_SIZE = 1024
ARCH_SPACE_LIMIT = 204800
修改dmwatcher.ini
vi dmwatcher.ini
[GRP1]
DW_TYPE = GLOBAL
DW_MODE = MANUAL
DW_ERROR_TIME = 10
INST_RECOVER_TIME = 60
INST_ERROR_TIME = 10
INST_OGUID = 453331
INST_INI = /dmdata/data/lsl/dm.ini
INST_AUTO_RESTART = 1
INST_STARTUP_CMD = /wwb/dmdbms/bin/DmServicelsl02 restart
RLOG_SEND_THRESHOLD = 0
RLOG_APPLY_THRESHOLD = 0
将主库的配置文件发送到备库,后续配置备库就只需要修改部分内容
scp dmmal.ini dmarch.ini dmwatcher.ini dmdba@192.168.2.18:/dmdata/data/lsl/
配置主库oguid:
进入安装bin目录
以mount方式启动,以open形式启动会使主备不同步
./dmserver /dmdata/data/lsl/dm.ini mount
./disql SYSDBA/SYSDBA:5237
sp_set_oguid(453331);
alter database primary;
exit //停库处理
配置备库文件
修改备库配置文件dm.ini
INSTANCE_NAME=lsl_02
ARCH_INI=1
MAL_INI=1
ALTER_MODE_STATUS= 0
ENABLE_OFFLINE_TS = 2
修改dmarch.ini
[ARCHIVE_TIMELY1]
ARCH_TYPE = TIMELY
ARCH_DEST = lsl_01
使用dmdba用户创建/dmdata/data/lsl_arch文件夹。
配置主库oguid:
进入安装bin目录
以mount方式启动,以open形式启动会使主备不同步
./dmserver /dmdata/data/lsl/dm.ini mount
./disql SYSDBA/SYSDBA:5237
sp_set_oguid(453331);
alter database standby;
exit //停库处理
创建监视器配置文件
在/dmdata/data/lsl/目录下创建dmmonitor.ini
dmmonitor.ini文件的配置如下
MON_DW_Confirm = 1
MON_LOG_PATH = /home/dmdba/log
MON_LOG_INTERVAL = 60
MON_LOG_FILE_SIZE = 32
MON_LOG_SPACE_LIMIT = 1024
[GRP1]
MON_INST_OGUID = 453331
MON_DW_IP = 192.168.2.17:52141
MON_DW_IP = 192.168.2.18:52142
注册服务
用root用户进入安装目录下script/root目录
主库:
./dm_service_installer.sh -t dmserver -dm_ini /dmdata/data/lsl/dm.ini -m mount -p lsl01
./dm_service_installer.sh -t dmwatcher -watcher_ini /dmdata/data/lsl/dmwatcher.ini -p lsl01
备库:
./dm_service_installer.sh -t dmserver -dm_ini /dmdata/data/lsl/dm.ini -m mount -p lsl02
./dm_service_installer.sh -t dmwatcher -watcher_ini /dmdata/data/lsl/dmwatcher.ini -p lsl02
./dm_service_installer.sh -t dmmonitor -monitor_ini /dmdata/data/lsl/dmmonitor.ini -p lsl //注册监视器
启动服务
先启动服务 后启动守护
./DmServicelsl01 start //启动主库服务
./DmServicelsl02 start //启动备库服务
./DmWatcherServicelsl01 start //启动主库守护进程服务
./DmWatcherServicelsl02 start //启动备库守护进程服务
./dmmonitor /dmdata/data/lsl/dmmonitor.ini //启动监视器(show查看主库备库情况)
看到主库备库均处于open状态 第一个实例就搭建成功了!
后续初始化第二套实例。由于是交叉主备,故原本做备库的2号机,此时变成了第二套实例的主库。配置过程与第一套一致,下面说一说不同的地方。
初始化配置实例2
./dminit PATH=/dmdata/data/ charset=1 page_size=16 log_size=2048 port_num=5238
初始化之后还是需要启停库一次。
此时备份还原是在2号主库备份,还原到1号备库。由于第一套主备守护集群已经搭建完毕,故在备份还原时就可以直接用之前的目录,覆盖第一次的备份记录。自己新建目录也可以,看个人习惯。
配置文件上的区别:
dm.ini配置文件修改 INSTANCE_NAME 即可
dmmal.ini配置文件 这个文件主要记录各种通信端口,为保证正常通信与前一个实例互不影响可以参照如下配置
MAL_CHECK_INTERVAL = 5
MAL_CONN_FAIL_INTERVAL = 5
[MAL_INST1]
MAL_INST_NAME = DMSERVER01
MAL_HOST =192.168.2.17
MAL_PORT = 62141
MAL_INST_HOST = 192.168.2.17
MAL_INST_PORT = 5238
MAL_DW_PORT = 53141
MAL_INST_DW_PORT = 34141
[MAL_INST2]
MAL_INST_NAME = DMSERVER02
MAL_HOST = 192.168.2.18
MAL_PORT = 62142
MAL_INST_HOST = 192.168.2.18
MAL_INST_PORT = 5238
MAL_DW_PORT = 53142
MAL_INST_DW_PORT = 34142
dmarch.ini配置文件需要注意归档目录ARCH_DEST = /dmdata/data/arch
此处不要和之前的实例混淆 注意使用不同的目录。
dmwatcher.ini配置文件中INST_OGUID = 453332 注意修改oguid的值
主库备库均要修改成453332。
注册服务时也需要加以区分后缀
注册主库服务:
./dm_service_installer.sh -t dmserver -dm_ini /dmdata/data/DAMENG/dm.ini -m mount -p DM01
./dm_service_installer.sh -t dmwatcher -watcher_ini /dmdata/data/DAMENG/dmwatcher.ini -p DM01
注册备库服务
./dm_service_installer.sh -t dmserver -dm_ini /dmdata/data/DAMENG/dm.ini -m mount -p DM02
./dm_service_installer.sh -t dmwatcher -watcher_ini /dmdata/data/DAMENG/dmwatcher.ini -p DM02
监视器配置文件对应监视端口修改即可。
监视器看到如下信息即说明配置成功:
这种交叉主备守护集群,看似互不影响,其实还是存在一定联系,且会产生一定风险的。试想一下两个主库都正常对外服务,一旦一个主库出现故障挂掉,此时备库代替主库提供服务,如此一来原本两台服务器的压力将全部集中的一个服务器上面,对性能等方面的影响还是很巨大的。因此这个部署配置方式谨慎使用。
更多资讯请上达梦技术社区了解:https://eco.dameng.com