国产化技术探究达梦8数据库搭建一主一从双机热备守护集群搭建实战
一、环境说明
服务器类型 | IP地址 | 操作系统 | 数据库实例名称 |
---|---|---|---|
主机 | 172.18.21.144 | centos7 | DMSERVER |
备机 | 172.18.21.147 | centos7 | DMSERVER2 |
参数 | 主库 | 备库 |
---|---|---|
实例名称 | DMSERVER | DMSERVER 2 |
IP | 172.18.21.144 | 172.18.21.147 |
OGUID | 45331 | 45331 |
守护组 | GRP1 | GRP1 |
归档上限 | 51200 | 51200 |
安装目录 | /opt/dmdbms/bin/ | /opt/dmdbms/bin/ |
实例目录 | /dmdata/DAMENG | /dmdata/DAMENG |
(1)操作系统
cat /etc/centos-release
(2)达梦数据库版本
/opt/dmdbms/bin/ #达梦8的BIN路径
/dmdata/DAMENG #达梦8的DATA路径
cd /opt/dmdbms/bin/ #达梦8的BIN路径
./disql #执行查询 输入登录信息:默认SYSDBA:SYSDBA
select * from v$version; #查询达梦8版本的SQL
(3)达梦8的数据库基于linux的安装部署
参考笔者的达梦8的安装部署文章,写的步骤很详细!
https://blog.csdn.net/nasen512/article/details/126872483
(4)达梦运行日志路径
部署过程中需要通过日志定位问题解决问题
cd /opt/dmdbms/log
tail -200f dm_DMSERVER_202310.log
二、准备工作关闭防火墙
systemctl status firewalld.service #查看防火墙状态
systemctl stop firewalld.service #临时关闭防火墙
systemctl disable firewalld.service #开机不自启防火墙
关闭SELinux,查看是否开启了SELinux,如果显示为Enforcing,需要改为Disabled,再重启系统使配置生效。
getenforce
vi /etc/selinux/config
进入文件后修改 SELINUX = disabled
保存退出文件
reboot
三、集群配置必须按步骤操作
步骤1 (144服务器主库操作)
(1)初始化主库
service DmServiceDMSERVER stop #关闭实例
cd /dmdata/DAMENG
rm -rf * #将原有的DATA文件删干净/dmdata/DAMENG下的,因为要重新初始化!
有些操作必须要切换到达梦DBA用户,如果用root操作会各种操作系统的执行文件权限报错,导致数据库起不来,这个点很重要。如果你操作过程中忘了切换用户,那需要全部重来很麻烦!!
su dmdba #切换到达梦DBA用户,如果用root操作会各种操作系统的执行文件权限报错,导致数据库起不来,这个点很重要。
cd /opt/dmdbms/bin/
./dminit PATH=/dmdata UNICODE_FLAG=1 LENGTH_IN_CHAR=1 CASE_SENSITIVE=0 EXTENT_SIZE=64 PAGE_SIZE=32 INSTANCE_NAME=DMSERVER
如上图重新初始化完成,主库的实例名称是DMSERVER,此处注意主库与从库的实例名称不能完全一样,否则在后面的操作过程中会报错!
(2)启动新初始化的数据库服务
cd /dmdata/DAMENG #进入到达梦的文件路径
ls -l #查看文件的归属
数据文件归属是dmdba用户,如果是root,就说明操作错误了,后面会遇到各种权限问题!!!!
启动服务用root用户,数据操作用dmdba用户,注意!!
su root #启动服务用root用户,数据操作用dmdba用户,注意!!
service DmServiceDMSERVER start #启动达梦8服务
(3)开启归档操作(开启归档才能导出备份)
su dmdba
cd /opt/dmdbms/bin/
./disql #输入SYSDBA:SYSDBA
执行以下的SQL
ALTER DATABASE MOUNT;
ALTER DATABASE ARCHIVELOG;
ALTER DATABASE ADD ARCHIVELOG 'DEST=/dmdata/DAMENG/arch, TYPE=LOCAL, FILE_SIZE=1024, SPACE_LIMIT=51200';
ALTER DATABASE OPEN;
(4)将主库备份数据操作(144服务器执行)
BACKUP DATABASE BACKUPSET '/dmdata/DAMENG/bak/BACKUP_FILE';
(5)动态数据库配置dm.ini的参数
继续执行下列SQL
SP_SET_PARA_VALUE (2,'DW_INACTIVE_INTERVAL',60);
SP_SET_PARA_VALUE (2,'ALTER_MODE_STATUS',0);
SP_SET_PARA_VALUE (2,'ENABLE_OFFLINE_TS',2);
SP_SET_PARA_VALUE (2,'MAL_INI',1);
SP_SET_PARA_VALUE (2,'RLOG_SEND_APPLY_MON',64);
(6)关闭主库的实例服务(144服务器上执行)
关闭服务用root用户
su root
service DmServiceDMSERVER stop
(7)配置4个配置文件
进到/dmdata/DAMENG/文件目录,分别创建4个配置文件!下面是4个配置文件的文件!
(1)dmarch.ini
cd /dmdata/DAMENG/
vi dmarch.ini
ARCH_WAIT_APPLY = 0
[ARCHIVE_LOCAL1]
ARCH_TYPE = LOCAL
ARCH_DEST = /dmdata/DAMENG/arch
ARCH_FILE_SIZE = 1024
ARCH_SPACE_LIMIT = 51200
ARCH_FLUSH_BUF_SIZE = 0
ARCH_HANG_FLAG = 1
[ARCHIVE_REALTIME1]
ARCH_TYPE = REALTIME #实时归档类型
ARCH_DEST = DMSERVER2 #实时归档目标
(2)dmmal.ini
如果要调整防火墙策略,参考这里面的需要开放的端口
MAL_CHECK_INTERVAL = 5
MAL_CONN_FAIL_INTERVAL = 5
[MAL_INST1]
MAL_INST_NAME = DMSERVER
MAL_HOST = 172.18.21.144
MAL_PORT = 5238
MAL_INST_HOST = 172.18.21.144
MAL_INST_PORT = 5236
MAL_DW_PORT = 5239
MAL_INST_DW_PORT = 5237
[MAL_INST2]
MAL_INST_NAME = DMSERVER2
MAL_HOST = 172.18.21.147
MAL_PORT = 5238
MAL_INST_HOST = 172.18.21.147
MAL_INST_PORT = 5236
MAL_DW_PORT = 5239
MAL_INST_DW_PORT = 5237
(3)dmwatcher.ini
[GRP1]
DW_TYPE = GLOBAL #全局守护类型
DW_MODE = MANUAL #MANUAL:故障手切 AUTO:故障自切
DW_ERROR_TIME = 20 #远程守护进程故障认定时间
INST_ERROR_TIME = 20 #本地实例故障认定时间
INST_RECOVER_TIME = 60 #主库守护进程启动恢复的间隔时间
INST_OGUID = 45331 #守护系统唯一 OGUID 值
INST_INI = /dmdata/DAMENG/dm.ini #dm.ini 文件路径
INST_AUTO_RESTART = 1 #打开实例的自动启动功能
INST_STARTUP_CMD = /opt/dmdbms/bin/dmserver #命令行方式启动
RLOG_SEND_THRESHOLD = 0 #指定主库发送日志到备库的时间阈值,默认关闭
RLOG_APPLY_THRESHOLD = 0 #指定备库重演日志的时间阈值,默认关闭
(4)dmmonitor.ini
MON_DW_CONFIRM = 0 #0:非确认(故障手切) 1:确认(故障自切)
MON_LOG_PATH = ../log #监视器日志文件存放路径
MON_LOG_INTERVAL = 60 #每隔 60s 定时记录系统信息到日志文件
MON_LOG_FILE_SIZE = 512 #单个日志大小,单位 MB
MON_LOG_SPACE_LIMIT = 2048 #日志上限,单位 MB
[GRP1]
MON_INST_OGUID = 45331 #组 GRP1 的唯一 OGUID 值
MON_DW_IP = 172.18.21.144:5239 #IP 对应 MAL_HOST,PORT 对应 MAL_DW_PORT
MON_DW_IP = 172.18.21.147:5239
检查配置文件
cd /dmdata/DAMENG/
ls -l
检查这4个配置文件归属,调整归属到dmdba
chown dmdba:dinstall dmmonitor.ini
(8)注册服务(144服务器执行)
注册服务需要切换到root
su root
cd /opt/dmdbms/script/root
如果发现服务已经创建则需要把服务注销,再创建服务!
sh dm_service_uninstaller.sh -n DmWatcherServiceWatcher #删除服务命令
sh dm_service_uninstaller.sh -n DmMonitorServiceMonitor
注册dmwatcher服务
sh dm_service_installer.sh -t dmwatcher -p Watcher -watcher_ini /dmdata/DAMENG/dmwatcher.ini
注册监视器服务
sh dm_service_installer.sh -t dmmonitor -p Monitor -monitor_ini /dmdata/DAMENG/dmmonitor.ini
操作到这一步,现在144服务器上的服务都关着的
步骤2(在147备库服务器操作)
(1)初始化实例(注意实例名称要跟主库区分开)
先关闭实例服务要不然操作不了
su root
service DmServiceDMSERVER stop #关闭服务
cd /dmdata/DAMENG
rm -rf * #清空之前的数据库数据文件,因为下面要重新初始化
su dmdba
cd /opt/dmdbms/bin/
./dminit PATH=/dmdata UNICODE_FLAG=1 LENGTH_IN_CHAR=1 CASE_SENSITIVE=0 EXTENT_SIZE=64 PAGE_SIZE=32 INSTANCE_NAME=DMSERVER2
此处初始化实例名称DMSERVER2是跟主库服务器区分开的!
(2)147备库还原主库144的备份
将刚刚144主库备份的数据要恢复到147让2个服务器的数据完全一致!!
su dmdba #切换到dmdba
scp -r root@172.18.21.144:/dmdata/DAMENG/bak /dmdata/DAMENG/ #将144的备份文件同步到147
注意这备份文件必须归属是dmdba,如果是其他用户后面执行恢复操作会报错!!
(3)147服务器执行恢复操作
不能用root执行,必须用dmdba,如果用root会导致数据库文件归属问题,后面实例无法启动
su dmdba #不能用root执行,如果用root会导致数据库文件归属问题,后面实例无法启动
cd /opt/dmdbms/bin
还原整个数据库命令
./dmrman CTLSTMT="RESTORE DATABASE '/dmdata/DAMENG/dm.ini' FROM BACKUPSET '/dmdata/DAMENG/bak/BACKUP_FILE'"
(4)处理DB_MAGIC报错实例无法启动问题
此时启动147实例会报错,错误说DB_MAGIC问题,所以我们需要处理这个问题!笔者查了资料,找到了解决方法
su dmdba
scp -r root@172.18.21.144:/dmdata/DAMENG/arch /dmdata/DAMENG/
cd /opt/dmdbms/bin/
./dmrman
recover database '/dmdata/DAMENG/dm.ini' with archivedir '/dmdata/DAMENG/arch';
RECOVER DATABASE '/dmdata/DAMENG/dm.ini' UPDATE DB_MAGIC;
到此步骤之后数据恢复成功
(5)启动147实例
su root
service DmServiceDMSERVER start
(6)开启归档调整参数(147执行)
su dmdba
cd /opt/dmdbms/bin/
./disql #输入SYSDBA:SYSDBA
ALTER DATABASE MOUNT;
ALTER DATABASE ARCHIVELOG;
ALTER DATABASE ADD ARCHIVELOG 'DEST=/dmdata/DAMENG/arch, TYPE=LOCAL, FILE_SIZE=1024, SPACE_LIMIT=51200';
ALTER DATABASE OPEN ;
SP_SET_PARA_VALUE (2,'DW_INACTIVE_INTERVAL',60);
SP_SET_PARA_VALUE (2,'ALTER_MODE_STATUS',0);
SP_SET_PARA_VALUE (2,'ENABLE_OFFLINE_TS',2);
SP_SET_PARA_VALUE (2,'MAL_INI',1);
SP_SET_PARA_VALUE (2,'RLOG_SEND_APPLY_MON',64);
ALTER DATABASE MOUNT;
ALTER DATABASE ARCHIVELOG;
ALTER DATABASE OPEN;
(7)关闭147实例服务
su root
service DmServiceDMSERVER stop
(8)147服务器配置4个配置文件
进到/dmdata/DAMENG/文件目录,分别创建4个配置文件!下面是4个配置文件的文件!
su dmdba
cd dmdata/DAMENG/
vi dmmal.ini #依次4个配置文件
(1)dmarch.ini
#DaMeng Database Archive Configuration file
#this is comments
ARCH_WAIT_APPLY = 0
[ARCHIVE_LOCAL1]
ARCH_TYPE = LOCAL
ARCH_DEST = /dmdata/DAMENG/arch
ARCH_FILE_SIZE = 1024
ARCH_SPACE_LIMIT = 51200
ARCH_FLUSH_BUF_SIZE = 0
ARCH_HANG_FLAG = 1
[ARCHIVE_REALTIME1]
ARCH_TYPE = REALTIME #实时归档类型
ARCH_DEST = DMSERVER #实时归档目标
(2)dmmal.ini
MAL_CHECK_INTERVAL = 5
MAL_CONN_FAIL_INTERVAL = 5
[MAL_INST1]
MAL_INST_NAME = DMSERVER
MAL_HOST = 172.18.21.144
MAL_PORT = 5238
MAL_INST_HOST = 172.18.21.144
MAL_INST_PORT = 5236
MAL_DW_PORT = 5239
MAL_INST_DW_PORT = 5237
[MAL_INST2]
MAL_INST_NAME = DMSERVER2
MAL_HOST = 172.18.21.147
MAL_PORT = 5238
MAL_INST_HOST = 172.18.21.147
MAL_INST_PORT = 5236
MAL_DW_PORT = 5239
MAL_INST_DW_PORT = 5237
(3)dmwatcher.ini
[GRP1]
DW_TYPE = GLOBAL #全局守护类型
DW_MODE = MANUAL #MANUAL:故障手切 AUTO:故障自切
DW_ERROR_TIME = 20 #远程守护进程故障认定时间
INST_ERROR_TIME = 20 #本地实例故障认定时间
INST_RECOVER_TIME = 60 #主库守护进程启动恢复的间隔时间
INST_OGUID = 45331 #守护系统唯一 OGUID 值
INST_INI = /dmdata/DAMENG/dm.ini #dm.ini 文件路径
INST_AUTO_RESTART = 1 #打开实例的自动启动功能
INST_STARTUP_CMD = /opt/dmdbms/bin/dmserver #命令行方式启动
RLOG_SEND_THRESHOLD = 0 #指定主库发送日志到备库的时间阈值,默认关闭
RLOG_APPLY_THRESHOLD = 0 #指定备库重演日志的时间阈值,默认关闭
(4)dmmonitor.ini
MON_DW_CONFIRM = 0 #0:非确认(故障手切) 1:确认(故障自切)
MON_LOG_PATH = ../log #监视器日志文件存放路径
MON_LOG_INTERVAL = 60 #每隔 60s 定时记录系统信息到日志文件
MON_LOG_FILE_SIZE = 512 #单个日志大小,单位 MB
MON_LOG_SPACE_LIMIT = 2048 #日志上限,单位 MB
[GRP1]
MON_INST_OGUID = 45331 #组 GRP1 的唯一 OGUID 值
MON_DW_IP = 172.18.21.144:5239 #IP 对应 MAL_HOST,PORT 对应 MAL_DW_PORT
MON_DW_IP = 172.18.21.147:5239
查看4个文件归属dmdba
cd /dmdata/DAMENG/
ls -l
(9)注册服务
su root
cd /opt/dmdbms/script/root
注册dmwatcher服务
sh dm_service_installer.sh -t dmwatcher -p Watcher -watcher_ini /dmdata/DAMENG/dmwatcher.ini
注册监视器服务
sh dm_service_installer.sh -t dmmonitor -p Monitor -monitor_ini /dmdata/DAMENG/dmmonitor.ini
步骤3 启动2个服务器的服务
(1)144主库服务器操作
su root
service DmServiceDMSERVER start
service DmWatcherServiceWatcher start
service DmMonitorServiceMonitor start
(2)147主备服务器操作
su root
service DmServiceDMSERVER start
service DmWatcherServiceWatcher start
service DmMonitorServiceMonitor start
步骤4 查看监控
cd /opt/dmdbms/bin