目录
[一 环境说明](#一 环境说明)
[二 搭建主备](#二 搭建主备)
[2.1 配置dmarch.ini](#2.1 配置dmarch.ini)
[2.2 备份DMDSC库](#2.2 备份DMDSC库)
[2.3 部署单实例备库](#2.3 部署单实例备库)
[2.4 配置dm.ini](#2.4 配置dm.ini)
[2.5 配置dmmal.ini](#2.5 配置dmmal.ini)
[2.6 配置dmarch.ini](#2.6 配置dmarch.ini)
[2.7 配置dmwatcher.ini](#2.7 配置dmwatcher.ini)
[2.8 修改数据库模式](#2.8 修改数据库模式)
[2.9 启动守护进程](#2.9 启动守护进程)
[2.10 配置dmmonitor.ini](#2.10 配置dmmonitor.ini)
[三 同步校验](#三 同步校验)
DMDSC搭建参考之前的文章。
一 环境说明
|-----------|-----------------|--------|----------|
| 机器名 | IP地址 | 实例名 | 操作系统 |
| dmdsc0 | 192.168.159.133 | dmdsc0 | RedHat7 |
| dmdsc1 | 192.168.159.135 | dmdsc1 | RedHat7 |
| zhft | 192.168.159.124 | zhft | Kylin3.2 |
| test(监视器) | 12.168.159.140 | | |
|--------|----------|------------------|-----------------|----------|-------------|
| 实例名 | PORT_NUM | MAL_INST_DW_PORT | MAL_HOST | MAL_PORT | MAL_DW_PORT |
| dmdsc0 | 8344 | 4567 | 192.168.159.133 | 8338 | 3567 |
| dmdsc1 | 8346 | 4568 | 192.168.159.135 | 8339 | 3568 |
| zhft | 9344 | 4569 | 192.168.159.124 | | 3569 |
二 搭建主备
DSC搭建完成集群查看集群状态

注意dmcss对dmserver的自动拉起功能先不要打开,避免影响到配置过程。正常退出DMDSC 集群的两个dmserver节点实例,不需要退出dmcss和dmasmsvr。
2.1 配置dmarch.ini
DMDSC0配置
|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| dmdba@dmdsc0 dsc0$ cat dmarch.ini #DaMeng Database Archive Configuration file #this is comments ARCH_WAIT_APPLY = 0 ARCHIVE_LOCAL1 ARCH_TYPE = LOCAL ARCH_DEST = +DMDATA/dmarch/DSC0/arch ARCH_FILE_SIZE = 128 ARCH_SPACE_LIMIT = 0 ARCH_FLUSH_BUF_SIZE = 2 ARCH_HANG_FLAG = 1 ARCHIVE_REMOTE1 ARCH_TYPE = REMOTE ARCH_DEST = DMDSC1 ARCH_INCOMING_PATH = +DMDATA/dmarch/DSC1/arch ARCH_FILE_SIZE = 128 ARCH_SPACE_LIMIT = 0 ARCH_FLUSH_BUF_SIZE = 2 |
DMDSC1配置
|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| dmdba@dmdsc1 dsc1$ more dmarch.ini #DaMeng Database Archive Configuration file #this is comments ARCH_WAIT_APPLY = 0 ARCHIVE_LOCAL1 ARCH_TYPE = LOCAL ARCH_DEST = +DMDATA/dmarch/DSC1/arch ARCH_FILE_SIZE = 128 ARCH_SPACE_LIMIT = 0 ARCH_FLUSH_BUF_SIZE = 2 ARCH_HANG_FLAG = 1 ARCHIVE_REMOTE1 ARCH_TYPE = REMOTE ARCH_DEST = DMDSC0 ARCH_INCOMING_PATH = +DMDATA/dmarch/DSC0/arch ARCH_FILE_SIZE = 128 ARCH_SPACE_LIMIT = 0 ARCH_FLUSH_BUF_SIZE = 2 |
保证集群的归档参数是开启的
2.2 备份DMDSC库
重启DMDSC集群的两个dmserver实例,然后再正常退出。在DMDSC集群生成有归档日志的情况下进行脱机备份,以便后续校验日志连续性时使用。
|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| dmdba@dmdsc0 bin$ ./dmrman use_ap=2 dcr_ini=/dm8/dmdata/dmdcr.ini dmrman V8 RMAN> BACKUP DATABASE '/dm8/dmdata/dsc0/dm.ini' full backupset '/dm8/dmbak/full_bak'; BACKUP DATABASE '/dm8/dmdata/dsc0/dm.ini' full backupset '/dm8/dmbak/full_bak'; file dm.key not found, use default license! Processing backupset /dm8/dmbak/full_bak Percent:100.00%Speed:0.00M/sCost:00:00:00Remaining:00:00:00 backup successfully! time used: 00:00:11.701 |
2.3 部署单实例备库

初始化之后还原备库
将备份文件传到备库主机上,备库还原文件
|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| dmdba@zhft bin$ ./dmrman use_ap=2 dmrman V8 RMAN> RESTORE DATABASE '/home/dmdba/dm/dmdbms/bin/dm.ini' FROM BACKUPSET '/dbbak/full_bak/'; RESTORE DATABASE '/home/dmdba/dm/dmdbms/bin/dm.ini' FROM BACKUPSET '/dbbak/full_bak/'; file dm.key not found, use default license! Percent:100.00%Speed:0.00M/sCost:00:00:00Remaining:00:00:00 restore successfully. time used: 662.230(ms) RMAN> RECOVER DATABASE '/home/dmdba/dm/dmdbms/bin/dm.ini' FOR STANDBY FROM BACKUPSET '/dbbak/full_bak/'; RECOVER DATABASE '/home/dmdba/dm/dmdbms/bin/dm.ini' FOR STANDBY FROM BACKUPSET '/dbbak/full_bak/'; ==============================Error Stack============================== DM603:备份集/dbbak/full_bak备份过程中未产生日志 ===================================================================== recover successfully! time used: 00:00:01.244 RMAN> RMAN> RECOVER DATABASE '/home/dmdba/dm/dmdbms/bin/dm.ini' UPDATE DB_MAGIC; RECOVER DATABASE '/home/dmdba/dm/dmdbms/bin/dm.ini' UPDATE DB_MAGIC; recover successfully! time used: 00:00:01.243 |
2.4 配置dm.ini
DMDSC0:
|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| #实例名,建议使用"组名_守护环境_序号"的命名方式,总长度不能超过 16 INSTANCE_NAME = GRP1_RT_DSC01 PORT_NUM = 8344 #数据库实例监听端口 DW_INACTIVE_INTERVAL = 60 #接收守护进程消息超时时间 ALTER_MODE_STATUS = 0 #不允许手工方式修改实例模式/状态/OGUID ENABLE_OFFLINE_TS = 2 #不允许备库 OFFLINE 表空间 MAL_INI = 1 #打开 MAL 系统 ARCH_INI = 1 #打开归档配置 RLOG_SEND_APPLY_MON = 64 #统计最近 64 次的日志发送信息 |
DMDSC1:
|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| #实例名,建议使用"组名_守护环境_序号"的命名方式,总长度不能超过 16 INSTANCE_NAME = GRP1_RT_DSC02 PORT_NUM = 8346 #数据库实例监听端口 DW_INACTIVE_INTERVAL = 60 #接收守护进程消息超时时间 ALTER_MODE_STATUS = 0 #不允许手工方式修改实例模式/状态/OGUID ENABLE_OFFLINE_TS = 2 #不允许备库 OFFLINE 表空间 MAL_INI = 1 #打开 MAL 系统 ARCH_INI = 1 #打开归档配置 RLOG_SEND_APPLY_MON = 64 #统计最近 64 次的日志发送信息 |
备库:
|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|---|
| #实例名,建议使用"组名_守护环境_序号"的命名方式,总长度不能超过 16 INSTANCE_NAME = GRP1_RT_01 PORT_NUM = 9344 #数据库实例监听端口 DW_INACTIVE_INTERVAL = 60 #接收守护进程消息超时时间 ALTER_MODE_STATUS = 0 #不允许手工方式修改实例模式/状态/OGUID ENABLE_OFFLINE_TS = 2 #不允许备库 OFFLINE 表空间 MAL_INI = 1 #打开 MAL 系统 ARCH_INI = 1 #打开归档配置 RLOG_SEND_APPLY_MON = 64 #统计最近 64 次的日志发送信息 | |
2.5 配置dmmal.ini
在DSC集群的dmmal.ini基础上,增加备库的配置项。各节点的dmmal.ini文件内容一致。
|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| MAL_CHECK_INTERVAL = 30 #MAL 链路检测时间间隔 MAL_CONN_FAIL_INTERVAL = 10 #判定 MAL 链路断开的时间 mal_inst0 mal_inst_name = DMDSC0 mal_host = 192.168.159.133 mal_port = 8338 MAL_INST_HOST = 192.168.159.133 #实例的对外服务 IP 地址 MAL_INST_PORT = 8344 #实例的对外服务端口,和 dm.ini 中的 PORT_NUM 一致 MAL_DW_PORT = 3567 #实例本地的守护进程监听 TCP 连接的端口 MAL_INST_DW_PORT = 4567 #实例监听守护进程 TCP 连接的端口 mal_inst1 mal_inst_name = DMDSC1 mal_host = 192.168.159.135 mal_port = 8339 MAL_INST_HOST = 192.168.159.135 MAL_INST_PORT = 8346 MAL_DW_PORT = 3568 MAL_INST_DW_PORT = 4568 MAL_INST2 MAL_INST_NAME = ATTG MAL_HOST = 192.168.159.124 MAL_PORT = 8738 MAL_INST_HOST = 192.168.159.124 MAL_INST_PORT = 9344 MAL_DW_PORT = 3569 MAL_INST_DW_PORT = 4569 |
2.6 配置dmarch.ini
DMDSC0、DMDSC1在后面添加
|-------------------------------------------------------------------|
| ARCHIVE_REALTIME ARCH_TYPE = REALTIME ARCH_DEST = ATTG #备库实例名 |
备库:
|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| dmdba@zhft ATTG$ cat dmarch.ini ARCHIVE_LOCAL1 ARCH_TYPE = LOCAL ARCH_DEST = /dbarch/dmarch ARCH_FILE_SIZE = 128 #单个归档文件大小 ARCH_SPACE_LIMIT = 0 ARCHIVE_REALTIME ARCH_TYPE = REALTIME ARCH_DEST = DMDSC0/DMDSC1 |
2.7 配置dmwatcher.ini
DMDSC0
|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| dmdba@dmdsc0 dsc0$ cat dmwatcher.ini GRP1 DW_TYPE = GLOBAL #全局守护类型 DW_MODE = MANUAL #手动切换模式 DW_ERROR_TIME = 60 #远程守护进程故障认定时间 INST_RECOVER_TIME = 60 #主库守护进程启动恢复的间隔时间 INST_ERROR_TIME = 35 #本地实例故障认定时间 INST_INI = /dm8/dmdata/dsc0/dm.ini #dm.ini 配置文件路径 DCR_INI = /dm8/dmdata/dmdcr.ini #dmdcr.ini 配置文件路径 INST_OGUID = 1000 #守护系统唯一 OGUID 值 INST_STARTUP_CMD = /dm8/dmdbms/bin/DmServiceDMDSC0 start #命令行方式启动 INST_AUTO_RESTART = 0 #关闭实例的自动启动功能 RLOG_SEND_THRESHOLD = 0 #指定主库发送日志到备库的时间阈值,默认关闭 RLOG_APPLY_THRESHOLD = 0 #指定备库重演日志的时间阈值,默认关闭 |
DMDSC1
|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| dmdba@dmdsc1 dsc1$ cat dmwatcher.ini GRP1 DW_TYPE = GLOBAL #全局守护类型 DW_MODE = MANUAL #手动切换模式 DW_ERROR_TIME = 60 #远程守护进程故障认定时间 INST_RECOVER_TIME = 60 #主库守护进程启动恢复的间隔时间 INST_ERROR_TIME = 35 #本地实例故障认定时间 INST_INI = /dm8/dmdata/dsc1/dm.ini #dm.ini 配置文件路径 DCR_INI = /dm8/dmdata/dmdcr.ini #dmdcr.ini 配置文件路径 INST_OGUID = 1000 #守护系统唯一 OGUID 值 INST_STARTUP_CMD = /dm8/dmdbs/bin/DmServiceDMDSC1 start #命令行方式启动 INST_AUTO_RESTART = 0 #关闭实例的自动启动功能 RLOG_SEND_THRESHOLD = 0 #指定主库发送日志到备库的时间阈值,默认关闭 RLOG_APPLY_THRESHOLD = 0 #指定备库重演日志的时间阈值,默认关闭 |
备库
|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| dmdba@zhft ATTG$ cat dmwatcher.ini GRP1 DW_TYPE = GLOBAL #全局守护类型 DW_MODE = MANUAL #手动切换模式 DW_ERROR_TIME = 60 #远程守护进程故障认定时间 INST_RECOVER_TIME = 60 #主库守护进程启动恢复的间隔时间 INST_ERROR_TIME = 35 #本地实例故障认定时间 INST_INI = /home/dmdba/dm/dmdbms/bin/dm.ini #dm.ini 配置文件路径 INST_OGUID = 1000 #守护系统唯一 OGUID 值 INST_STARTUP_CMD = /home/dmdba/dm/dmdbms/bin/dmserverd start #命令行方式启动 INST_AUTO_RESTART = 0 #关闭实例的自动启动功能 RLOG_SEND_THRESHOLD = 0 #指定主库发送日志到备库的时间阈值,默认关闭 RLOG_APPLY_THRESHOLD = 0 #指定备库重演日志的时间阈值,默认关闭 |
2.8 修改数据库模式
以mount状态启动主备库
|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| bin]./dmserver /dm8/dmdata/dsc0/dm.ini dcr_ini=/dm8/dmdata/dmdcr.ini mount bin\]./dmserver /dm8/dmdata/dsc1/dm.ini dcr_ini=/dm8/dmdata/dmdcr.ini mount 备库: dmdba@zhft bin$ ./dmserver dm.ini mount |
使用disql连接DMDSC集群中的任意一个节点,设置OGUID值。
|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| dmdba@dmdsc0 \~ disql sysdba/DMdba123@192.168.159.133:8344 服务器\[192.168.159.133:8344\]:处于普通配置状态 登录使用时间 : 38.420(ms) disql V8 SQL\> select status from vinstance; 行号 STATUS ---------- ------- 1 MOUNT 已用时间: 13.428(毫秒). 执行号:1. SQL> SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 1); DMSQL 过程已成功完成 已用时间: 136.697(毫秒). 执行号:2. SQL> SP_SET_OGUID(1000); DMSQL 过程已成功完成 已用时间: 589.788(毫秒). 执行号:3. SQL> ALTER DATABASE PRIMARY; 操作已执行 已用时间: 780.585(毫秒). 执行号:0. SQL> SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 0); DMSQL 过程已成功完成 已用时间: 81.040(毫秒). 执行号:4. |
备库
|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| dmdba@zhft bin ./disql sysdba/DMdba123@192.168.159.124:9344 服务器\[192.168.159.124:9344\]:处于普通配置状态 登录使用时间 : 3.605(ms) disql V8 SQL\> select status from vinstance; 行号 STATUS ---------- ------- 1 MOUNT 已用时间: 4.067(毫秒). 执行号:1. SQL> SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 1); DMSQL 过程已成功完成 已用时间: 32.417(毫秒). 执行号:2. SQL> SP_SET_OGUID(1000); DMSQL 过程已成功完成 已用时间: 5.450(毫秒). 执行号:3. SQL> ALTER DATABASE STANDBY; 操作已执行 已用时间: 22.821(毫秒). 执行号:0. SQL> SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 0); DMSQL 过程已成功完成 已用时间: 16.647(毫秒). 执行号:4. |
2.9 启动守护进程
创建启动脚本,路径修改为对应的文件路径。每个节点都开启守护进程。
|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| dmdba@zhft bin cp ./service_template/DmWatcherService ./dmwatcherd \[dmdba@zhft bin\] vi dmwatcherd 修改INI_PATH=/dbdata/dmdata/ATTG/dmwatcher.ini dmdba@zhft bin chmod +x dmwatcherd \[dmdba@zhft bin\] ./dmwatcherd start Starting dmwatcherd: OK |
2.10 配置dmmonitor.ini
在监视器主机上
|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| cat dmmonitor.ini MON_LOG_PATH = /dm8/dmdata/log MON_LOG_INTERVAL = 60 MON_LOG_FILE_SIZE = 64 MON_LOG_SPACE_LIMIT = 0 MON_DW_CONFIRM = 0 GRP1 MON_INST_OGUID = 1000 MON_DW_IP = 192.168.159.133:3567/192.168.159.135:3568 MON_DW_IP = 192.168.159.124:3569 |
开启监视器
|---------------------------------------|
| bin]$ ./dmmonitor path=dmmonitor.ini |


三 同步校验
主库创建测试表,插入数据,备库查看数据是否正常通过过来

备库:

更多