本篇文章主要讲述一主一备DMWatch数据守护集群搭建(达梦数据库最多支持一主八备)
3台虚拟机:一台监视器,一台主库,一台备库
操作系统:Kylin Linux Advanced Server V10
处理器内核总数:4
内存:8G
硬盘容量:40G
数据库版本:DM8 安全版(标准版和开发版不支持数据守护集群)
主库、备库和监视器都需要安装达梦数据库,主库和备库要保证数据库名和端口号一致,实例名要不一样。监视器只需要安装数据库即可,不需要新建实例。
mkdir backup
#进入数据库bin目录下,启动工具 Dmrman
./dmrman
BACKUP DATABASE '/dm8/data/DAMENG/dm.ini' FULL TO BACKUP_FILE1 BACKUPSET '/dm8/backup/BACKUP_FILE_01' #主库完全备份
INSTANCE_NAME = DMSERVER1
PORT_NUM = 5237
DW_INACTIVE_INTERVAL = 60
ALTER_MODE_STATUS = 0
ENABLE_OFFLINE_TS = 2
MAL_INI = 1
ARCH_INI = 1
RLOG_SEND_APPLY_MON = 64
[dmdba@~]# vi /dm8/data/DAMENG/dmmal.ini
MAL_CHECK_INTERVAL = 60 #MAL链路检测时间间隔
MAL_CONN_FAIL_INTERVAL = 60 #判定MAL链路断开的时间
[MAL_INST1]
MAL_INST_NAME =DMSERVER1 #实例名,和dm.ini里的一致
MAL_HOST = 192.168.1.18 #MAL监听的IP地址
MAL_PORT = 55102 #MAL监听的端口,可任意设置,未占用即可
MAL_INST_HOST = 192.168.117.18 #数据库实例的IP
MAL_INST_PORT = 5237 #数据库实例端口
MAL_DW_PORT = 65102 #守护进程监听的端口,可任意设置,未占用即可
MAL_INST_DW_PORT = 45102 #监听守护进程的端口,可任意设置,未占用即可
[MAL_INST2]
MAL_INST_NAME = DMSERVER2
MAL_HOST = 192.168.1.20
MAL_PORT = 55122
MAL_INST_HOST = 192.168.117.20
MAL_INST_PORT = 5237
MAL_DW_PORT = 65122
MAL_INST_DW_PORT = 45122
[dmdba@~]# vi /dm8/data/DAMENG/dmarch.ini
[ARCHIVE_REALTIME]
ARCH_TYPE = REALTIME #实时归档类型
ARCH_DEST = DMSERVER2 #实时归档目标实例名
[ARCHIVE_LOCAL1]
ARCH_TYPE = LOCAL #本地归档类型
ARCH_DEST = /dm8/arch #本地归档存放路径
ARCH_FILE_SIZE = 128 #单个归档文件大小
ARCH_SPACE_LIMIT = 0 #归档上限,0表示无限制
[dmdba@~]# vi /dm8/data/DAMENG/dmwatcher.ini
[GRP1]
DW_TYPE = GLOBAL #全局守护类型
DW_MODE = MANUAL #故障手动切换模式,AUTO为自动切换
DW_ERROR_TIME = 60 #远程守护进程故障认定时间
INST_RECOVER_TIME = 60 #本地实例故障认定时间
INST_ERROR_TIME = 10 #主库守护进程启动恢复时间
INST_OGUID = 987321 #守护系统唯一OGUID值,可任意设置
INST_INI = /dm8/data/DAMENG/dm.ini #dm.ini配置文件路径
INST_AUTO_RESTART = 1 #打开实例的自动启动功能
INST_STARTUP_CMD = /dm8/bin/dmserver #命令行方式启动
RLOG_SEND_THRESHOLD = 0 #指定主库发送日志到备库的时间阈值,默认关闭
RLOG_APPLY_THRESHOLD = 0 #指定备库重演日志的时间阈值,默认关闭
#以mount方式启动主库
./dmserver /dm8/data/DM01/dm.ini mount
#启动命令行工具 DIsql
SQL>SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 1);
SQL>sp_set_oguid(987321);
SQL>alter database primary;
SQL>SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 0);
通过disql工具查看数据库状态,如下图:
一定要以 Mount 方式启动数据库实例, 否则系统启动时会重构回滚表空间,生 成 Redo 日志; 并且,启动后应用可能连接到数据库实例进行操作,破坏主备 库的数据一致性。数据守护配置结束后,守护进程会自动 Open 数据库。
完成守护集群搭建要保证主备库一致,如果不一致,备库可能无法进入备库配置状态,所以备份还原是保证主备数据库一致的一个好方法。
#启动工具 Dmrman
RESTORE DATABASE '/dm8/data/DMDW/dm.ini' FROM BACKUPSET '/dm8/backup' #把主库备份恢复到备库
RECOVER DATABASE '/dm8/data/DMDW/dm.ini' FROM BACKUPSET '/dm8/backup' #还原备份
RECOVER DATABASE '/dm8/data/DMDW/dm.ini' UPDATE DB_MAGIC #还原魔数
INSTANCE_NAME = DMSERVER2
PORT_NUM = 5237
DW_INACTIVE_INTERVAL = 60
ALTER_MODE_STATUS = 0
ENABLE_OFFLINE_TS = 2
MAL_INI = 1
ARCH_INI = 1
RLOG_SEND_APPLY_MON = 64
[dmdba@~]# vi /dm8/data/DAMENG/dmmal.ini
MAL_CHECK_INTERVAL = 60
MAL_CONN_FAIL_INTERVAL = 60
[MAL_INST1]
MAL_INST_NAME = DMSERVER1
MAL_HOST = 192.168.117.18
MAL_PORT = 55102
MAL_INST_HOST = 192.168.117.18
MAL_INST_PORT = 5237
MAL_DW_PORT = 65102
MAL_INST_DW_PORT = 45102
[MAL_INST2]
MAL_INST_NAME = DMSERVER2
MAL_HOST = 192.168.117.20
MAL_PORT = 55122
MAL_INST_HOST = 192.168.117.20
MAL_INST_PORT = 5237
MAL_DW_PORT = 65122
MAL_INST_DW_PORT = 45122
[dmdba@~]# vi /dm8/data/DAMENG/dmarch.ini
[ARCHIVE_REALTIME]
ARCH_TYPE = REALTIME
ARCH_DEST = DMSERVER1
[ARCHIVE_LOCAL1]
ARCH_TYPE = LOCAL
ARCH_DEST = /dm8/arch
ARCH_FILE_SIZE = 128
ARCH_SPACE_LIMIT = 0
[dmdba@~]# vi /dm8/data/DAMENG/dmwatcher.ini
DW_TYPE = GLOBAL
DW_MODE = MANUAL
DW_ERROR_TIME = 60
INST_RECOVER_TIME = 60
INST_ERROR_TIME = 10
INST_OGUID = 987321
INST_INI = /dm8/data/DAMENG/dm.ini
INST_AUTO_RESTART = 1
INST_STARTUP_CMD = /dm8/bin/dmserver
RLOG_APPLY_THRESHOLD = 0
#以mount方式启动主库
./dmserver /dm8/data/DM01/dm.ini mount
#启动命令行工具 DIsql
SQL>SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 1);
SQL>sp_set_oguid(987321);
SQL>alter database standby;
SQL>SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 0);
通过disql工具查看数据库状态,如下图:
#进入数据库bin目录下,启动数据守护进程
./dmwatcher /dm8/data/DAMENG/dmwatcher.ini
通过disql工具查看数据库状态,如下图:
./dmwatcher /dm8/data/DAMENG/dmwatcher.ini
通过disql工具查看数据库状态,如下图:
[dmdba@~]# vi /dm8/dmmonitor.ini
MON_DW_CONFIRM = 1
MON_LOG_PATH = /dm8/log
MON_LOG_INTERVAL = 60
MON_LOG_FILE_SIZE = 32
MON_LOG_SPACE_LIMIT = 0
[GRP1]
MON_INST_OGUID = 987321
MON_DW_IP = 192.168.117.18:65102
MON_DW_IP = 192.168.117.20:65122
Linux环境:dm_svc.conf放在应用服务器/etc目录下。
Windows32环境:dm_svc.conf放在应用服务器System32目录下。
Windows64环境:dm_svc.conf放在应用服务器System32和SysWOW64目录下
TIME_ZONE=(+8:00)
LANGUAGE=(cn)
DM1=(192.168.117.18:5237,192.168.117.20:5237)
[DW1]
LOGIN_MODE=(1)
SWITCH_TIME=(300)
SWITCH_INTERVAL=(200)
#进入数据库bin目录下,启动监视器
./dmmonitor.ini /dm8/dmmonitor.ini
通过上图我们可以看到2个守护进程都已被监听到,都处于OPEN状态,说明数据守护集群已经搭建完成。值得注意的是,数据守护集群只有主库能进行读写操作,备库只能进行读操作,当开启故障自动切换时,主库故障,将自动切换到备库,备库接替成为主库,直至主库恢复正常。
为了方便维护,我们可以将守护进程服务注册到服务,这样关机开机可以自动完成自启,同时,监视器也可以加入到服务,开机自启。
文章
阅读量
获赞