linux环境搭建达梦一主两备守护集群
准备工作
前期准备工作可以看第一篇博客,此处直接从安装开始。
安装搭建达梦数据库
由于是一主两备,可以在一主一备的基础上搭建一主两备,但是要注意备份后只能以mount形式启动,否则会导致主备不同步。也可以从头开始搭建,下面讲解从头开始搭建,流程跟一主一备差不多,多一台虚拟机,配置文件加一点内容即可
创建用户组 创建用户
groupadd dinstall //创建用户组
useradd -g dinstall -d /home/dmdba dmdba //创建用户及用户目录
提前规划好搭建的文件路径
mkdir /home/dmdba/dmdata /home/dmdba/dmarch /home/dmdba/dmbak -p //数据存放目录,归档日志存放目录,备份存放目录
chown -R dmdba:dinstall /home/dmdba/dmdata /home/dmdba/dmarch /home/dmdba/dmbak
修改open file的大小
ulimit -a //查看open file的值
su - root
vi /etc/security/limits.conf //末尾加上如下两行
//* soft nofile 65536
//* hard nofile 65536
reboot //重启
保险起见重启后可以再次使用ulimit查看一下
挂载镜像 使用dmdba用户执行安装命令
chmod 755 dm7_setup_rh7_64_ent_7.6.1.60_20200603.iso
mount dm7_setup_rh7_64_ent_7.6.1.60_20200603.iso /mnt/
chmod 755 DMInstall.bin
chown -R dmdba:dinstall DMInstall.bin
su -dmdba
./DMInstall.bin -i //-i表示命令行安装
此处注意用dmdba用户安装后需要用root执行一条语句。
初始化实例
//进入安装bin目录
./dminit help //查看初始化信息帮助
./dminit PATH=/home/dmdba/dmdata/ page_size=16
备份
//进入安装bin目录
./dmrman ctlstmt="backup database '/home/dmdba/dmdata/DAMENG/dm.ini' full to backup2021 backupset '/home/dmdba/dmdata/DAMENG/backup'" //备份
scp -r /home/dmdba/dmdata/DAMENG/backup/ root@192.168.150.132:/home/dmdba/dmdata/DAMENG //由主库发送到备库1
scp -r /home/dmdba/dmdata/DAMENG/backup/ root@192.168.150.142:/home/dmdba/dmdata/DAMENG //由主库发送到备库2
还原
备库1,备库2均需要恢复,还原,更新
chown -R dmdba:dinstall /home/dmdba/dmdata/DAMENG/backup //由于是root用户发送所以需要修改权限
./dmrman ctlstmt="restore database '/home/dmdba/dmdata/DAMENG/dm.ini' from backupset '/home/dmdba/dmdata/DAMENG/backup'" //恢复
./dmrman ctlstmt="recover database '/home/dmdba/dmdata/DAMENG/dm.ini' from backupset '/home/dmdba/dmdata/DAMENG/backup'" //还原
./dmrman ctlstmt="recover database '/home/dmdba/dmdata/DAMENG/dm.ini' update db_magic" //更新魔术
修改文件
修改主库配置文件:
进入DAMENG目录
修改dm.ini
vi dm.ini
INSTANCE_NAME=DM1
ARCH_INI=1
MAL_INI=1
ALTER_MODE_STATUS= 0
ENABLE_OFFLINE_TS = 2
修改dmmal.ini
vi dmmal.ini
MAL_CHECK_INTERVAL = 5
MAL_CONN_FAIL_INTERVAL = 5
[MAL_INST1]
MAL_INST_NAME = DM1
MAL_HOST =192.168.150.131
MAL_PORT = 61141
MAL_INST_HOST = 192.168.150.131
MAL_INST_PORT = 5236
MAL_DW_PORT = 52141
MAL_INST_DW_PORT = 33141
[MAL_INST2]
MAL_INST_NAME = DM2
MAL_HOST = 192.168.150.132
MAL_PORT = 61142
MAL_INST_HOST = 192.168.150.132
MAL_INST_PORT = 5236
MAL_DW_PORT = 52142
MAL_INST_DW_PORT = 33142
[MAL_INST3]
MAL_INST_NAME = DM3
MAL_HOST = 192.168.150.142
MAL_PORT = 61143
MAL_INST_HOST = 192.168.150.142
MAL_INST_PORT = 5236
MAL_DW_PORT = 52143
MAL_INST_DW_PORT = 33143
修改dmarch.ini
新建一个arch文件夹
vi dmarch.ini
ARCH_WAIT_APPLY=1
[ARCHIVE_REALTIME1]
ARCH_TYPE = REALTIME
ARCH_DEST = DM2
[ARCHIVE_REALTIME2]
ARCH_TYPE = REALTIME
ARCH_DEST = DM3
[ARCHIVE_LOCAL1]
ARCH_TYPE = LOCAL
ARCH_DEST = /home/dmdba/dmdata/DAMENG/arch
ARCH_FILE_SIZE = 512
ARCH_SPACE_LIMIT = 5120
修改dmwatcher.ini
vi dmwatcher.ini
[GRP1]
DW_TYPE = GLOBAL
DW_MODE = AUTO
DW_ERROR_TIME = 10
INST_RECOVER_TIME = 60
INST_ERROR_TIME = 10
INST_OGUID = 453331
INST_INI = /home/dmdba/dmdata/DAMENG/dm.ini
INST_AUTO_RESTART = 1
INST_STARTUP_CMD = /home/dmdba/dmdbms/bin/dmserver
RLOG_SEND_THRESHOLD = 0
RLOG_APPLY_THRESHOLD = 0
将主库的配置文件发送到备库,后续配置备库就只需要修改部分内容
scp dmmal.ini dmarch.ini dmwatcher.ini root@192.168.150.132:/home/dmdba/dmdata/DAMENG
scp dmmal.ini dmarch.ini dmwatcher.ini root@192.168.150.142:/home/dmdba/dmdata/DAMENG //主库发送至备库1,备库2
chown -R dmdba:dinstall dmmal.ini //在备库修改权限
chown -R dmdba:dinstall dmwatcher.ini
chown -R dmdba:dinstall dmarch.ini
配置主库oguid:
进入安装bin目录
以mount方式启动,以open形式启动会使主备不同步
./dmserver /home/dmdba/dmdata/DAMENG/dm.ini mount
运行disql,修改oguid 并设置为主库
./disql SYSDBA/SYSDBA
sp_set_oguid(453331);
alter database primary;
退出服务exit
配置备库1文件
修改备库配置文件dm.ini
INSTANCE_NAME=DM2
ARCH_INI=1
MAL_INI=1
ALTER_MODE_STATUS= 0
ENABLE_OFFLINE_TS = 2
修改dmarch.ini
ARCH_WAIT_APPLY=1
[ARCHIVE_REALTIME1]
ARCH_TYPE = REALTIME
ARCH_DEST = DM1
[ARCHIVE_REALTIME2]
ARCH_TYPE = REALTIME
ARCH_DEST = DM3
[ARCHIVE_LOCAL1]
ARCH_TYPE = LOCAL
ARCH_DEST = /home/dmdba/dmdata/DAMENG/arch
ARCH_FILE_SIZE = 512
ARCH_SPACE_LIMIT = 5120
使用dmdba用户在/home/dmdba/dmdata/DAMENG文件夹下创建arch文件夹。
配置备库1oguid:
进入安装bin目录
以mount方式启动,以open形式启动会使主备不同步
./dmserver /home/dmdba/dmdata/DAMENG/dm.ini mount
运行disql,修改oguid 并设置为备库
./disql SYSDBA/SYSDBA
sp_set_oguid(453331);
alter database standby;
退出服务exit
配置备库2文件
修改备库配置文件dm.ini
INSTANCE_NAME=DM3
ARCH_INI=1
MAL_INI=1
ALTER_MODE_STATUS= 0
ENABLE_OFFLINE_TS = 2
修改dmarch.ini
ARCH_WAIT_APPLY=1
[ARCHIVE_REALTIME1]
ARCH_TYPE = REALTIME
ARCH_DEST = DM1
[ARCHIVE_REALTIME2]
ARCH_TYPE = REALTIME
ARCH_DEST = DM2
[ARCHIVE_LOCAL1]
ARCH_TYPE = LOCAL
ARCH_DEST = /home/dmdba/dmdata/DAMENG/arch
ARCH_FILE_SIZE = 512
ARCH_SPACE_LIMIT = 5120
使用dmdba用户在/home/dmdba/dmdata/DAMENG文件夹下创建arch文件夹。
配置备库2oguid:
进入安装bin目录
以mount方式启动,以open形式启动会使主备不同步
./dmserver /home/dmdba/dmdata/DAMENG/dm.ini mount
运行disql,修改oguid 并设置为备库
./disql SYSDBA/SYSDBA
sp_set_oguid(453331);
alter database standby;
退出服务exit
在备库2新建监视器配置文件
在dmdbms目录下创建监视器配置文件
vi /home/dmdba/dmdbms/dmmonitor.ini
MON_DW_Confirm = 1
MON_LOG_PATH = /home/dmdba/dmdbms/log
MON_LOG_INTERVAL = 60
MON_LOG_FILE_SIZE = 32
MON_LOG_SPACE_LIMIT = 0
[GRP1]
MON_INST_OGUID = 453331
MON_DW_IP = 192.168.150.131:52141
MON_DW_IP = 192.168.150.132:52142
MON_DW_IP = 192.168.150.142:52143
注册服务
用root用户进入/home/dmdba/dmdbms/script/root目录
主库:
./dm_service_installer.sh -t dmserver -dm_ini /home/dmdba/dmdata/DAMENG/dm.ini -m mount -p DM1 //注册服务
./dm_service_installer.sh -t dmwatcher -watcher_ini /home/dmdba/dmdata/DAMENG/dmwatcher.ini -p DM1 //注册守护进程
备库1:
./dm_service_installer.sh -t dmserver -dm_ini /home/dmdba/dmdata/DAMENG/dm.ini -m mount -p DM2 //注册服务
./dm_service_installer.sh -t dmwatcher -watcher_ini /home/dmdba/dmdata/DAMENG/dmwatcher.ini -p DM2 //注册守护进程
备库2:
./dm_service_installer.sh -t dmserver -dm_ini /home/dmdba/dmdata/DAMENG/dm.ini -m mount -p DM3 //注册服务
./dm_service_installer.sh -t dmwatcher -watcher_ini /home/dmdba/dmdata/DAMENG/dmwatcher.ini -p DM3 //注册守护进程
./dm_service_installer.sh -t dmmonitor -monitor_ini /home/dmdba/dmdbms/dmmonitor.ini -p DM //注册监视器
进入root用户关闭防火墙
systemctl stop firewalld
启动服务
监视器如果是建立的确认监视器 又需要查看信息的话,可以先关闭监视器服务,之后直接从前台启动,代码如下:
进入安装bin目录
./DmServiceDM1 start //启动主库服务
./DmServiceDM2 start //启动备库1服务
./DmServiceDM3 start //启动备库2服务
./DmWatcherServiceDM1 start //启动主库守护进程服务
./DmWatcherServiceDM2 start //启动备库守护进程服务
./DmWatcherServiceDM3 start //启动备库守护进程服务
./dmmonitor /home/dmdba/dmdbms/dmmonitor.ini //备库2启动监视器(show查看主库备库情况)
监视器查看情况如下,DM1为主库,DM2,DM3为备库均处于open状态
主库异常后状态转换情况
使用命令查看进程情况,使用kill -9命令直接杀掉主库进程,监视器会监视到主库异常如下图:
守护进程状态切换情况
DM2也就是备一自动接管DM1成为主库,DM1,DM2成为备库
之后恢复正常运行
更多资讯请上达梦技术社区了解:https://eco.dameng.com