前景介绍:
近期系统持续受业务连续性的困扰,决定搭建DMV8数据库的高可用技术,最终选择了主备实时系统,来满足当前的场景。
官方技术手册有相关描述实时主备系统的的组成,主要包括:由主数据库、实时备份数据库(备数据库)、守护进程和监视器组成。
就是将REDO LOG打包通过复制功能,从主数据库向备数据库实时复制,备数据库将REDO LOG 写入到本地的联机REDO日志文件,通过REDO LOG回放完成数据的同步。
MAL系统:MAL 系统是基于 TCP 协议实现的一种内部通信机制,具有可靠、灵活、高效的特性。 DM 通过 MAL 系统实现 Redo 日志传输,以及其他一些实例间的消息通讯。
配置步骤:
一、先规划好基本信息
主机: 10.10.10.100
备机: 10.10.10.101
监控: 10.10.10.102
数据库名 | 实例名 | PORT | MAL_INST_PORT | MAL_HOST | MAL_PORT | MAL_DW_PORT |
DMENG | DMSER01 | 5236 | 45101 | 10.10.10.100 | 55101 | 65101 |
DMENG | DMSER02 | 5236 | 45121 | 10.10.10.101 | 55121 | 65121 |
二、备份恢复数据库
主机执行:./dmrman
BACKUP DATABASE '/dm8/data/DMENG/dm.ini' FULL TO BACKUP_FILE1 BACKUPSET '/dm8/backup/BACKUP_FILE_01'
scp /dm8/backup/BACKUP_FILE_01/* dmdba@10.10.10.101:/dm8/backup
备机执行:./dmrman
RESTORE DATABASE '/dm8/data/DMENG/dm.ini' FROM BACKUPSET '/dm8/backup'
RECOVER DATABASE '/dm8/data/DMENG/dm.ini' FROM BACKUPSET '/dm8/backup'
RECOVER DATABASE '/dm8/data/DMENG/dm.ini' UPDATE DB_MAGIC
三、配置文件
1、主库配置
cd /dm8/data/DMENG
vi dm.ini (如下参数要修改)
INSTANCE_NAME = DMSER01
PORT_NUM = 5236
DW_INACTIVE_INTERVAL = 60
ALTER_MODE_STATUS = 0
ENABLE_OFFLINE_TS = 2
MAL_INI = 1
ARCH_INI = 1
RLOG_SEND_APPLY_MON = 64
********************************************************
vi dmmal.ini
MAL_CHECK_INTERVAL = 5
MAL_CONN_FAIL_INTERVAL = 5
[MAL_INST1]
MAL_INST_NAME = DMSER01
MAL_HOST = 10.10.10.100
MAL_PORT = 55101
MAL_INST_HOST = 10.10.10.100
MAL_INST_PORT = 5236
MAL_DW_PORT = 65101
MAL_INST_DW_PORT = 45101
[MAL_INST2]
MAL_INST_NAME = DMSER02
MAL_HOST = 10.10.10.101
MAL_PORT = 55121
MAL_INST_HOST = 10.10.10.101
MAL_INST_PORT = 5236
MAL_DW_PORT = 65121
MAL_INST_DW_PORT = 45121
********************************************
vi dmarch.ini
[ARCHIVE_REALTIME]
ARCH_TYPE = REALTIME
ARCH_DEST = DMSER02
[ARCHIVE_LOCAL1]
ARCH_TYPE = LOCAL
ARCH_DEST = /dm8/arch
ARCH_FILE_SIZE = 128
ARCH_SPACE_LIMIT = 0
********************************************
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 = /dm8/data/DMENG/dm.ini
INST_AUTO_RESTART = 1
INST_STARTUP_CMD = /dm8/bin/dmserver
RLOG_SEND_THRESHOLD = 0
RLOG_APPLY_THRESHOLD = 0
2、启动主库(使主库进入配置状态)
cd /dm8/bin
./dmserver /dm8/data/DMENG/dm.ini mount
3、备库配置
cd /dm8/data/DMENG
vi dm.ini
INSTANCE_NAME = DMSER02
PORT_NUM = 5236
DW_INACTIVE_INTERVAL = 60
ALTER_MODE_STATUS = 0
ENABLE_OFFLINE_TS = 2
MAL_INI = 1
ARCH_INI = 1
RLOG_SEND_APPLY_MON = 64
***********************************************
vi dmmal.ini
MAL_CHECK_INTERVAL = 5
MAL_CONN_FAIL_INTERVAL = 5
[MAL_INST1]
MAL_INST_NAME = DMSER01
MAL_HOST = 10.10.10.100
MAL_PORT = 55101
MAL_INST_HOST = 10.10.10.100
MAL_INST_PORT = 5236
MAL_DW_PORT = 65101
MAL_INST_DW_PORT = 45101
[MAL_INST2]
MAL_INST_NAME = DMSER02
MAL_HOST = 10.10.10.101
MAL_PORT = 55121
MAL_INST_HOST = 10.10.10.101
MAL_INST_PORT = 5236
MAL_DW_PORT = 65121
MAL_INST_DW_PORT = 45121
*********************************
vi dmarch.ini
[ARCHIVE_REALTIME]
ARCH_TYPE = REALTIME
ARCH_DEST = DMSER01
[ARCHIVE_LOCAL1]
ARCH_TYPE = LOCAL
ARCH_DEST = /dm8/arch
ARCH_FILE_SIZE = 128
ARCH_SPACE_LIMIT = 0
********************************************
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 = /dm8/data/DMENG/dm.ini
INST_AUTO_RESTART = 1
INST_STARTUP_CMD = /dm8/bin/dmserver
RLOG_APPLY_THRESHOLD = 0
4、启动备库
./dmserver /dm8/data/DMENG/dm.ini mount
SQL>SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 1);
SQL>sp_set_oguid(453331);
SQL>alter database standby;
SQL>SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 0);
5、监视服务器配置(无需创建实例)
vi /dm8/dm.ini
MON_DW_CONFIRM = 1
MON_LOG_PATH = /dm8/data/log
MON_LOG_INTERVAL = 60
MON_LOG_FILE_SIZE = 32
MON_LOG_SPACE_LIMIT = 0
[GRP1]
MON_INST_OGUID = 453331
MON_DW_IP = 10.10.10.100:65101
MON_DW_IP = 10.10.10.101:65121
6、启动守护进程
启动主库守护进程
./dmwatcher /dm8/data/DMDW/dmwatcher.ini
启动备库守护进程
./dmwatcher /dm8/data/DMDW/dmwatcher.ini
启动监视器
./dmmonitor /dm8/data/dmmonitor.ini
show
此时,达梦主备实时数据库配置就完成了,可以通过在主库上创建表,插入数据等来验证配置的正确性。