2021-01-23

DM8 实时主备安装部署

1 概述
数据库系统往往处在信息系统的核心位置,是系统正常运行的必要基础。因此,用户对数据库系统的安全性和可用性提出了很高的要求。传统的备份恢复技术,基于存储的远程镜像等方法可以满足用户对数据安全性的要求,但无法满足高可用性的要求,从出现故障,到解决故障、重新提供数据库服务的时间往往较长。用户迫切地希望有一种新的解决方案,可以同时满足数据安全性和高可用性的要求。
数据守护(Data Watch)是一种集成化的高可靠性解决方案,同时满足用户对数据安全性和高可用性的要求。解决由于硬件故障、自然灾害等原因导致的数据库服务长时间中断问题,满足用户不间断提供数据库服务的要求。达梦数据守护方案 DATA WATCH 的实现方式是一种基于守护进程的数据守护 。这种方案是将主机上的 REDO 日志通过 MAL 系统发送到备机上,备机将接收到的 EDO 日志重做,实现主备机数据一致。
2 系统架构
系统框架如下图所示:

在这里插入图片描述

3 硬件环境
系统的硬件环境如下:

硬件名称配置
Red Hat Enterprise Linux 6 -master 主库服务器内存:4G 磁盘:40G
Red Hat Enterprise Linux 6 -slave 备库服务器内存:4G 磁盘:40G

本地硬盘I/O读写测试
在这里插入图片描述

网络传输速度:
主机到备机
在这里插入图片描述

备机到主机
在这里插入图片描述

4 安装部署
4.1操作系统

服务器OS版本
主备库服务器Red Hat Enterprise Linux Server release 6.4

4.2数据库版本

版本号开发商
DM8 dm8_x86_rh6_64_ent_8.1.1.134武汉达梦数据库有限公司

4.3网络环境配置

数据库环境例举说明
IP设置主机:192.168.175.130、备机:192.168.175.131、监视器:192.168.175.130服务器对外服务IP

4.4端口规划

实例名PORT_NUMDW_PORTMAL_HOSTMAL_PORTMAL_DW_PORT
GRP1_RT_013214133141192.168.175.1306114152141
GRP1_RT_023214233142192.168.175.1316114252142

备注:
PORT_NUM:数据库实例监听端口
DW_PORT:守护进程监听端口
MAL_PORT:MAL监听端口
MAL_HOST:MAL的IP地址
MAL_DW_PORT:实例对应的守护进程监听TCP连接的端口,是各实例对应的守护进程之间,以及守护进程和监视器之间的通信端口
4.5 安装部署
(1)第一步 数据准备
主备机的数据库中的数据需要完全一样。可以通过数据文件拷贝或者冷备份还原的方式来实现。不能使用分别初始化库的方法,原因为:(1)每个库都有一个永久魔数,主库转送日志的时候会判断这个值是否一样。确保来自同一个库,不同的库传送不了日志。(2)dminit初始化数据库的时候,会生成随机密钥用于加密,每次生成的密钥都不相同,备库无法解析采用主库密钥加密的数据。
这里我们将主机数据文件整个拷贝到备机的/home/dmdba/dmdbms/data/DAMENG/,整个DAMENG目录拷贝到备机。
主库采用脱机备份:backup database
‘/home/dmdba/dmdbms/data/DAMENG/dm.ini’ full backupset ‘/home/dmdba/dmdbms/data/full_bak_01’;
在这里插入图片描述

把主库data目录下的文件全部拷贝到备库:
在这里插入图片描述

用脱机还原的方式还原备库数据:
命令:RESTORE DATABASE ‘/home/dmdba/dmdbms/data/DAMENG/dm.ini’ FROM BACKUPSET ‘/home/dmdba/dmdbms/data/full_bak_01’;
在这里插入图片描述

命令:RECOVER DATABASE ‘/home/dmdba/dmdbms/data/DAMENG/dm.ini’ FROM BACKUPSET ‘/home/dmdba/dmdbms/data/full_bak_01’;
在这里插入图片描述

命令:RECOVER DATABASE ‘/home/dmdba/dmdbms/data/DAMENG/dm.ini’ UPDATE DB_MAGIC;
在这里插入图片描述

注意:准备数据的时候,如果主库是新初始化的库,那么先正常启动并正常退出,然后再使用文件拷贝或者备份还原方式准备备库数据。
(2)第二步 一致性检查
在主机和备机上分别执行如下操作来验证是否一致:
以mount方式启动主备机器:
su - dmdba
cd /home/dmdba/dmdbms/bin
./dmserver /home/dmdba/dmdbms/data/DAMENG/dm.ini mount
使用disql工具查询主备机的lsn号:
disql sysdba/SYSDBA@localhost:32141
select file_lsn,cur_lsn from v$rlog;
主库:
在这里插入图片描述

备库:
在这里插入图片描述

查询永久魔数:
select PERMANENT_MAGIC;
主库:
在这里插入图片描述

备库:
在这里插入图片描述

确保LSN和永久魔数都一致的情况下,正常关闭各个数据库服务,检查完毕后关闭主备数据库服务。
(3)第三步 配置主机数据库配置文件
1)配置dm.ini:
NSTANCE_NAME = GRP1_RT_01
PORT_NUM = 32141 #数据库实例监听端口
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)配置dmmal.ini
#MAL链路检测时间间隔,取值范围(0s-1800s),默认30s,配置为0表示不进行MAL链路检测,数据守护环境,不建议配置为0,防止网络故障导致服务长时间阻塞
MAL_CHECK_INTERVAL = 5
#判定MAL链路断开的时间,取值范围(2s-1800s),默认10s
MAL_CONN_FAIL_INTERVAL = 5
[MAL_INST1]
##数据库实例名,与dm.ini的INSTANCE_NAME配置项保持一致,MAL系统中数据库实例名要保持唯一
MAL_INST_NAME = GRP1_RT_01
##MAL IP地址,使用MAL_HOST + MAL_PORT创建MAL链路
MAL_HOST = 192.168.175.130
##MAL监听端口
MAL_PORT = 61141
##MAL_INST_NAME实例对外服务IP地址
MAL_INST_HOST = 192.168.175.130
##MAL_INST_NAME实例对外服务端口,和dm.ini中的PORT_NUM保持一致
MAL_INST_PORT = 32141
##MAL_INST_NAME实例守护进程监听端口,其他守护进程或监视器使用MAL_HOST + MAL_DW_PORT创建TCP连接
MAL_DW_PORT = 52141
MAL_INST_DW_PORT = 33141 #实例监听守护进程TCP连接的端口
[MAL_INST2]
##数据库实例名,与dm.ini的INSTANCE_NAME配置项保持一致,MAL系统中数据库实例名要保持唯一
MAL_INST_NAME = GRP1_RT_02
##MAL IP地址,使用MAL_HOST + MAL_PORT创建MAL链路
MAL_HOST = 192.168.175.131
##MAL监听端口
MAL_PORT = 61142
##MAL_INST_NAME实例对外服务IP地址
MAL_INST_HOST = 192.168.175.131
##MAL_INST_NAME实例对外服务端口,和dm.ini中的PORT_NUM保持一致
MAL_INST_PORT = 32142
##MAL_INST_NAME实例守护进程监听端口,其他守护进程或监视器使用MAL_HOST + MAL_DW_PORT创建TCP连接
MAL_DW_PORT = 52142
##MAL链路网段标识,有效值范围(0-65535),默认0。设置此参数时,同一网段内的节点都设置相同,不同网段内的节点设置的值必须不一样
#MAL_LINK_MAGIC = 0
MAL_INST_DW_PORT = 33142

如图:
在这里插入图片描述

3)配置dmarch.ini
[ARCHIVE_LOCAL1] #REDO日志归档名
ARCH_TYPE = LOCAL #REDO日志归档类型,REALTIME/LOCAL/SYNC/ASYNC/REMOTE 分别表示实时归档/本地归档/同步归档/异步归档/远程归档
ARCH_DEST = /home/dmdba/dmdbms/data/DAMENG/arch #归档目标,实时归档、同步归档和异步归档设置为远程数据库实例名,本地归档为归档文件存放路径
ARCH_FILE_SIZE = 128 #单个REDO日志归档文件大小,单位Mb,取值范围(64M~2048M),仅对本地归档有效,缺省128M
ARCH_SPACE_LIMIT = 0 #REDO日志归档空间限制,当所有本地归档文件达到限制值时,系统自动删除最老的归档文件。单位Mb,0表示无空间限制>,取值范围(1024M~4294967294M),仅对本地归档有效,缺省为0。
[ARCHIVE_REALTIME]
ARCH_TYPE = REALTIME #实时归档
ARCH_DEST = GRP1_RT_02 #实时归档目标实例名

如图:
在这里插入图片描述

4)配置dmwatcher.ini:
[GROUP_A] #守护进程组名(长度不能超过16)
##守护类型,默认为LOCAL LOCAL:本地守护 REALTIME:实时主备 TIMELY:读写分离 MARCH:MPP主备
DW_TYPE = REALTIME
##切换模式,默认为MANUAL MANUAL:故障手动切换模式 AUTO:故障自动切换模式
DW_MODE = AUTO
##守护进程故障认定时间,取值范围为(3s~32767s),缺省15秒没有收到远程守护进程消息,即认定远程守护进程故障,对本地模式无效。另外此参数也是监视器认定守护进程的故障时间,超过设置的时间间隔仍没有收到守护进程消息,监视器认为守护进程出现故障。
DW_ERROR_TIME = 10
##数据库故障认定时间,取值范围为(3s~32767s),缺省15秒没有收到数据库发送的状态信息,即认定其监控的数据库出现故障
INST_ERROR_TIME = 10
##数据守护唯一标识码,同一守护进程组中的所有数据库、守护进程和监视器,都必须配置相同的OGUID值,取值范围为0-2147483647
INST_OGUID = 453331
##监控数据库dm.ini路径。dmwatcher从dm.ini配置文件获取DW_PORT信息,并进一步从dmmal.ini中获取MAL_HOST/MAL_DW_PORT等信息。
INST_INI = /home/dmdba/dmdbms/data/DAMENG/dm.ini
##是否自动重启数据库实例,0:不自动重启1:自动重启
INST_AUTO_RESTART = 1
##数据库启动命令。
##1. linux命令行方式启动(不能出现带有空格的路径):INST_STARTUP_CMD = /home/dmdba/dmdbms/bin/dmserver
##2. linux服务方式启动:INST_STARTUP_CMD = service 服务名 restart
##3. Windows命令行启动:INST_STARTUP_CMD = c:\dmdbms\bin\dmserver
##4. Windows服务方式启动: INST_STARTUP_CMD = net start 注册服务名(注册服务名,可通过DM服务查看器获取)
INST_STARTUP_CMD =/home/dmdba/dmdbms/bin/dmserver
##备库故障恢复检测时间间隔,取值范围0~86400s,缺省每60秒检查一下备库状态,满足故障恢复条件时,启动历史数据同步流程。数据守护系统启动完成后、Switchover主备切换后、Takeover备库接管后以及强制Open主库后,主库守护进程INST_RECOVER_TIME内存值会强制设置成0,确保尽快启动数据同步。另外,还可以通过监视器命令set recover time修改INST_RECOVER_TIME内存值。
INST_RECOVER_TIME = 60
RLOG_SEND_THRESHOLD = 0 #指定主库发送日志到备库的时间阀值,默认关闭
RLOG_APPLY_THRESHOLD = 0 #指定备库重演日志的时间阀值,默认关闭

如图:
在这里插入图片描述

5)启动主机数据库并做扫尾工作
以mount方式启动主机:
./dmserver /home/dmdba/dmdbms/data/DAMENG/dm.ini mount
在disql下设置数据守护唯一标识码OGUID:
./disql SYSDBA/SYSDBA@192.168.175.130:32141
sp_set_oguid(453331);
改值为dmwatch.ini中INST_OGUID值。
在这里插入图片描述
disql中修改修改数据库模式:
ALTER DATABASE PRIMARY;
在这里插入图片描述
(4)第四步 配置备机数据库
1)配置dm.ini:
NSTANCE_NAME = GRP1_RT_02
PORT_NUM = 32142
DW_INACTIVE_INTERVAL = 60
ALTER_MODE_STATUS = 0
ENABLE_OFFLINE_TS = 2
MAL_INI = 1
ARCH_INI = 1
RLOG_SEND_APPLY_MON = 64

2)配置dmmal.ini
MAL_CHECK_INTERVAL = 5
MAL_CONN_FAIL_INTERVAL = 5
[MAL_INST1]
MAL_INST_NAME = GRP1_RT_01
MAL_HOST = 192.168.175.130
MAL_PORT = 61141
MAL_INST_HOST = 192.168.175.130
MAL_INST_PORT = 32141
MAL_DW_PORT = 52141
MAL_INST_DW_PORT = 33141
[MAL_INST2]
MAL_INST_NAME = GRP1_RT_02
MAL_HOST = 192.168.75.131
MAL_PORT = 61142
MAL_INST_HOST = 192.168.175.131
MAL_INST_PORT = 32142
MAL_DW_PORT = 52142
MAL_INST_DW_PORT = 33142

如图:
在这里插入图片描述

3)配置dmarch.ini
[ARCHIVE_LOCAL1]
ARCH_TYPE = LOCAL
ARCH_DEST = /home/dmdba/dmdbms/data/DAMENG/arch
ARCH_FILE_SIZE = 128
ARCH_SPACE_LIMIT = 0
[ARCHIVE_REALTIME]
ARCH_TYPE = REALTIME
ARCH_DEST = GRP1_RT_01

如图:
在这里插入图片描述

4)配置dmwatcher.ini:
[GROUP_A]
DW_TYPE = REALTIME
DW_MODE = AUTO
DW_ERROR_TIME = 10
INST_ERROR_TIME = 10
INST_OGUID = 453331
INST_INI = /home/dmdba/dmdbms/data/DAMENG/dm.ini
INST_AUTO_RESTART = 1
INST_STARTUP_CMD =/home/dmdba/dmdbms/bin/dmserver
INST_RECOVER_TIME = 60
RLOG_SEND_THRESHOLD = 0
RLOG_APPLY_THRESHOLD = 0

如图:
在这里插入图片描述

5)启动主机数据库并做扫尾工作
以mount方式启动主机:
./dmserver /home/dmdba/dmdbms/data/DAMENG/dm.ini mount
在disql下设置数据守护唯一标识码OGUID:
./disql SYSDBA/SYSDBA@192.168.175.131:32142
sp_set_oguid(453331);
改值为dmwatch.ini中INST_OGUID值。
在这里插入图片描述

disql中修改修改数据库模式:
ALTER DATABASE STANDBY;
在这里插入图片描述

(5)第五步 配置监视器dmmonitor.ini(在备库上配置)
#是否配置为确认模式,缺省为0。0:监控模式1:确认模式
MON_DW_CONFIRM = 1
#日志文件路径,日志文件命名方式为“dmmonitor_年月日时分秒.log”,例如“dmmonitor_20150418230523.log”。其他请参考表后附加说明。
MON_LOG_PATH = /home/dmdba/dmdbms/data/DAMENG/log
#自动记录系统状态信息到日志文件的时间间隔,取值(0,1或者(53600)),单位秒,0表示不记录任何日志,1表示只记录监视器正常接收到的消息,53600表示除了记录监视器正常接收消息外,每隔指定的间隔另外记录系统信息到日志文件中,默认值为1。
MON_LOG_INTERVAL = 60
#单个日志文件大小,范围16~2048,单位为M,默认值为64,达到最大值后,会自动生成并切换到新的日志文件中,如果达到设定的总空间限制,会自动删除创建时间最早的日志文件。
MON_LOG_FILE_SIZE = 32
#日志总空间大小,取值0或者256~4096,单位为M,默认值为0,表示没有空间限制。
MON_LOG_SPACE_LIMIT = 0
#守护进程组名,与dmwatcher.ini中的守护进程组名保持一致
[GROUP_A]
##数据守护唯一标识码,与dmwatcher.ini中的INST_OGUID 保持一致
MON_INST_OGUID = 453331
##守护进程IP地址和监听端口。配置格式为:“守护进程IP地址:守护进程监听端口”。其中IP地址和dmmal.ini中的MAL_HOST保持一致,端口和dmmal.ini中的MAL_DW_PORT保持一致。
MON_DW_IP = 192.168.175.130:52141
MON_DW_IP = 192.168.175.131:52142

如图:
在这里插入图片描述

(6) 启动主机和备机的守护进程
启动主机GRP1_RT_01上的守护进程。
./dmwatcher /home/dmdba/dmdbms/data/DAMENG/dmwatcher.ini
在这里插入图片描述

启动备机GRP1_RT_02上的守护进程。
./dmwatcher /home/dmdba/dmdbms/data/DAMENG/dmwatcher.ini
在这里插入图片描述

守护进程启动后,进入Startup状态,此时实例都处于Mount状态。守护进程开始广播自身和其监控实例的状态信息,结合自身信息和远程守护进程的广播信息,守护进程将本地实例Open,并切换为Open状态。

(7)启动监视器
备库上启动监视器:bin目录下
./dmmonitor /home/dmdba/dmdbms/data/DAMENG/dmmonitor.ini
在这里插入图片描述

监视器提供一系列命令,支持当前守护系统状态查看以及故障处理,可输入help命令, 查看各种命令说明使用,结合实际情况选择使用。
在这里插入图片描述

至此一主一备的实时数据守护系统搭建完毕,在搭建步骤和各项配置都正确的情况下, 在监视器上执行show命令,可以监控到所有实例都处于Open状态,所有守护进程也都处 于Open状态,即为正常运行状态。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值