DM8数据守护配置详情
- 前言
- 一、环境准备
- 二、配置文件
- 1.主库配置(关闭实例)
- 1.1 创建一个备份目录:
- 1.2 脱机全库备份:
- 1.3进入备份目录,远程复制备份文件到备库(root用户):
- 1.4 检查主库的dm.ini文件,参考值内容如下:
- 1.5 配置主库的dmmal.ini文件,与dm.ini文件同级目录直接vi dmmal.ini,添加内容如下:
- 1.6 配置主库的dmarch.ini文件,与dm.ini文件同级目录直接vi dmarch.ini,添加内容如下:
- 1.7 配置主库的dmwatcher.ini文件,与dm.ini文件同级目录直接vi dmwatcher.ini,添加内容如下:
- 1.8 启动主库为mount状态:
- 1.9 进入主库/dm8/bin,登录disql,执行下面4条语句
- 2.备库配置(关闭实例)
- 3.监视器配置
- 4.启动、验证数据守护主备库
- 三、总结
前言
DM数据守护( Data Watch )的简单概述:
是一种集成化的高可用、高性能数据 库解决方案,是数据库异地容灾的首选方案。通过部署 DM 数据守护,可以在 硬件故障 (如磁盘损坏)、自然灾害(地震、火灾)等极端情况下,避免数据损坏、丢失,保障数据安全,并且可以快速恢复数据库服务,满足用户不间断提供数据库服务的要求。与常规的数据库备份( Backup )、还原( Restore )技术相比,数据守护可以更快地恢复数据库服务。随着数据规模不断增长,通过还原手段恢复数据,往往需要数个小时、甚至更长时间,而数据守护基本不受数据规模的影响,只需数秒时间就可以将备库切换为主库对外提供数据库服务。
DM 数据守护(Data Watch)的实现原理:
将主库(生产库)产生的Redo日志传输到备库,备库接收并重新应用Redo 日志,从而实现备库与主库的数据同步。DM数据守护的核心思想是监控数据库状态,获取主、备库数据同步情况,为Redo 日志传输与重演过程中出现的各种异常情况提供一系列的解决方案。DM 数据守护系统结构参考下图。主要由主库、备库、Redo 日志、Redo 日志传输、Redo 日志重演、守护进程(dmwatcher)、监视器(dmmonitor)组成。
提示:以下是数据守护配置流程。
一、环境准备
类型 | IP | 数据库名 | 实例名 | 端口 |
---|---|---|---|---|
主库 | '10.10.66.170' | DM01 | DMSERVER01 | 5236 |
备库 | '10.10.66.173' | DM01 | DMSERVER02 | 5236 |
监视器 | '10.10.66.176' | DM01 | DMSERVER03 | 5236 |
二、配置文件
1.主库配置(关闭实例)
1.1 创建一个备份目录:
[dmdba@qml_01 dm8]$ mkdir backup
1.2 脱机全库备份:
[dmdba@qml_01 dm8]$ cd /dm8/bin
[dmdba@qml_01 bin]$ ./dmrman
dmrman V8
RMAN> BACKUP DATABASE '/dm8/data/DM01/dm.ini' FULL TO BACKUP_FILE1 BACKUPSET '/dm8/backup/BACKUP_FILE_01'
BACKUP DATABASE '/dm8/data/DM01/dm.ini' FULL TO BACKUP_FILE1 BACKUPSET '/dm8/backup/BACKUP_FILE_01'
file dm.key not found, use default license!
Database mode = 0, oguid = 0
EP[0]'s cur_lsn[136017]
BACKUP DATABASE [DM01],execute......
CMD CHECK LSN......
BACKUP DATABASE [DM01],collect dbf......
CMD CHECK ......
DBF BACKUP SUBS......
total 0 packages processed...
total 0 packages processed...
total 0 packages processed...
total 0 packages processed...
total 0 packages processed...
total 0 packages processed...
DBF BACKUP MAIN......
BACKUPSET [/dm8/backup/BACKUP_FILE_01] END, CODE [0]......
META GENERATING......
CMD END.CODE:[0]
backup successfully!
time used: 00:00:02.128
1.3进入备份目录,远程复制备份文件到备库(root用户):
[root@qml_01 /]# cd /dm8/backup/BACKUP_FILE_01/
[root@qml_01 BACKUP_FILE_01]# scp *.* 10.10.66.173:/dm8/backup
root@10.10.66.173's password:
BACKUP_FILE_01.bak 100% 12MB 71.8MB/s 00:00
BACKUP_FILE_01.meta 100% 85KB 8.1MB/s 00:00
1.4 检查主库的dm.ini文件,参考值内容如下:
INSTANCE_NAME = DMSERVER01
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
1.5 配置主库的dmmal.ini文件,与dm.ini文件同级目录直接vi dmmal.ini,添加内容如下:
MAL_CHECK_INTERVAL = 5
MAL_CONN_FAIL_INTERVAL = 5
[MAL_INST1]
MAL_INST_NAME = DMSERVER01
MAL_HOST = 10.10.66.170
MAL_PORT = 55101
MAL_INST_HOST = 10.10.66.170
MAL_INST_PORT = 5236
MAL_DW_PORT = 65101
MAL_INST_DW_PORT = 45101
[MAL_INST2]
MAL_INST_NAME = DMSERVER02
MAL_HOST = 10.10.66.173
MAL_PORT = 55121
MAL_INST_HOST = 10.10.66.173
MAL_INST_PORT = 5236
MAL_DW_PORT = 65121
MAL_INST_DW_PORT = 45121
1.6 配置主库的dmarch.ini文件,与dm.ini文件同级目录直接vi dmarch.ini,添加内容如下:
[ARCHIVE_REALTIME]
ARCH_TYPE = REALTIME
ARCH_DEST = DMSERVER02
[ARCHIVE_LOCAL1]
ARCH_TYPE = LOCAL
ARCH_DEST = /dm8/arch --------如果没有arch,需要mkdir /dm8/arch
ARCH_FILE_SIZE = 128
ARCH_SPACE_LIMIT = 0
1.7 配置主库的dmwatcher.ini文件,与dm.ini文件同级目录直接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/DM01/dm.ini
INST_AUTO_RESTART = 1
INST_STARTUP_CMD = /dm8/bin/dmserver
RLOG_SEND_THRESHOLD = 0
RLOG_APPLY_THRESHOLD = 0
1.8 启动主库为mount状态:
[dmdba@qml_01 ~]$ cd /dm8/bin
[dmdba@qml_01 bin]$ ./dmserver /dm8/data/DM01/dm.ini mount
file dm.key not found, use default license!
version info: develop
Use normal os_malloc instead of HugeTLB
Use normal os_malloc instead of HugeTLB
DM Database Server x64 V8 1-1-88-20.06.24-123627-ENT startup...
Database mode = 0, oguid = 0
License will expire on 2021-06-24
file lsn: 136017
ndct db load finished
ndct fill fast pool finished
nsvr_startup end.
aud sys init success.
aud rt sys init success.
systables desc init success.
ndct_db_load_info success.
SYSTEM IS READY.
1.9 进入主库/dm8/bin,登录disql,执行下面4条语句
[dmdba@qml_01 ~]$ cd /dm8/bin
[dmdba@qml_01 bin]$ ./disql SYSDBA/dameng123
服务器[LOCALHOST:5236]:处于普通配置状态
登录使用时间: 4.287(毫秒)
disql V8
SQL> SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 1);
DMSQL 过程已成功完成
已用时间: 53.261(毫秒). 执行号:1.
SQL> sp_set_oguid(453331);
DMSQL 过程已成功完成
已用时间: 51.355(毫秒). 执行号:2.
SQL> SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 0);
DMSQL 过程已成功完成
已用时间: 4.275(毫秒). 执行号:3.
SQL> alter database primary;
操作已执行
已用时间: 50.253(毫秒). 执行号:0.
SQL> exit
[dmdba@qml_01 bin]$ ./disql SYSDBA/dameng123
服务器[LOCALHOST:5236]:处于主库配置状态
登录使用时间: 3.262(毫秒)
disql V8
提示:以上是主库配置流程,登录disql查看服务器显示“处于主库配置状态”为配置流程无误。
2.备库配置(关闭实例)
2.1 备库还原恢复备份集,dmdba进入/dm8/bin下执行:
提示:备库还原恢复备份集前,先调整备份集的属主属组。
[root@qml02 ~]# cd /dm8/backup/
[root@qml02 backup]# ll
总用量 12800
-rw-r--r--. 1 root root 13016576 5月 28 14:10 BACKUP_FILE_01.bak
-rw-r--r--. 1 root root 86528 5月 28 14:10 BACKUP_FILE_01.meta
[root@qml02 backup]# chown dmdba:dinstall BACKUP_FILE_01.bak
[root@qml02 backup]# chown dmdba:dinstall BACKUP_FILE_01.meta
提示:下面分3步根据主库scp到备库的备份集来恢复数据库,分别是还原数据库,恢复数据库,更新db_magic数据库:
[dmdba@qml02 bin]$ ./dmrman CTLSTMT="RESTORE DATABASE '/dm8/data/DM01/dm.ini' FROM BACKUPSET'/dm8/backup'"
dmrman V8
RESTORE DATABASE '/dm8/data/DM01/dm.ini' FROM BACKUPSET '/dm8/backup'
file dm.key not found, use default license!
RESTORE DATABASE CHECK......
RESTORE DATABASE,data collect......
RESTORE DATABASE,database refresh ......
RESTORE BACKUPSET [/dm8/backup] START......
total 0 packages processed...
RESTORE DATABASE,UPDATE ctl file......
RESTORE DATABASE,REBUILD key file......
RESTORE DATABASE,CHECK db info......
RESTORE DATABASE,UPDATE db info......
CMD END.CODE:[0]
restore successfully.
time used: 00:00:02.373
[dmdba@qml02 bin]$ ./dmrman CTLSTMT="RECOVER DATABASE '/dm8/data/DM01/dm.ini' FROM BACKUPSET'/dm8/backup'"
dmrman V8
RECOVER DATABASE '/dm8/data/DM01/dm.ini' FROM BACKUPSET '/dm8/backup'
file dm.key not found, use default license!
Database mode = 0, oguid = 0
EP[0]'s cur_lsn[136017]
RESTORE RLOG CHECK......
CMD END.CODE:[603],DESC:[备份集[/dm8/backup]备份过程中未产生日志]
备份集[/dm8/backup]备份过程中未产生日志
recover successfully!
time used: 330.271(ms)
[dmdba@qml02 bin]$ ./dmrman CTLSTMT="RECOVER DATABASE '/dm8/data/DM01/dm.ini' UPDATE DB_MAGIC"
dmrman V8
RECOVER DATABASE '/dm8/data/DM01/dm.ini' UPDATE DB_MAGIC
file dm.key not found, use default license!
Database mode = 0, oguid = 0
EP[0]'s cur_lsn[136017]
EP[0]'s apply_lsn[136017] >= end_lsn[136017]
recover successfully!
time used: 00:00:01.004
2.2 检查备库的dm.ini文件,参考值内容如下:
INSTANCE_NAME = DMSERVER02
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
2.3 配置备库的dmmal.ini文件,与dm.ini文件同级目录直接vi dmmal.ini,添加内容如下:
MAL_CHECK_INTERVAL = 5
MAL_CONN_FAIL_INTERVAL = 5
[MAL_INST1]
MAL_INST_NAME = DMSERVER01
MAL_HOST = 10.10.66.170
MAL_PORT = 55101
MAL_INST_HOST = 10.10.66.170
MAL_INST_PORT = 5236
MAL_DW_PORT = 65101
MAL_INST_DW_PORT = 45101
[MAL_INST2]
MAL_INST_NAME = DMSERVER02
MAL_HOST = 10.10.66.173
MAL_PORT = 55121
MAL_INST_HOST = 10.10.66.173
MAL_INST_PORT = 5236
MAL_DW_PORT = 65121
MAL_INST_DW_PORT = 45121
2.4 配置备库的dmarch.ini文件,与dm.ini文件同级目录直接vi dmarch.ini,添加内容如下:
[ARCHIVE_REALTIME]
ARCH_TYPE = REALTIME
ARCH_DEST =DMSERVER01
[ARCHIVE_LOCAL1]
ARCH_TYPE = LOCAL
ARCH_DEST = /dm8/arch --------------如果没有arch,需要mkdir /dm8/arch
ARCH_FILE_SIZE = 128
ARCH_SPACE_LIMIT = 0
2.5 配置备库的dmwatcher.ini文件,与dm.ini文件同级目录直接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/DM01/dm.ini
INST_AUTO_RESTART = 1
INST_STARTUP_CMD = /dm8/bin/dmserver
RLOG_APPLY_THRESHOLD = 0
2.6 启动备库为mount状态:
[dmdba@qml02 DM01]$ cd /dm8/bin
[dmdba@qml02 bin]$ ./dmserver /dm8/data/DM01/dm.ini mount
file dm.key not found, use default license!
version info: develop
Use normal os_malloc instead of HugeTLB
Use normal os_malloc instead of HugeTLB
DM Database Server x64 V8 1-1-88-20.06.24-123627-ENT startup...
Database mode = 0, oguid = 0
License will expire on 2021-06-24
file lsn: 136017
ndct db load finished
ndct fill fast pool finished
nsvr_startup end.
aud sys init success.
aud rt sys init success.
systables desc init success.
ndct_db_load_info success.
SYSTEM IS READY.
2.7 进入备库/dm8/bin,登录disql,执行下面4条语句
[dmdba@qml02 ~]$ cd /dm8/bin
[dmdba@qml02 bin]$ ./disql SYSDBA/dameng123
服务器[LOCALHOST:5236]:处于普通配置状态
登录使用时间: 2.746(毫秒)
disql V8
SQL> SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 1);
DMSQL 过程已成功完成
已用时间: 6.051(毫秒). 执行号:1.
SQL> sp_set_oguid(453331);
DMSQL 过程已成功完成
已用时间: 61.682(毫秒). 执行号:2.
SQL> alter database standby;
操作已执行
已用时间: 30.100(毫秒). 执行号:0.
SQL> SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 0);
DMSQL 过程已成功完成
已用时间: 4.372(毫秒). 执行号:3.
SQL> exit
[dmdba@qml02 bin]$ ./disql SYSDBA/dameng123
服务器[LOCALHOST:5236]:处于备库配置状态
登录使用时间: 2.394(毫秒)
disql V8
提示:以上是备库配置流程,登录disql查看服务器显示“处于备库配置状态”为配置流程无误。
3.监视器配置
3.1 进入/dm8/data/DM01, vi dmmonitor.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.66.170:65101
MON_DW_IP = 10.10.66.173:65121
3.2 添加MON_LOG_PATH = /dm8/data/log 文件
[dmdba@qml_03 DM01]$ cd /dm8/data/
[dmdba@qml_03 data]$ mkdir log
4.启动、验证数据守护主备库
4.1 启动主库
[dmdba@qml_01 bin]$ ./dmwatcher /dm8/data/DM01/dmwatcher.ini
DMWATCHER[4.0] V8
DMWATCHER[4.0] IS READY
4.2 启动备库
[dmdba@qml02 bin]$ ./dmwatcher /dm8/data/DM01/dmwatcher.ini
DMWATCHER[4.0] V8
DMWATCHER[4.0] IS READY
4.3 数据守护验证
重新通过disql登录主库,服务器状态为:处于主库打开状态:
[dmdba@qml_01 bin]$ ./disql sysdba/dameng123
服务器[LOCALHOST:5236]:处于主库打开状态
登录使用时间: 3.006(毫秒)
disql V8
重新通过disql登录备库,服务器状态为:处于主库打开状态:
[dmdba@qml02 bin]$ ./disql sysdba/dameng123
服务器[LOCALHOST:5236]:处于备库打开状态
登录使用时间: 3.045(毫秒)
disql V8
登录监视器服务验证:
[dmdba@qml_03 bin]$ ./dmmonitor /dm8/data/DM01/dmmonitor.ini
[monitor] 2021-05-28 16:53:03: DMMONITOR[4.0] V8
[monitor] 2021-05-28 16:53:03: DMMONITOR[4.0] IS READY.
[monitor] 2021-05-28 16:53:03: 收到守护进程(DMSERVER01)消息
WTIME WSTATUS INST_OK INAME ISTATUS IMODE RSTAT N_OPEN FLSN CLSN
2021-05-28 16:53:04 OPEN OK DMSERVER01 OPEN PRIMARY VALID 2 138366 138366
[monitor] 2021-05-28 16:53:03: 收到守护进程(DMSERVER02)消息
WTIME WSTATUS INST_OK INAME ISTATUS IMODE RSTAT N_OPEN FLSN CLSN
2021-05-28 16:53:03 OPEN OK DMSERVER02 OPEN STANDBY VALID 2 138366 138366
提示:为了帮助大家更加直观的理解DM 数据守护方案,以上就是展示如何配置一个完整的数据守护读写分离集群的过程,配置方案为一个主库、一个即时备库和一个监视器。
三、总结
以上就是今天我要分享的内容,全部真实数据,实操分享,希望对大家有所帮助。