一、数据库部署
数据库部署可参考如下内容
centos7部署dm8数据库
唯一需要注意的先不要注册数据库服务
二、实时主备搭建
1、规划
主库信息如下:
实例名 | dm1 |
---|---|
PORT_NUM | 5236 |
MAL_INST_HOST | 192.168.197.15 |
MAL_INST_DW_PORT | 5237 |
MAL_DW_PORT | 5238 |
MAL_HOST | 10.0.0.15 |
MAL_PORT | 5239 |
MAL_INST_PORT | 5236 |
hostname | master |
instance_name | dm1 |
数据库服务名 | DmServicedm1 |
备库信息如下
实例名 | dm2 |
---|---|
PORT_NUM | 5236 |
MAL_INST_HOST | 192.168.197.16 |
MAL_INST_DW_PORT | 5237 |
MAL_DW_PORT | 5238 |
MAL_HOST | 10.0.0.16 |
MAL_PORT | 5239 |
MAL_INST_PORT | 5236 |
hostname | standby |
instance_name | dm2 |
数据库服务名 | DmServicedm2 |
2、数据准备
备份主库
备份时需停止数据库
[dmdba@master ~]$ DmServicedm1 stop
Stopping DmServicedm1: [ OK ]
#备份
[dmdba@master ~]$ dmrman
dmrman V8
RMAN> backup database '/dmdata/dmdb/dm.ini' backupset '/dmbackup/dmdb_full_01';
backup database '/dmdata/dmdb/dm.ini' backupset '/dmbackup/dmdb_full_01';
file dm.key not found, use default license!
Database mode = 0, oguid = 0
Normal of FAST
Normal of DEFAULT
Normal of RECYCLE
Normal of KEEP
Normal of ROLL
EP[0]'s cur_lsn[27813], file_lsn[27813]
Processing backupset /dmbackup/dmdb_full_01
[Percent:100.00%][Speed:0.00M/s][Cost:00:00:00][Remaining:00:00:00]
backup successfully!
time used: 00:00:01.176
恢复到备库
恢复三步走:restore,recover,update db_magic
[dmdba@standby ~]$ DmServicedm2 stop
Stopping DmServicedm2: [ OK ]
[dmdba@standby dmdb_full_01]$ dmrman
dmrman V8
RMAN> restore database '/dmdata/dmdb/dm.ini' from backupset '/dmbackup/dmdb_full_01';
restore database '/dmdata/dmdb/dm.ini' from backupset '/dmbackup/dmdb_full_01';
file dm.key not found, use default license!
[Percent:0.00%][Speed:0.00M/s][Cost:00:00:01][Remaining:00:00:00]Normal of FAST
Normal of DEFAULT
Normal of RECYCLE
Normal of KEEP
Normal of ROLL
[Percent:100.00%][Speed:0.00M/s][Cost:00:00:02][Remaining:00:00:00]
restore successfully.
time used: 00:00:02.338
RMAN> recover database '/dmdata/dmdb/dm.ini' from backupset '/dmbackup/dmdb_full_01';
recover database '/dmdata/dmdb/dm.ini' from backupset '/dmbackup/dmdb_full_01';
Database mode = 0, oguid = 0
Normal of FAST
Normal of DEFAULT
Normal of RECYCLE
Normal of KEEP
Normal of ROLL
EP[0]'s cur_lsn[27813], file_lsn[27813]
备份集[/dmbackup/dmdb_full_01]备份过程中未产生日志
recover successfully!
time used: 278.284(ms)
RMAN> recover database '/dmdata/dmdb/dm.ini' update db_magic;
recover database '/dmdata/dmdb/dm.ini' update db_magic;
Database mode = 0, oguid = 0
Normal of FAST
Normal of DEFAULT
Normal of RECYCLE
Normal of KEEP
Normal of ROLL
EP[0]'s cur_lsn[27813], file_lsn[27813]
recover successfully!
time used: 00:00:01.035
3、主库配置文件修改
dm.ini
以下是需要修改的参数
INSTANCE_NAME = DM1
PORT_NUM = 5236
DW_PORT = 5237
DW_ERROR_TIME = 60
ALTER_MODE_STATUS = 0
ENABLE_OFFLINE_TS = 2
MAL_INI = 1
ARCH_INI = 1
RLOG_SEND_APPLY_MON = 64
dmmal.ini
此文件是不存在的,需手动创建
MAL_CHECK_INTERVAL = 5 #MAL 链路检测时间间隔
MAL_CONN_FAIL_INTERVAL = 5 #判定 MAL 链路断开的时间
[MAL_INST1]
MAL_INST_NAME = DM1 #实例名,和 dm.ini 中的 INSTANCE_NAME 一致
MAL_HOST = 10.0.0.15 #MAL 系统监听 TCP 连接的 IP 地址
MAL_PORT = 5239 #MAL 系统监听 TCP 连接的端口
MAL_INST_HOST = 192.168.197.15 #实例的对外服务 IP 地址
MAL_INST_PORT = 5236 #实例的对外服务端口,和 dm.ini 中的 PORT_NUM 一致
MAL_DW_PORT = 5238 #实例本地的守护进程监听 TCP 连接的端口
MAL_INST_DW_PORT = 5237 #实例监听守护进程 TCP 连接的端口
[MAL_INST2]
MAL_INST_NAME = DM2
MAL_HOST = 10.0.0.16
MAL_PORT = 5239
MAL_INST_HOST = 192.168.197.16
MAL_INST_PORT = 5236
MAL_DW_PORT = 5238
MAL_INST_DW_PORT = 5237
dmarch.ini
如果未开启归档,此文件需手动创建
[ARCHIVE_LOCAL1]
ARCH_TYPE = LOCAL
ARCH_DEST = /dmarch
ARCH_FILE_SIZE = 1024
ARCH_SPACE_LIMIT = 20480
ARCH_FLUSH_BUF_SIZE = 0
[ARCHIVE_REALTIME]
ARCH_TYPE = REALTIME #实时归档
ARCH_DEST = dm2 #归档到备库
dmwatcher.ini
数据守护配置
[GRP1]
DW_TYPE = GLOBAL #全局守护类型
DW_MODE = MANUAL #手动切换模式
DW_ERROR_TIME = 10 #远程守护进程故障认定时间
INST_RECOVER_TIME = 60 #主库守护进程启动恢复的间隔时间
INST_ERROR_TIME = 10 #本地实例故障认定时间
INST_OGUID = 453331 #守护系统唯一 OGUID 值
INST_INI = /dmdata/dmdb/dm.ini #dm.ini 配置文件路径
INST_AUTO_RESTART = 1 #打开实例的自动启动功能
INST_STARTUP_CMD = /dmsoft/bin/dmserver #命令行方式启动
RLOG_SEND_THRESHOLD = 0 #指定主库发送日志到备库的时间阀值,默认关闭
RLOG_APPLY_THRESHOLD = 0 #指定备库重演日志的时间阀值,默认关闭
4、备库配置文件修改
dm.ini
INSTANCE_NAME = DM2
PORT_NUM = 5236
DW_PORT = 5237
DW_ERROR_TIME = 60
ALTER_MODE_STATUS = 0
ENABLE_OFFLINE_TS = 2
MAL_INI = 1
ARCH_INI = 1
RLOG_SEND_APPLY_MON = 64
dmmal.ini
MAL_CHECK_INTERVAL = 5 #MAL 链路检测时间间隔
MAL_CONN_FAIL_INTERVAL = 5 #判定 MAL 链路断开的时间
[MAL_INST1]
MAL_INST_NAME = DM1 #实例名,和 dm.ini 中的 INSTANCE_NAME 一致
MAL_HOST = 192.168.197.15 #MAL 系统监听 TCP 连接的 IP 地址
MAL_PORT = 5239 #MAL 系统监听 TCP 连接的端口
MAL_INST_HOST = 192.168.197.15 #实例的对外服务 IP 地址
MAL_INST_PORT = 5236 #实例的对外服务端口,和 dm.ini 中的 PORT_NUM 一致
MAL_DW_PORT = 5238 #实例本地的守护进程监听 TCP 连接的端口
MAL_INST_DW_PORT = 5237 #实例监听守护进程 TCP 连接的端口
[MAL_INST2]
MAL_INST_NAME = DM2
MAL_HOST = 192.168.197.16
MAL_PORT = 5239
MAL_INST_HOST = 192.168.197.16
MAL_INST_PORT = 5236
MAL_DW_PORT = 5238
MAL_INST_DW_PORT = 5237
dmarch.ini
[ARCHIVE_LOCAL1]
ARCH_TYPE = LOCAL
ARCH_DEST = /dmarch
ARCH_FILE_SIZE = 1024
ARCH_SPACE_LIMIT = 20480
ARCH_FLUSH_BUF_SIZE = 0
[ARCHIVE_REALTIME]
ARCH_TYPE = REALTIME
ARCH_DEST = dm1
dmwatcher.ini
[GRP1]
DW_TYPE = GLOBAL #全局守护类型
DW_MODE = MANUAL #手动切换模式
DW_ERROR_TIME = 10 #远程守护进程故障认定时间
INST_RECOVER_TIME = 60 #主库守护进程启动恢复的间隔时间
INST_ERROR_TIME = 10 #本地实例故障认定时间
INST_OGUID = 453331 #守护系统唯一 OGUID 值
INST_INI = /dmdata/dmdb/dm.ini #dm.ini 配置文件路径
INST_AUTO_RESTART = 1 #打开实例的自动启动功能
INST_STARTUP_CMD = /dmsoft/bin/dmserver #命令行方式启动
RLOG_SEND_THRESHOLD = 0 #指定主库发送日志到备库的时间阀值,默认关闭
RLOG_APPLY_THRESHOLD = 0 #指定备库重演日志的时间阀值,默认关闭
5、实时主备配置
以mount方式启动主库
dmserver /dmdata/dmdb/dm.ini mount
修改OGUID,及dm1为主库
SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 1);
sp_set_oguid(453331);
SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 0);
alter database primary;
以mount试启动备库
dmserver /dmdata/dmdb/dm.ini mount
修改OGUID,及dm2为备库
SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 1);
sp_set_oguid(453331);
SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 0);
SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 1);
alter database standby;
SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 0);
6、监视器配置
dmmonitor.ini配置
vi /dmdata/dmmonitor.ini
MON_DW_CONFIRM = 1
MON_LOG_PATH = /dmlog
MON_LOG_INTERVAL = 60
MON_LOG_FILE_SIZE = 32
MON_LOG_SPACE_LIMIT = 0
[GRP1]
MON_INST_OGUID = 453331
MON_DW_IP = 10.0.0.15:5238
MON_DW_IP = 10.0.0.16:5238
dmmonitor服务注册
/dmsoft/script/root/dm_service_installer.sh -t dmmonitor -monitor_ini /dmdata/dmmonitor.ini -p mon
7、实时主备启动
启动主库守护进程
[dmdba@master ~]$ DmWatcherServicedw1 start
Starting DmWatcherServicedw1: [ OK ]
启动备库守护进程
[dmdba@standby ~]$ DmWatcherServicedw2 start
Starting DmWatcherServicedw2: [ OK ]
启动监视器
[dmdba@dmmon dmdata]$ dmmonitor /dmdata/dmmonitor.ini
[monitor] 2022-05-05 10:14:59: DMMONITOR[4.0] V8
[monitor] 2022-05-05 10:14:59: DMMONITOR[4.0] IS READY.
查看主备信息
[monitor] 2022-05-05 10:14:59: 收到守护进程(DM2)消息
WTIME WSTATUS INST_OK INAME ISTATUS IMODE RSTAT N_OPEN FLSN CLSN
2022-05-05 10:14:58 OPEN OK DM2 OPEN STANDBY NULL 3 30274 30274
[monitor] 2022-05-05 10:14:59: 收到守护进程(DM1)消息
WTIME WSTATUS INST_OK INAME ISTATUS IMODE RSTAT N_OPEN FLSN CLSN
2022-05-05 10:14:59 OPEN OK DM1 OPEN PRIMARY VALID 3 30274 30274
8、主备切换测试
choose switchover grp1
Can choose one of the following instances to do switchover:
1: DM2
switchover DM2
[monitor] 2022-05-05 16:21:28: 开始切换实例DM2
[monitor] 2022-05-05 16:21:28: 通知守护进程DM1切换SWITCHOVER状态
[monitor] 2022-05-05 16:21:28: 守护进程(DM1)状态切换 [OPEN-->SWITCHOVER]
[monitor] 2022-05-05 16:21:29: 切换守护进程DM1为SWITCHOVER状态成功
[monitor] 2022-05-05 16:21:29: 通知守护进程DM2切换SWITCHOVER状态
[monitor] 2022-05-05 16:21:29: 守护进程(DM2)状态切换 [OPEN-->SWITCHOVER]
[monitor] 2022-05-05 16:21:29: 切换守护进程DM2为SWITCHOVER状态成功
[monitor] 2022-05-05 16:21:29: 实例DM1开始执行SP_SET_GLOBAL_DW_STATUS(0, 6)语句
[monitor] 2022-05-05 16:21:29: 实例DM1执行SP_SET_GLOBAL_DW_STATUS(0, 6)语句成功
[monitor] 2022-05-05 16:21:29: 实例DM2开始执行SP_SET_GLOBAL_DW_STATUS(0, 6)语句
[monitor] 2022-05-05 16:21:29: 实例DM2执行SP_SET_GLOBAL_DW_STATUS(0, 6)语句成功
[monitor] 2022-05-05 16:21:29: 实例DM1开始执行ALTER DATABASE MOUNT语句
[monitor] 2022-05-05 16:21:30: 实例DM1执行ALTER DATABASE MOUNT语句成功
[monitor] 2022-05-05 16:21:30: 实例DM2开始执行SP_APPLY_KEEP_PKG()语句
[monitor] 2022-05-05 16:21:31: 实例DM2执行SP_APPLY_KEEP_PKG()语句成功
[monitor] 2022-05-05 16:21:31: 实例DM2开始执行ALTER DATABASE MOUNT语句
[monitor] 2022-05-05 16:21:31: 实例DM2执行ALTER DATABASE MOUNT语句成功
[monitor] 2022-05-05 16:21:31: 实例DM1开始执行ALTER DATABASE STANDBY语句
[monitor] 2022-05-05 16:21:31: 实例DM1执行ALTER DATABASE STANDBY语句成功
[monitor] 2022-05-05 16:21:31: 实例DM2开始执行ALTER DATABASE PRIMARY语句
[monitor] 2022-05-05 16:21:32: 实例DM2执行ALTER DATABASE PRIMARY语句成功
[monitor] 2022-05-05 16:21:32: 通知实例DM2修改所有归档状态无效
[monitor] 2022-05-05 16:21:32: 修改所有实例归档为无效状态成功
[monitor] 2022-05-05 16:21:32: 实例DM1开始执行ALTER DATABASE OPEN FORCE语句
[monitor] 2022-05-05 16:21:33: 实例DM1执行ALTER DATABASE OPEN FORCE语句成功
[monitor] 2022-05-05 16:21:33: 实例DM2开始执行ALTER DATABASE OPEN FORCE语句
[monitor] 2022-05-05 16:21:33: 实例DM2执行ALTER DATABASE OPEN FORCE语句成功
[monitor] 2022-05-05 16:21:33: 实例DM1开始执行SP_SET_GLOBAL_DW_STATUS(6, 0)语句
[monitor] 2022-05-05 16:21:34: 实例DM1执行SP_SET_GLOBAL_DW_STATUS(6, 0)语句成功
[monitor] 2022-05-05 16:21:34: 实例DM2开始执行SP_SET_GLOBAL_DW_STATUS(6, 0)语句
[monitor] 2022-05-05 16:21:35: 实例DM2执行SP_SET_GLOBAL_DW_STATUS(6, 0)语句成功
[monitor] 2022-05-05 16:21:35: 通知守护进程DM1切换OPEN状态
[monitor] 2022-05-05 16:21:35: 守护进程(DM1)状态切换 [SWITCHOVER-->OPEN]
[monitor] 2022-05-05 16:21:36: 切换守护进程DM1为OPEN状态成功
[monitor] 2022-05-05 16:21:36: 通知守护进程DM2切换OPEN状态
[monitor] 2022-05-05 16:21:36: 守护进程(DM2)状态切换 [SWITCHOVER-->OPEN]
[monitor] 2022-05-05 16:21:37: 切换守护进程DM2为OPEN状态成功
[monitor] 2022-05-05 16:21:37: 通知组(GRP1)的守护进程执行清理操作
[monitor] 2022-05-05 16:21:37: 清理守护进程(DM1)请求成功
[monitor] 2022-05-05 16:21:37: 清理守护进程(DM2)请求成功
[monitor] 2022-05-05 16:21:37: 实例DM2切换成功
2022-05-05 16:21:37
#================================================================================#
GROUP OGUID MON_CONFIRM MODE MPP_FLAG
GRP1 453331 TRUE MANUAL FALSE
<<DATABASE GLOBAL INFO:>>
DW_IP MAL_DW_PORT WTIME WTYPE WCTLSTAT WSTATUS INAME INST_OK N_EP N_OK ISTATUS IMODE DSC_STATUS RTYPE RSTAT
192.168.197.16 5238 2022-05-05 16:21:36 GLOBAL VALID OPEN DM2 OK 1 1 OPEN PRIMARY DSC_OPEN REALTIME VALID
EP INFO:
INST_IP INST_PORT INST_OK INAME ISTATUS IMODE DSC_SEQNO DSC_CTL_NODE RTYPE RSTAT FSEQ FLSN CSEQ CLSN DW_STAT_FLAG
192.168.197.16 5236 OK DM2 OPEN PRIMARY 0 0 REALTIME VALID 4479 37738 4479 37738 NONE
<<DATABASE GLOBAL INFO:>>
DW_IP MAL_DW_PORT WTIME WTYPE WCTLSTAT WSTATUS INAME INST_OK N_EP N_OK ISTATUS IMODE DSC_STATUS RTYPE RSTAT
192.168.197.15 5238 2022-05-05 16:21:37 GLOBAL VALID OPEN DM1 OK 1 1 OPEN STANDBY DSC_OPEN REALTIME INVALID
EP INFO:
INST_IP INST_PORT INST_OK INAME ISTATUS IMODE DSC_SEQNO DSC_CTL_NODE RTYPE RSTAT FSEQ FLSN CSEQ CLSN DW_STAT_FLAG
192.168.197.15 5236 OK DM1 OPEN STANDBY 0 0 REALTIME INVALID 4453 35292 4453 35292 NONE
DATABASE(DM1) APPLY INFO FROM (DM2), REDOS_PARALLEL_NUM (1):
DSC_SEQNO[0], (RSEQ, SSEQ, KSEQ)[4453, 4453, 4453], (RLSN, SLSN, KLSN)[35292, 35292, 35292], N_TSK[0], TSK_MEM_USE[0]
REDO_LSN_ARR: (35292)
#================================================================================#
[monitor] 2022-05-05 16:21:39: 守护进程(DM2)状态切换 [OPEN-->RECOVERY]
WTIME WSTATUS INST_OK INAME ISTATUS IMODE RSTAT N_OPEN FLSN CLSN
2022-05-05 16:21:38 RECOVERY OK DM2 OPEN PRIMARY VALID 6 37738 37738
[monitor] 2022-05-05 16:21:41: 守护进程(DM2)状态切换 [RECOVERY-->OPEN]
WTIME WSTATUS INST_OK INAME ISTATUS IMODE RSTAT N_OPEN FLSN CLSN
2022-05-05 16:21:40 OPEN OK DM2 OPEN PRIMARY VALID 6 37738 37738
达梦技术社区
达梦技术社区 https://eco.dameng.com