前言
DM 数据守护(Data Watch)是一种集成化的高可用、高性能数据库解决方案,是数据库异地容灾的首选方案。通过部署 DM 数据守护,可以在硬件故障(如磁盘损坏)、自然灾害(地震、火灾)等极端情况下,避免数据损坏、丢失,保障数据安全,并且可以快速恢复数据库服务,满足用户不间断提供数据库服务的要求。
与常规的数据库备份(Backup)、还原(Restore)技术相比,数据守护可以更快地恢复数据库服务。随着数据规模不断增长,通过还原手段恢复数据,往往需要数个小时、甚至更长时间,而数据守护基本不受数据规模的影响,只需数秒时间就可以将备库切换为主库对外提供数据库服务。
DM 数据守护提供多种解决方案,可以配置成实时主备,并且 DSC 也支持配置成数据守护集群。满足用户关于系统可用性、数据安全性、性能等方面的综合需求,有效降低总体投入,获得超值的投资回报。
服务器准备
机器规划:
192.168.254.101 主机
192.168.254.102 备机
192.168.254.103 监视器
搭建步骤
1、关闭主库,做冷备,将备份拷贝到备机上
[dmdba@localhost bin]$ ./DmServiceDMSERVER stop
[dmdba@localhost bin]$ ./dmrman
RMAN> backup database '/dm8/data/DAMENG/dm.ini' backupset '/dm8/back';
[dmdba@localhost back]$ scp back* dmdba@192.168.254.102:/dm8/back
2、主库配置
修改 dm.ini 部分参数:
ALTER_MODE_STATUS = 0
ENABLE_OFFLINE_TS = 2
MAL_INI = 1
ARCH_INI = 1
配置dmarch.ini 文件,如果没有,则需要新建
位置/dm8/data/DAMENG/dmarch.ini:
[dmdba@localhost DAMENG]$ cat dmarch.ini
ARCH_WAIT_APPLY = 0
[ARCHIVE_REALTIME]
ARCH_TYPE = REALTIME
ARCH_DEST = DMSERVER2
[ARCHIVE_LOCAL1]
ARCH_TYPE = LOCAL
ARCH_DEST = /dm8/arch
ARCH_FILE_SIZE = 64
ARCH_SPACE_LIMIT = 0
ARCH_FLUSH_BUF_SIZE = 0
ARCH_HANG_FLAG = 1
配置 dmmal.ini 文件,如果没有,则需要新建
位置/dm8/data/DAMENG/dmmal.ini:
MAL_CHECK_INTERVAL = 5
MAL_CONN_FAIL_INTERVAL = 5
[MAL_INST1]
MAL_INST_NAME = DMSERVER
MAL_HOST = 192.168.254.101
MAL_PORT = 15236
MAL_INST_HOST = 192.168.254.101
MAL_INST_PORT = 5236
MAL_DW_PORT = 65101
MAL_INST_DW_PORT = 45101
[MAL_INST2]
MAL_INST_NAME = DMSERVER2
MAL_HOST = 192.168.254.102
MAL_PORT = 15236
MAL_INST_HOST = 192.168.254.102
MAL_INST_PORT = 5236
MAL_DW_PORT = 65101
MAL_INST_DW_PORT = 45101
配置 dmwatcher.ini 文件,如果没有,则需要新建
位置/dm8/data/DAMENG/dmwatcher.ini:
[GRP1]
DW_TYPE = GLOBAL
DW_MODE = AUTO
DW_ERROR_TIME = 10
INST_RECOVER_TIME = 60
INST_ERROR_TIME = 10
INST_OGUID = 8888
INST_INI = /dm8/data/DAMENG/dm.ini
INST_AUTO_RESTART = 1
INST_STARTUP_CMD = /dm8/bin/dmserver
RLOG_SEND_THRESHOLD = 0
RLOG_APPLY_THRESHOLD = 0
3、将主库启动到 mount 状态
[dmdba@localhost bin]$ ./dmserver /dm8/data/DAMENG/dm.ini
mount
如果不是mount,修改SQL:alter database mount;
4、修改主库的状态
SQL>SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 1);
SQL>sp_set_oguid(8888);
SQL>SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 0);
SQL>alter database primary;
5、初始化备机数据库,并恢复数据库
[dmdba@localhost bin]$ ./dminit db_name=DAMENG instance_name=DMSERVER2 port_num=5236 path=/dm8/data
RMAN> restore database '/dm8/data/DAMENG/dm.ini' overwrite from backupset '/dm8/back';
RMAN> recover database '/dm8/data/DAMENG/dm.ini' from backupset '/dm8/back';
RMAN> recover database '/dm8/data/DAMENG/dm.ini' update db_magic;
6、备库配置
修改 dm.ini 部分参数:
ALTER_MODE_STATUS = 0
ENABLE_OFFLINE_TS = 2
MAL_INI = 1
ARCH_INI = 1
配置dmarch.ini
需要注意,ARCH_DEST与主机的配置不同
ARCH_WAIT_APPLY = 0
[ARCHIVE_REALTIME]
ARCH_TYPE = REALTIME
ARCH_DEST = DMSERVER
[ARCHIVE_LOCAL1]
ARCH_TYPE = LOCAL
ARCH_DEST = /dm8/arch
ARCH_FILE_SIZE = 64
ARCH_SPACE_LIMIT = 0
ARCH_FLUSH_BUF_SIZE = 0
ARCH_HANG_FLAG = 1
配置 dmmal.ini 文件
MAL_CHECK_INTERVAL = 5
MAL_CONN_FAIL_INTERVAL = 5
[MAL_INST1]
MAL_INST_NAME = DMSERVER
MAL_HOST = 192.168.254.101
MAL_PORT = 15236
MAL_INST_HOST = 192.168.254.101
MAL_INST_PORT = 5236
MAL_DW_PORT = 65101
MAL_INST_DW_PORT = 45101
[MAL_INST2]
MAL_INST_NAME = DMSERVER2
MAL_HOST = 192.168.254.102
MAL_PORT = 15236
MAL_INST_HOST = 192.168.254.102
MAL_INST_PORT = 5236
MAL_DW_PORT = 65101
MAL_INST_DW_PORT = 45101
配置 dmwatcher.ini
[GRP1]
DW_TYPE = GLOBAL
DW_MODE = AUTO
DW_ERROR_TIME = 10
INST_RECOVER_TIME = 60
INST_ERROR_TIME = 10
INST_OGUID = 8888
INST_INI = /dm8/data/DAMENG/dm.ini
INST_AUTO_RESTART = 1
INST_STARTUP_CMD = /dm8/bin/dmserver
RLOG_SEND_THRESHOLD = 0
RLOG_APPLY_THRESHOLD = 0
7、启动备库到 mount 状态
[dmdba@localhost bin]$ ./dmserver /dm8/data/DAMENG/dm.ini
mount
如果不是mount,修改SQL:alter database mount;
8、修改备库的配置
SQL> sp_set_oguid(8888);
SQL> alter database standby;
9、启动主库、备库上的守护进程
[dmdba@localhost bin]$ ./dmwatcher /dm8/data/DAMENG/dmwatcher.ini
10、配置监视器
[dmdba@localhost ~]$ vi /dm8/data/DAMENG/dmmonitor.ini
MON_DW_CONFIRM = 1 #0:非确认(故障手切) 1:确认(故障自切)
MON_LOG_PATH = /dm8/data/log #监视器日志文件存放路径
MON_LOG_INTERVAL = 60 #每隔 60s 定时记录系统信息到日志文件
MON_LOG_FILE_SIZE = 32 #单个日志大小,单位 MB
MON_LOG_SPACE_LIMIT = 0 #日志上限,单位 MB
[GRP1]
MON_INST_OGUID = 8888 #组 GRP1 的唯一 OGUID 值
MON_DW_IP = 192.168.240.101:65101 #IP 对应 MAL_HOST,PORT 对应 MAL_DW_PORT
MON_DW_IP = 192.168.240.102:65101
[dmdba@localhost data]$ /dm8/bin/dmmonitor /dm8/data/dmmonitor.ini
使用show命令查看机器状态: