目录
配置 DMDSC 主备环境
DMDSC
主备环境搭建和单节点主备环境搭建步骤类似,区别主要在于首先要准备DMDSC 集群环境,
DM8
支持单节点和单节点、
DMDSC
集群和单节点之间搭建主备环境。
1 配置说明
DMDSC
集群可以作为主库,也可以作为实时备库、即时备库或者异步备库,一般建议将 DMDSC
集群配置为主库,将单节点配置为备库。如果要将
DMDSC
集群作为备库配置在数据守护系统中,则要将其作为一个整体配置在源库的 dmarch.ini
中,也就是
DMDSC
集群所有节点要配置在同一个归档配置项中,每个节点实例名以“/
”分隔开来。
假如
DMDSC
集群有两个节点
GRP1_RT_DSC01
和
GRP1_RT_DSC02
,
DMDSC
集群要作为备库进行配置,其源库为 A
,则要在
A
的
dmarch.ini
文件中增加
DMDSC
集群的归档配置,这里以实时备库为例说明如下:
[ARCHIVE_REALTIME1]
ARCH_TYPE = REALTIME
ARCH_DEST = GRP1_RT_DSC01/GRP1_RT_DSC02
如果
DMDSC
集群要作为即时备库或者异步备库来配置,
ARCH_DEST
的配置方式和示例中是相同的,ARCH_TYPE
则要分别替换为
TIMELY
或者
ASYNC
,中括号内的配置项名称中包含的归档类型也建议修改和 ARCH_TYPE
一致。
而如果异步备库的源库为
DMDSC
集群,则要求
DMDSC
集群中的所有节点都将
INI
参数TIMER_INI
置为
1
并配置
dmtimer.ini
。
2 环境说明
准备三台机器
DW_P
、
DW_S
、
DW_M
,
DW_P
和
DW_S
用来部署主备库,
DW_M
用来部署确认监视器。其中 DW_P
和
DW_S
配置两块网卡,一块接入内部网络交换模块,一块接入到外部交换机,DW_M
接入内部网络。
三台机器事先都安装了 DM
,安装路径为
’/dm’
,执行程序保存在
’/dm/bin’
目录中,数据存放路径为’/dm/data’
。
各主备库的实例名建议采用“组名
_
守护环境
_
序号”的方式命名,方便按组区分不同实例,注意总长度不能超过 16
。本示例中组名为“
GRP1
”,配置为实时主备,主库
DMDSC集群的两个节点实例名分别命名为“GRP1_RT_DSC01
”、“
GRP1_RT_DSC02
”,备库命名 为“GRP1_RT_01
”。
3 配置 DMDSC 主库环境
使用
DMDSC
集群手册《
DM8
共享存储集群》搭建好两节点
DMDSC
集群环 ,DMDSC
实例名分别为
GRP1_RT_DSC01
、
GRP1_RT_DSC02
。
注意 !! dmcss 对 dmserver 的自动拉起功能先不要打开,避免影响到配置过程。搭建完成后,正常退出 DMDSC 集群的两个 dmserver 节点实例,不需要退出 dmcss和 dmasmsvr 。
3.1 配置 dmarch.ini
分别编辑两个
DMDSC
节点的
dmarch.ini
文件,增加本地归档和远程归档,并且设置本地归档共享参数 ARCH_LOCAL_SHARE
为
1
。
dmarch.ini
文件放在各自
dm.ini
中指定的 CONFIG_PATH
目录下。
!!!注意:若
DMDSC
主库环境搭建时未打开本地归档共享参数
ARCH_LOCAL_SHARE
为
1
, 而是在后续搭建主备过程中打开该参数,并且本地归档路径发生了变化,需要保证 DMDSC主库本地归档的完整性,例如将本地归档路径发生变化前的归档文件拷至变化后的路径下,否则 DMDSC 主备环境会由于主库归档日志不完整,将备库归档状态置为
INVALID
,归档同步失败(dmmonitor
执行
show arch send info EP
,系统报错)。
(
1
)配置
GRP1_RT_DSC01
的
dmarch.ini
文件
ARCH_LOCAL_SHARE = 1
[ARCHIVE_LOCAL1]
ARCH_TYPE = LOCAL
ARCH_DEST = +DMDATA/DSC/DSC01/arch
ARCH_FILE_SIZE = 128
ARCH_SPACE_LIMIT = 0
[ARCHIVE_REMOTE]
ARCH_TYPE = REMOTE
ARCH_DEST = GRP1_RT_DSC02
ARCH_FILE_SIZE = 128
ARCH_SPACE_LIMIT = 0
ARCH_INCOMING_PATH = +DMDATA/DSC/DSC02/arch
(
2
)配置
GRP1_RT_DSC02
的
dmarch.ini
文件
ARCH_LOCAL_SHARE = 1
[ARCHIVE_LOCAL1]
ARCH_TYPE = LOCAL
ARCH_DEST = +DMDATA/DSC/DSC02/arch
ARCH_FILE_SIZE = 128
ARCH_SPACE_LIMIT = 0
[ARCHIVE_REMOTE]
ARCH_TYPE = REMOTE
ARCH_DEST = GRP1_RT_DSC01
ARCH_FILE_SIZE = 128
ARCH_SPACE_LIMIT = 0
ARCH_INCOMING_PATH = +DMDATA/DSC/DSC01/arch
3.2 配置 dm.ini
分别编辑两个
DMDSC
节点的
dm.ini
文件,打开归档参数:
ARCH_INI = 1
3.3 备份 DMDSC 库
重启
DMDSC
集群的两个
dmserver
实例,然后再正常退出。在
DMDSC
集群生成有归档日志的情况下进行脱机备份,以便后续校验日志连续性时使用。
--启动 dmrman
./dmrman use_ap=2 dcr_ini=/dm/data/DSC/conf/dmdcr1.ini
--脱机备份 DMDSC 集群
RMAN>BACKUP DATABASE '/dm/data/DSC/DSC01/dm.ini' FULL BACKUPSET
'/dm/data/DSC/DSC01/bak/db_full_bak_for_DSC';
4 配置单节点备库
按照以下步骤准备单节点备库环境:
--初始化备库
./dminit path=/dm/data/EP01/
--启动 dmrman
./dmrman use_ap=2
--使用 DMDSC 库的备份集还原恢复到单节点备库
RMAN>RESTORE DATABASE '/dm/data/EP01/DAMENG/dm.ini' FROM BACKUPSET
'/dm/data/DSC/DSC01/bak/db_full_bak_for_DSC';
RMAN>RECOVER DATABASE '/dm/data/EP01/DAMENG/dm.ini' FROM BACKUPSET
'/dm/data/DSC/DSC01/bak/db_full_bak_for_DSC';
RMAN>RECOVER DATABASE '/dm/data/EP01/DAMENG/dm.ini' UPDATE DB_MAGIC;
5 配置 dm.ini
依次配置
DMDSC
主库所有节点和单节点备库的
dm.ini
文件,修改数据守护相关的参数配置。
(
1
)配置
GRP1_RT_DSC01
的
dm.ini
文件
#实例名,建议使用―组名_守护环境_序号‖的命名方式,总长度不能超过 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 次的日志发送信息
(
2
)配置
GRP1_RT_DSC02
的
dm.ini
文件
INSTANCE_NAME = GRP1_RT_DSC02
PORT_NUM = 8346
DW_INACTIVE_INTERVAL = 60
ALTER_MODE_STATUS = 0
ENABLE_OFFLINE_TS = 2
MAL_INI = 1
ARCH_INI = 1
RLOG_SEND_APPLY_MON = 64
(
3
)配置
GRP1_RT_01
的
dm.ini
文件
INSTANCE_NAME = GRP1_RT_01
PORT_NUM = 9344
DW_INACTIVE_INTERVAL = 60
ALTER_MODE_STATUS = 0
ENABLE_OFFLINE_TS = 2
MAL_INI = 1
ARCH_INI = 1
RLOG_SEND_APPLY_MON = 64
6 配置 dmmal.ini
在
DMDSC
集群的
dmmal.ini
文件基础上,增加备库
GRP1_RT_01
的配置项。所有节点实例的dmmal.ini
文件内容是一致的,配置完成后,拷贝到每个节点实例dm.ini 中指定的
CONFIG_PATH
目录下。
MAL_CHECK_INTERVAL = 30 #MAL 链路检测时间间隔
MAL_CONN_FAIL_INTERVAL = 10 #判定 MAL 链路断开的时间
[MAL_INST0]
MAL_INST_NAME = GRP1_RT_DSC01 #实例名,和 dm.ini 中的 INSTANCE_NAME 一致
MAL_HOST = 192.168.0.141 #MAL 系统监听 TCP 连接的 IP 地址
MAL_PORT = 8338 #MAL 系统监听 TCP 连接的端口
MAL_INST_HOST = 192.168.1.131 #实例的对外服务 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 = GRP1_RT_DSC02
MAL_HOST = 192.168.0.141
MAL_PORT = 8339
MAL_INST_HOST = 192.168.1.131
MAL_INST_PORT = 8346
MAL_DW_PORT = 3568
MAL_INST_DW_PORT = 4568
[MAL_INST2]
MAL_INST_NAME = GRP1_RT_01
MAL_HOST = 192.168.0.142
MAL_PORT = 8738
MAL_INST_HOST = 192.168.1.132
MAL_INST_PORT = 9344
MAL_DW_PORT = 3569
MAL_INST_DW_PORT = 4569
7 配置 dmarch.ini
再次编辑各个节点的
dmarch.ini
文件,增加实时归档配置。
(
1
)修改
GRP1_RT_DSC01
的
dmarch.ini
文件
ARCH_LOCAL_SHARE = 1
[ARCHIVE_LOCAL1]
ARCH_TYPE = LOCAL
ARCH_DEST = +DMDATA/DSC/DSC01/arch
ARCH_FILE_SIZE = 128
ARCH_SPACE_LIMIT = 0
[ARCHIVE_REMOTE]
ARCH_TYPE = REMOTE
ARCH_DEST = GRP1_RT_DSC02
ARCH_FILE_SIZE = 128
ARCH_SPACE_LIMIT = 0
ARCH_INCOMING_PATH = +DMDATA/DSC/DSC02/arch
[ARCHIVE_REALTIME]
ARCH_TYPE = REALTIME
ARCH_DEST = GRP1_RT_01
(
2
)修改
GRP1_RT_DSC02
的
dmarch.ini
文件
ARCH_LOCAL_SHARE = 1
[ARCHIVE_LOCAL1]
ARCH_TYPE = LOCAL
ARCH_DEST = +DMDATA/DSC/DSC02/arch
ARCH_FILE_SIZE = 128
ARCH_SPACE_LIMIT = 0
[ARCHIVE_REMOTE]
ARCH_TYPE = REMOTE
ARCH_DEST = GRP1_RT_DSC01
ARCH_FILE_SIZE = 128
ARCH_SPACE_LIMIT = 0
ARCH_INCOMING_PATH = +DMDATA/DSC/DSC01/arch
[ARCHIVE_REALTIME]
ARCH_TYPE = REALTIME
ARCH_DEST = GRP1_RT_01
(
3
)修改
GRP1_RT_01
的
dmarch.ini
文件
[ARCHIVE_LOCAL1]
ARCH_TYPE = LOCAL
ARCH_DEST = /dm/data/EP01/DAMENG/arch
ARCH_FILE_SIZE = 128
ARCH_SPACE_LIMIT = 0
[ARCHIVE_REALTIME1]
ARCH_TYPE = REALTIME
ARCH_DEST = GRP1_RT_DSC01/GRP1_RT_DSC02
8 配置 dmwatcher.ini
依次配置每个节点实例的
dmwatcher.ini
文件,放到各自
dm.ini
中指定的CONFIG_PATH 目录下。
另外要注意,
DMDSC
集群各节点实例的自动拉起是由各自本地的
dmcss
执行的,不是由守护进程执行,如果要打开 DMDSC
集群的自动拉起,需要再去配置
dmdcr.ini
中的自动拉起参数,为避免 dmcss
在所有配置步骤完成之前提前将
dmserver
自动拉起,这里先不修改 dmdcr.ini
配置,放到后面步骤中修改。
(
1
)配置
GRP1_RT_DSC01
的
dmwatcher.ini
文件
[GRP1]
DW_TYPE = GLOBAL #全局守护类型
DW_MODE = MANUAL #手动切换模式
DW_ERROR_TIME = 60 #远程守护进程故障认定时间
INST_RECOVER_TIME = 60 #主库守护进程启动恢复的间隔时间
INST_ERROR_TIME = 35 #本地实例故障认定时间
INST_INI = /dm/data/DSC/DSC01/dm.ini#dm.ini 配置文件路径
DCR_INI = /dm/data/DSC/conf/dmdcr1.ini #dmdcr.ini 配置文件路径
INST_OGUID = 1000 #守护系统唯一 OGUID 值
INST_STARTUP_CMD = /dm/bin/dmserver #命令行方式启动
INST_AUTO_RESTART = 0 #关闭实例的自动启动功能
RLOG_SEND_THRESHOLD = 0 #指定主库发送日志到备库的时间阈值,默认关闭
RLOG_APPLY_THRESHOLD = 0 #指定备库重演日志的时间阈值,默认关闭
(
2
)配置
GRP1_RT_DSC02
的
dmwatcher.ini
文件
[GRP1]
DW_TYPE = GLOBAL
DW_MODE = MANUAL
DW_ERROR_TIME = 60
INST_RECOVER_TIME = 60
INST_ERROR_TIME = 35
INST_INI = /dm/data/DSC/DSC02/dm.ini
DCR_INI = /dm/data/DSC/conf/dmdcr2.ini
INST_OGUID = 1000
INST_STARTUP_CMD = /dm/bin/dmserver
INST_AUTO_RESTART = 0
RLOG_SEND_THRESHOLD = 0
RLOG_APPLY_THRESHOLD = 0
(
3
)配置
GRP1_RT_01
的
dmwatcher.ini
文件
[GRP1]
DW_TYPE = GLOBAL
DW_MODE = MANUAL
DW_ERROR_TIME = 60
INST_RECOVER_TIME = 60
INST_ERROR_TIME = 35
INST_INI = /dm/data/EP01/dm.ini
INST_OGUID = 1000
INST_STARTUP_CMD = /dm/bin/dmserver
INST_AUTO_RESTART = 0 #对单节点,如果需要打开自动拉起功能,将此配置修改为 1 即可
RLOG_SEND_THRESHOLD = 0
RLOG_APPLY_THRESHOLD = 0
9 配置 dmmonitor.ini
编辑
dmmonitor.ini
文件,放在
/dm/data
目录下
:
MON_LOG_PATH = /dm/data/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.0.141:3567/192.168.0.141:3568
MON_DW_IP = 192.168.0.142:3569
10 配置 dmdcr.ini
DMDSC 集群中
dmserver
的自动拉起是由
dmcss
执行的,如果不需要打开
dmcss
的自动拉起功能,则可以跳过此部分。否则需要修改 dmdcr.ini
中的自动拉起配置参数,此参数修改完后,需要重启 dmcss 才可以生效,为了避免重启
dmcss
引发
dmasmsvr
被强制关闭,这里先将
dmcss和 dmasmsvr
都正常退出。
另外要注意,本示例中是用命令行方式启动,启动参数中指定以
Mount
方式拉起dmserver,如果是用服务方式启动,服务脚本中也一定要指定以
Mount 方式拉起dmserver
。
1.
打开
GRP1_RT_DSC01
的自动拉起参数
修改对应
dmcss
的
dmdcr.ini
文件,打开自动拉起参数。
#打开 DB 重启参数,命令行方式启动
DMDCR_DB_RESTART_INTERVAL = 60
DMDCR_DB_STARTUP_CMD = /dm/bin/dmserver path=/dm/data/DSC/DSC01/dm.ini
dcr_ini=/dm/data/DSC/conf/dmdcr1.ini mount
2.
打开
GRP1_RT_DSC02
的自动拉起参数
修改对应
dmcss
的
dmdcr.ini
文件,打开自动拉起参数。
#打开 DB 重启参数,命令行方式启动
DMDCR_DB_RESTART_INTERVAL = 60
DMDCR_DB_STARTUP_CMD = /dm/bin/dmserver path=/dm/data/DSC/DSC02/dm.ini
dcr_ini=/dm/data/DSC/conf/dmdcr2.ini mount
3.
重启
dmcss
和
dmasmsvr
./dmcss dcr_ini=/dm/data/DSC/conf/dmdcr1.ini
./dmcss dcr_ini=/dm/data/DSC/conf/dmdcr2.ini
./dmasmsvr dcr_ini=/dm/data/DSC/conf/dmdcr1.ini
./dmasmsvr dcr_ini=/dm/data/DSC/conf/dmdcr2.ini
11 启动主备库
注意实例都要使用
Mount
方式启动。
1.
启动
DMDSC
集群的两个
dmserver
实例
如果 dmcss 打开有自动拉起功能,也可以等待
dmcss
将本地的
dmserver
实例自动拉起(要保证以 Mount
方式拉起)。
手动启动命令如下:
./dmserver /dm/data/DSC/DSC01/dm.ini DCR_INI=/dm/data/DSC/conf/dmdcr1.ini mount
./dmserver /dm/data/DSC/DSC02/dm.ini DCR_INI=/dm/data/DSC/conf/dmdcr2.ini mount
2.
启动单节点备库
./dmserver /dm/data/EP01/dm.ini mount
12 设置 OGUID
启动命令行工具
DIsql
,连接
DMDSC
集群中的任意一个节点,设置
DMDSC
主库的OGUID 值。
SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 1);
SP_SET_OGUID(1000);
SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 0);
DIsql
连接单节点备库,设置备库
OGUID
。
SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 1);
SP_SET_OGUID(1000);
SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 0);
13 修改主备库模式
启动命令行工具
DIsql
,连接
DMDSC
集群中的任意一个节点,修改
DMDSC
库为 Primary 模式。
ALTER DATABASE PRIMARY;
DIsql
连接单节点备库,修改备库为
Standby
模式。
ALTER DATABASE STANDBY;
14 启动守护进程
启动
DMDSC
主库的所有守护进程:
./dmwatcher /dm/data/DSC/DSC01/dmwatcher.ini
./dmwatcher /dm/data/DSC/DSC02/dmwatcher.ini
启动备库的守护进程:
./dmwatcher /dm/data/EP01/dmwatcher.ini
15 启动监视器
启动数据守护监视器:
./dmmonitor path=/dm/data/dmmonitor.ini
监视器提供一系列命令,支持当前守护系统状态查看以及故障处理,可输入
help
命令,查看各种命令使用说明,结合实际情况选择使用。
另外,
DMDSC
集群也有自己的监视器工具,需要时也可以启动:
./dmcssm ini_path=/dm/data/DSC/conf/dmcssm.ini
至此
DMDSC
集群的实时数据守护系统搭建完毕,在搭建步骤和各项配置都正确的情况下,在监视器上执行 show
命令,可以监控到所有实例都处于
Open
状态,所有守护进程也都处于 Open
状态,即为正常运行状态。
更多详细信息请参考达梦数据库官方社区:https://eco.dameng.com