国产化技术探究达梦8数据库搭建一主一从双机热备守护Data Watch集群搭建实战windows版本
如果是Linux版本达梦8部署则参考笔者另一篇博文
https://blog.csdn.net/nasen512/article/details/133737692
此文章针对是windows版本的达梦部署
1、测试环境介绍
服务器类型 | IP地址 | 操作系统 | 数据库实例名称 |
---|---|---|---|
主机 | 172.18.21.139 | win10 | DMSERVER |
备机 | 172.18.21.140 | win10 | DMSERVER2 |
参数 | 主库 | 备库 |
---|---|---|
实例名称 | DMSERVER | DMSERVER 2 |
IP | 172.18.21.139 | 172.18.21.140 |
OGUID | 45331 | 45331 |
守护组 | GRP1 | GRP1 |
归档上限 | 51200 | 51200 |
安装目录 | C:\dmdbms\bin | C:\dmdbms\bin |
实例目录 | D:\dmdbms | D:\dmdbms |
(1)操作系统
(2)达梦数据库版本
(3)达梦的日志目录
C:\dmdbms\log
2、准备工作
提前把2个测试服务器的防火墙关闭
2个服务器互相验证是否ping通
如果是生产环境,则需要梳理一下需要开通的端口
2个服务器提前安装好windows版本的达梦8,并且保证硬盘、内存剩余!
3、集群部署(必须按照详细的步骤顺序操作)
3.1主库139服务器操作
(1)步骤1初始化实例
进到CMD控制台,尽量用Administrator最高权限用户执行!
cd C:\dmdbms\bin
dminit PATH=d:\dmdata UNICODE_FLAG=1 LENGTH_IN_CHAR=1 CASE_SENSITIVE=0 EXTENT_SIZE=64 PAGE_SIZE=32 INSTANCE_NAME=DMSERVER
启动一下,SYSTEM IS READY.之后,按ctl+c键盘exit退出
dmserver D:\dmdata\DAMENG\dm.ini
在这里插入图片描述
(3)注册数据库服务
正常启动服务
(4)开启归档配置
打开cmd
cd C:\dmdbms\bin
disql #输入SYSDBA SYSDBA
执行下列的SQL语句
ALTER DATABASE MOUNT;
ALTER DATABASE ARCHIVELOG;
ALTER DATABASE ADD ARCHIVELOG 'DEST=D:\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);
此时用windows的服务管理先把实例关掉,因为下面要脱机备份!
(4)主库脱机备份导出备份文件
进入CMD
cd C:\dmdbms\bindmrman use_ap=2 CTLSTMT="BACKUP DATABASE 'D:\dmdata\DAMENG\dm.ini' FULL TO BACKUP_FILE1 BACKUPSET 'D:\dmdata\DAMENG\bak\BACKUP_FILE_01'"
执行主机备份成功
主库的备份文件在下面路径
D:\dmdata\DAMENG\bak\BACKUP_FILE_01
(5)编辑4个配置文件放到实例路径
D:\dmdata\DAMENG #实例路径
将4个文件创建复制到D:\dmdata\DAMENG
(1)dmarch.ini
ARCH_WAIT_APPLY = 0[ARCHIVE_LOCAL1]
ARCH_TYPE = LOCAL
ARCH_DEST = D:\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 = DMSERVERMAL_HOST = 172.18.21.139MAL_PORT = 5238MAL_INST_HOST = 172.18.21.139MAL_INST_PORT = 5236MAL_DW_PORT = 5239MAL_INST_DW_PORT = 5237[MAL_INST2]MAL_INST_NAME = DMSERVER2MAL_HOST = 172.18.21.140MAL_PORT = 5238MAL_INST_HOST = 172.18.21.140MAL_INST_PORT = 5236MAL_DW_PORT = 5239MAL_INST_DW_PORT = 5237
(3)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.139:5239 #IP 对应 MAL_HOST,PORT 对应 MAL_DW_PORT
MON_DW_IP = 172.18.21.140:5239
(4)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 = d:\dmdata\DAMENG\dm.ini #dm.ini 文件路径
INST_AUTO_RESTART = 1 #打开实例的自动启动功能
INST_STARTUP_CMD = C:\dmdbms\bin\dmserver #命令行方式启动
RLOG_SEND_THRESHOLD = 0 #指定主库发送日志到备库的时间阈值,默认关闭
RLOG_APPLY_THRESHOLD = 0 #指定备库重演日志的时间阈值,默认关闭
(6)注册守护服务
右键注册服务
笔者发现用达梦这个自动注册守护服务有的时候会失败,重复注册又好了,注意!
如果发现通过起不来守护的服务,则重新换个名字注册,再试!!
3.2主库140备机器服务器操作
(1)步骤1初始化实例
进到CMD控制台,尽量用Administrator最高权限用户执行!
cd C:\dmdbms\bin
dminit PATH=d:\dmdata UNICODE_FLAG=1 LENGTH_IN_CHAR=1 CASE_SENSITIVE=0 EXTENT_SIZE=64 PAGE_SIZE=32 INSTANCE_NAME=DMSERVER2
注意:实例名称要跟主库区分开!140实例是DMSERVER2注意!
启动一下,SYSTEM IS READY.之后,按ctl+c键盘exit退出
dmserver D:\dmdata\DAMENG\dm.ini
在这里插入图片描述
(2)注册实例服务
(3)开启归档配置
打开cmd
cd C:\dmdbms\bin
disql #输入SYSDBA SYSDBA
执行下列的SQL语句
ALTER DATABASE MOUNT;
ALTER DATABASE ARCHIVELOG;
ALTER DATABASE ADD ARCHIVELOG 'DEST=D:\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);
此时用windows的服务管理先把实例关掉,因为下面要脱机备份!
(5)将139之前备份的文件复制过来复制到140一样的目录
D:\dmdata\DAMENG\bak\BACKUP_FILE_01 #复制到140一样的目录
也把D:\dmdata\DAMENG\arch的路径文件从139复制到140
D:\dmdata\DAMENG\arch
执行还原
cd C:\dmdbms\bin
dmrman CTLSTMT="RESTORE DATABASE 'd:\dmdata\DAMENG\dm.ini' FROM BACKUPSET 'd:\dmdata\DAMENG\bak\BACKUP_FILE_01'"
dmrman
recover database 'd:\dmdata\DAMENG\dm.ini' with archivedir 'd:\dmdata\DAMENG\arch';
RECOVER DATABASE 'd:\dmdata\DAMENG\dm.ini' UPDATE DB_MAGIC;
备数据库数据恢复成功
(6)配置4个配置文件
(1)dmarch.ini
#DaMeng Database Archive Configuration file
#this is commentsARCH_WAIT_APPLY = 0 [ARCHIVE_LOCAL1]ARCH_TYPE = LOCAL ARCH_DEST = D:\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 = DMSERVERMAL_HOST = 172.18.21.139MAL_PORT = 5238MAL_INST_HOST = 172.18.21.139MAL_INST_PORT = 5236MAL_DW_PORT = 5239MAL_INST_DW_PORT = 5237[MAL_INST2]MAL_INST_NAME = DMSERVER2MAL_HOST = 172.18.21.140MAL_PORT = 5238MAL_INST_HOST = 172.18.21.140MAL_INST_PORT = 5236MAL_DW_PORT = 5239MAL_INST_DW_PORT = 5237
(3)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.139:5239 #IP 对应 MAL_HOST,PORT 对应 MAL_DW_PORT
MON_DW_IP = 172.18.21.140:5239
(4)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 = D:\dmdata\DAMENG\dm.ini #dm.ini 文件路径
INST_AUTO_RESTART = 1 #打开实例的自动启动功能
INST_STARTUP_CMD = C:\dmdbms\bin\dmserver #命令行方式启动
RLOG_SEND_THRESHOLD = 0 #指定主库发送日志到备库的时间阈值,默认关闭
RLOG_APPLY_THRESHOLD = 0 #指定备库重演日志的时间阈值,默认关闭
(7)注册守护服务
右键注册服务
笔者发现用达梦这个自动注册守护服务有的时候会失败,重复注册又好了,注意!
如果发现通过起不来守护的服务,则重新换个名字注册,再试!!
方法就是用达梦服务器查看器删除旧服务然后重新创建守护服务解决!
3.3配置主从信息
(1)139服务器上操作
启动数据库实例服务
打开cmd
cd C:\dmdbms\bin
disql #输入SYSDBA SYSDBA
ALTER DATABASE MOUNT;
SP_SET_OGUID(45331);ALTER DATABASE PRIMARY;SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 1);ALTER DATABASE OPEN FORCE;
执行完然后马上关闭实例服务
(2)140服务器上操作
启动数据库实例服务
打开cmd
cd C:\dmdbms\bin
disql #输入SYSDBA SYSDBA
ALTER DATABASE MOUNT;
SP_SET_OGUID(45331);
ALTER DATABASE STANDBY;
SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 1);ALTER DATABASE OPEN FORCE;
执行完然后马上关闭实例服务
3.4启动主从集群
(1)139服务器上操作
1、启动实例服务
2、启动守护服务
(2)140服务器上操作
1、启动实例服务
2、启动守护服务
3.5查看监控
打开cmd
cd C:\dmdbms\bin
dmmonitor d://dmdata//DAMENG//dmmonitor.ini
show
2个服务器关闭守护服务关闭实例服务,再把主库的数据备份再恢复到从库,再试!
(1)139重新备份
进入CMD
cd C:\dmdbms\bindmrman use_ap=2 CTLSTMT="BACKUP DATABASE 'D:\dmdata\DAMENG\dm.ini' FULL TO BACKUP_FILE1 BACKUPSET 'D:\dmdata\DAMENG\bak\BACKUP_FILE_01'"
D:\dmdata\DAMENG\arch这个路径下的文件也得考到140备机器上,同样的目录,还是把140原有的清空!
去144服务器重新还原
(3)再分别启动看监控
(1)139服务器上操作
1、启动实例服务
2、启动守护服务
(2)140服务器上操作
1、启动实例服务
2、启动守护服务
(3)看监控
dmmonitor d://dmdata//DAMENG//dmmonitor.ini
发现140出于挂起状态,关闭守护进程,进到disql下执行
alter database open force;