1、环境说明

  准备三台机器DM_HD1、DM_HD11、DM_SH,DM_HD1和DM_HD11用来部署主备库,DM_SH用来部署确认监视器。其中DM_HD1和DM_HD11配置两块网卡,一块接入内部网络交换模块,一块接入到外部交换机,DM_SH接入内部网络。(配置双网卡请参见文章CentOS之—双网卡双IP双网关配置

  三台机器都事先安装了DM,安装路径为’/dm’,执行程序保存在’/dm/bin’目录中,数据存放路径为’/dm/data’。(部署主备库的机器应安装一个实例,部署确认监视器的机器可不安装实例)

  各主备库的实例名建议采用“组名_守护环境_序号”的方式命名,方便按组区分不同实例,注意总长度不能超过 16。本示例中组名为“GRP1”,配置为实时主备,主库命名为“GRP1_RT_01”,备库命名为“GRP1_RT_02”。

表1.1 配置环境说明

机器名

IP地址

初始状态

操作系统

备注

DM_HD1

192.168.46.137

10.90.10.9

主库

GRP1_RT_01

CentOS7

192.168.46.137  外部服务IP;

10.90.10.9  内部通信IP

DM_HD11

192.168.46.139

10.90.10.10

备库

GRP1_RT_02

CentOS7

192.168.46.139  外部服务IP;

10.90.10.10  内部通信IP

 DM_SH  10.90.10.8  确认监视器    CentOS7  

表1.2 端口规划

实例名

PORT_NUM

MAL_INST_DW_PORT

MAL_HOST

MAL_PORT

MAL_DW_PORT

GRP1_RT_01

32141

33141

10.90.10.9

61141

52141

GRP1_RT_02

32142

33142

10.90.10.10

61142

52142

2、数据准备

初始化主库

/dminit path=/dm/data

备份主库并还原到备机上,备份还原可通过脱机备份,也可联机备份,本文只介绍脱机备份方式。

脱机备份

进入DM_HD1机器/dm/bin目录下停止主机数据库服务

./DmServiceGRP1_RT_01 stop

通过./dmrman 命令进入dmrman工具进行备份,通过以下语句进行备份数据库

BACKUP DATABASE '/dm/data/DAMENG/dm.ini' FULL TO BACKUP_FILE1 BACKUPSET  '/dm/data/back_full_db_01'

将备份文件拷贝到DM_HD11备机 /dm/data/ 上

进入DM_HD11  /dm/bin/ 目录下停止备机数据库服务

./DmServiceGRP1_RT_02 stop

通过./dmrman 命令进入dmrman工具进行还原,通过以下语句进行还原数据库

restore database '/dm/data/DAMENG/dm.ini' from backupset '/dm/data/back_full_db_01'

recover database '/dm/data/DAMENG/dm.ini' from backupset '/dm/data/back_full_db_01'

recover database '/dm/data/DAMENG/dm.ini' update db_magic; 

备份还原完成后退出dmrman,开始配置主库GRP1_RT_01.

3、配置主库GRP_RT_01

  3.1 修改dm.ini

在DM_HD1机器上配置主库的实例名为GRP1_RT_01,dm.ini的位置在/dm/data/DAMENG/目录下,dm.ini参数修改如下:

#实例名,建议使用―组名_守护环境_序号‖的命名方式,总长度不能超过16
INSTANCE_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次的日志发送信息

  3.2 配置dmmal.ini

  该文件应与dm.ini在同一目录下,在linux系统中使用vim命令直接创建dmmal.ini文件。

  配置MAL系统,各主备库的dmmal.ini配置必须完全一致,MAL_HOST使用内部网络IP,MAL_PORT与dm.ini中PORT_NUM使用不同的端口值,MAL_DW_PORT是各实例对应的守护进程之间,以及守护进程和监视器之间的通信端口,配置如下:

MAL_CHECK_INTERVAL       = 5              #MAL链路检测时间间隔
MAL_CONN_FAIL_INTERVAL   = 5              #判定MAL链路断开的时间
[MAL_INST1]
MAL_INST_NAME            = GRP1_RT_01     #实例名,和dm.ini中的INSTANCE_NAME一致
MAL_HOST                 = 10.90.10.9     #MAL系统监听TCP连接的IP地址
MAL_PORT                 = 61141          #MAL系统监听TCP连接的端口
MAL_INST_HOST            = 192.168.46.137 #实例的对外服务IP地址
MAL_INST_PORT            = 32141          #实例的对外服务端口,和dm.ini中的PORT_NUM一致
MAL_DW_PORT              = 52141          #实例本地的守护进程监听TCP连接的端口
MAL_INST_DW_PORT         = 33141          #实例监听守护进程TCP连接的端口
[MAL_INST2]
MAL_INST_NAME            = GRP1_RT_02
MAL_HOST                 = 10.90.10.10
MAL_PORT                 = 61142
MAL_INST_HOST            = 192.168.46.139
MAL_INST_PORT            = 32142
MAL_DW_PORT              = 52142
MAL_INST_DW_PORT         = 33142
 

  3.3 配置dmarch.ini

  修改dmarch.ini,配置本地归档和实时归档,该文件应与dm.ini在同一目录下,在linux系统中使用vim命令直接创建dmarch.ini文件。

  除了本地归档外,其他归档配置项中的ARCH_DEST表示实例是Primary模式时,需要同步归档数据的目标实例名。当前实例GRP1_RT_01是主库,需要向GRP1_RT_02(实时备库)同步数据,因此实时归档的ARCH_DEST配置为GRP1_RT_02。

[ARCHIVE_REALTIME]
ARCH_TYPE = REALTIME #实时归档类型
ARCH_DEST = GRP1_RT_02 #实时归档目标实例名
[ARCHIVE_LOCAL1]
ARCH_TYPE = LOCAL#本地归档类型
ARCH_DEST = /dm/data/DAMENG/arch #本地归档文件存放路径
ARCH_FILE_SIZE = 128 #单位Mb,本地单个归档文件最大值
ARCH_SPACE_LIMIT = 0 #单位Mb,0表示无限制,范围1024~4294967294M

  3.4 配置dmwatcher.ini

  该文件应与dm.ini在同一目录下,在linux系统中使用vim命令直接创建dmwatcher.ini文件。

  修改dmwatcher.ini配置守护进程,配置为全局守护类型,使用自动切换模式。

[GRP1]
DW_TYPE = GLOBAL #全局守护类型
DW_MODE = AUTO #自动切换模式
DW_ERROR_TIME = 10 #远程守护进程故障认定时间
INST_RECOVER_TIME = 60 #主库守护进程启动恢复的间隔时间
INST_ERROR_TIME = 10 #本地实例故障认定时间
INST_OGUID = 453331 #守护系统唯一OGUID值
INST_INI = /dm/data/DAMENG/dm.ini #dm.ini配置文件路径
INST_AUTO_RESTART = 1 #打开实例的自动启动功能
INST_STARTUP_CMD = /dm/bin/dmserver #命令行方式启动
RLOG_SEND_THRESHOLD = 0 #指定主库发送日志到备库的时间阀值,默认关闭
RLOG_APPLY_THRESHOLD = 0 #指定备库重演日志的时间阀值,默认关闭

  3.5 启动主库

  进入/dm/bin目录下,以mount方式启动主库

./dmserver /dm/data/DAMENG/dm.ini mount

注意:一定要以Mount方式启动数据库实例,否则系统启动时会重构回滚表空间,生成 Redo 日志;并且,启动后应用可能连接到数据库实例进行操作,破坏主备库的数据一致性。数据守护配置结束后,守护进程会自动Open数据库。

  3.6 设置 OGUID 

  启动命令行工具DIsql,登录主库设置OGUID值。

  进入/dm/bin目录下,启动disql

./disql SYSDBA/SYSDBA@localhost:32141

  设置OGUID值

SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 1);
sp_set_oguid(453331);
SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 0);

  3.7 更改数据库模式

  启动命令行工具DIsql,登录主库修改数据库为Primary模式

alter database primary;

4、配置备库GRP_RT_02

  4.1 与配置主库类似,首先修改dm.ini文件,配置如下:

#实例名,建议使用―组名_守护环境_序号‖的命名方式,总长度不能超过16
INSTANCE_NAME = GRP1_RT_02
PORT_NUM = 32142 #数据库实例监听端口
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次的日志重演信息

  4.2 配置dmmal.ini文件

  配置MAL系统,各主备库的dmmal.ini配置必须完全一致,MAL_HOST使用内部网络IP,MAL_PORT与dm.ini中PORT_NUM使用不同的端口值,MAL_DW_PORT是各实例对应的守护进程之间,以及守护进程和监视器之间的通信端口,配置如下:

MAL_CHECK_INTERVAL     = 5              #MAL链路检测时间间隔
MAL_CONN_FAIL_INTERVAL = 5 #判定MAL链路断开的时间
[MAL_INST1]
MAL_INST_NAME = GRP1_RT_01 #实例名,和dm.ini中的INSTANCE_NAME一致
MAL_HOST = 10.90.10.9 #MAL系统监听TCP连接的IP地址
MAL_PORT = 61141 #MAL系统监听TCP连接的端口
MAL_INST_HOST = 192.168.46.137 #实例的对外服务IP地址
MAL_INST_PORT = 32141 #实例的对外服务端口,和dm.ini中的PORT_NUM一致
MAL_DW_PORT = 52141 #实例对应的守护进程监听TCP连接的端口
MAL_INST_DW_PORT = 33141 #实例监听守护进程TCP连接的端口 [MAL_INST2]
MAL_INST_NAME = GRP1_RT_02
MAL_HOST = 10.90.10.10
MAL_PORT = 61142
MAL_INST_HOST = 192.168.46.139
MAL_INST_PORT = 32142
MAL_DW_PORT = 52142
MAL_INST_DW_PORT = 33142

  4.3 配置dmarch.ini文件

  修改dmarch.ini,配置本地归档和实时归档。

  除了本地归档外,其他归档配置项中的ARCH_DEST表示实例是Primary模式时,需要同步归档数据的目标实例名。

  当前实例 GRP1_RT_02 是备库,守护系统配置完成后,可能在各种故障处理中, GRP1_RT_02 切换为新的主库,正常情况下,GRP1_RT_01 会切换为新的备库,需要向 GRP1_RT_01同步数据,因此实时归档的ARCH_DEST配置为GRP1_RT_01。

[ARCHIVE_REALTIME]
ARCH_TYPE = REALTIME #实时归档类型
ARCH_DEST = GRP1_RT_01 #实时归档目标实例名
[ARCHIVE_LOCAL1]
ARCH_TYPE = LOCAL #本地归档类型
ARCH_DEST = /dm/data/DAMENG/arch #本地归档文件路径
ARCH_FILE_SIZE = 128 #单位Mb,本地单个归档文件最大值
ARCH_SPACE_LIMIT = 0 #单位Mb,0表示无限制,范围1024~4294967294M

  4.4 配置dmwatcher.ini

  修改dmwatcher.ini配置守护进程,配置为全局守护类型,使用自动切换模式。

[GRP1]
DW_TYPE = GLOBAL #全局守护类型
DW_MODE = AUTO #自动切换模式
DW_ERROR_TIME = 10 #远程守护进程故障认定时间
INST_RECOVER_TIME = 60 #主库守护进程启动恢复的间隔时间
INST_ERROR_TIME = 10 #本地实例故障认定时间
INST_OGUID = 453331 #守护系统唯一OGUID值
INST_INI = /dm/data/DAMENG/dm.ini #dm.ini配置文件路径
INST_AUTO_RESTART = 1 #打开实例的自动启动功能
INST_STARTUP_CMD = /dm/bin/dmserver #命令行方式启动
RLOG_APPLY_THRESHOLD = 0 #指定备库重演日志的时间阀值,默认关闭

  4.5 启动主库

  进入/dm/bin目录下,以mount方式启动主库

./dmserver /dm/data/DAMENG/dm.ini mount

注意:一定要以Mount方式启动数据库实例,否则系统启动时会重构回滚表空间,生成 Redo 日志;并且,启动后应用可能连接到数据库实例进行操作,破坏主备库的数据一致性。数据守护配置结束后,守护进程会自动Open数据库。

  4.6 设置 OGUID 

  启动命令行工具DIsql,登录主库设置OGUID值。

  进入/dm/bin目录下,启动disql

./disql SYSDBA/SYSDBA@localhost:32141

  设置OGUID值

SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 1);
sp_set_oguid(453331);
SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 0);

  4.7 更改数据库模式

  启动命令行工具DIsql,登录备库修改数据库为Standby模式。

  如果当前数据库不是Normal模式,需要先修改dm.ini中ALTER_MODE_STATUS值为1,允许修改数据库模式,修改Standby模式成功后再改回为0。如果是Normal模式,请忽略下面的第1步和第3步。

SQL>SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 1);
SQL>alter database standby;
SQL>SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 0);

5、配置监视器

  由于主库和实时备库的守护进程配置为自动切换模式,因此这里选择配置确认监视器。和普通监视器相比,确认监视器除了相同的命令支持外,在主库发生故障时,能够自动通知实时备库接管为新的主库,具有自动故障处理的功能。

注意:故障自动切换模式下,必须配置确认监视器,且确认监视器最多只能配置一  个。

  修改 dmmonitor.ini 配置确认监视器,其中 MON_DW_IP 中的 IP 和 PORT 和 dmmal.ini中的MAL_HOST和MAL_DW_PORT配置项保持一致。该文件可创建在DM_SH机器上的任意位置。

MON_DW_CONFIRM       = 1              #确认监视器模式
MON_LOG_PATH = /dm/data/log #监视器日志文件存放路径
MON_LOG_INTERVAL = 60 #每隔60s定时记录系统信息到日志文件
MON_LOG_FILE_SIZE = 32 #每个日志文件最大32
MON_LOG_SPACE_LIMIT = 0 #不限定日志文件总占用空间
[GRP1]
MON_INST_OGUID = 453331 #组GRP1的唯一OGUID值
#以下配置为监视器到组GRP1的守护进程的连接信息,以―IP:PORT‖的形式配置
#IP对应dmmal.ini中的MAL_HOST,PORT对应dmmal.ini中的MAL_DW_PORT
MON_DW_IP = 10.90.10.9:52141
MON_DW_IP = 10.90.10.10:52142

6、启动主备机器上的守护进程

./dmwatcher /dm/data/DAMENG/dmwatcher.ini 

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

7、启动监视器

./dmmonitor /dm/data/dmmonitor.ini

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

  至此一主一备的实时数据守护系统搭建完毕,在搭建步骤和各项配置都正确的情况下,

  在监视器上执行show命令,可以监控到所有实例都处于Open状态,所有守护进程也都处于Open状态,即为正常运行状态。

达梦数据库_DM8配置实时主备的更多相关文章

  1. 达梦数据库_DM8配置MPP主备

    为了提高MPP系统可靠性,克服由于单节点故障导致整个系统不能继续正常工作,DM 在普通的MPP系统基础上,引入主备守护机制,将MPP节点作为主库节点,增加备库作为备份节点,必要时可切换为主库代替故障节 ...

  2. 国产达梦数据库的结合Enterprise Library的应用开发

    在上篇<基于Enterprise Library的Winform开发框架实现支持国产达梦数据库的扩展操作>介绍了如何在Enterprise Library的数据访问层上支持这种神秘的国产数 ...

  3. [转帖]达梦数据库(DM6)和ORACLE 10g的异同点

    达梦数据库(DM6)和ORACLE 10g的异同点    https://bbs.aliyun.com/detail/351337.html   花花浪子 级别: 小白 发帖 0 云币 -41 加关注 ...

  4. 达梦数据库产品支持技术学习分享_Week2

    本周主要从以下几个方面进行本人对达梦数据库学习的分享,学习进度和学习情况因人而异,仅供参考. 一.文本命令行工具使用的方法(Disql和dmfldr) 二.数据库备份 三.定时作业功能 四.系统表和动 ...

  5. 在Windows Azure上配置VM主备切换(1)——Linux篇

    对任何一个上线系统来说,高可用设计是不可或缺的一个环节,这样才可以确保应用可以持续.稳定的运行,而不是频繁的掉线.停机.高可用设计的核心思路很简单,就是消除一切单点故障,将单点链路或者节点升级为多点. ...

  6. DB 查询分析器 6.03 如何灵活、快捷地操作国产达梦数据库

    DB 查询分析器 6.03 如何灵活.快捷地操作国产达梦数据库 马根峰 (广东联合电子服务股份有限公司, 广州 510300) 摘要       本文详细地介绍了"万能数据库查询分析器&qu ...

  7. 达梦数据库DM7小结

    除了很多主流的数据库,我们很熟悉之外,越来越多的国产数据库也涌现出来. 这次就小结一些有关武汉的达梦数据库7这个开发版数据库的有别或者需要注意的地方进行一个简单备注吧. 1.第一件大事就是下载.数据库 ...

  8. Shell脚本使用汇总整理——达梦数据库备份脚本

    Shell脚本使用汇总整理——达梦数据库备份脚本 Shell脚本使用的基本知识点汇总详情见连接: https://www.cnblogs.com/lsy-blogs/p/9223477.html 脚本 ...

  9. Linux平台达梦数据库V7单实例安装方式之图形方式

    一 前言 我们在学习任何一个应用时,了解它的最初步骤通常是学会如何进行安装配置,后序才去关心如何使用,学习达梦数据库也是如此,而达梦数据库的安装提供了多种方式,接下来会一一介绍每种安装方式,达梦数据库 ...

随机推荐

  1. unity physics相关

    1. With careful positioning and sizing, compound colliders can often approximate the shape of an obj ...

  2. string matching(拓展KMP)

    Problem Description String matching is a common type of problem in computer science. One string matc ...

  3. or2?Scum!(周期性求解)

    链接:https://ac.nowcoder.com/acm/contest/316/E 来源:牛客网 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 131072K,其他语言2621 ...

  4. [BUUOJ记录] [BJDCTF 2nd]old-hack & Schrödinger & elementmaster

    三道比较简单的的题放一起一写,old-hack是ThinkPHP框架的一个nday,Schrödinger和elementmaster没啥考点,就是脑洞 一.old-hack 进入题目没发现什么Hi ...

  5. Angular(二) - 组件Component

    1. 组件Component示例 2. Component常用的几个选项 3. Component全部的选项 3.1 继承自@Directive装饰器的选项 3.2 @Component自己特有的选项 ...

  6. 消息队列之-RocketMQ入门

    简介 RocketMQ是阿里开源的消息中间件,目前已经捐献个Apache基金会,它是由Java语言开发的,具备高吞吐量.高可用性.适合大规模分布式系统应用等特点,经历过双11的洗礼,实力不容小觑. 官 ...

  7. jackson读取json tree讲解

    待读取的json文本: {"data":{"count":4031,"list":[{"symbol":"SH ...

  8. LongAccumulator类的BUG——reset方法并不能保证初始值正确赋值

    LongAccumulator.reset方法并不能重置重置LongAccumulator的identity:初始值正确,使其恢复原来的初始值.当初始值为0是不会发生这个问题,而当我们设置初始值如1时 ...

  9. 【GIT-精讲】从零玩转Git/GitHub/GitLab

    关于版本控制 一.什么是版本控制 版本控制(Version Control Systems)版本控制(Revision control)是一种软件工程技巧 在开发的过程中,确保由不同人所编辑的同一档案 ...

  10. 微信小程序-组件-基础内容

    1.text 1.作用:类似html的行内元素 2.常用属性: -space值:ensp:中文字符空格一半大小 emsp:中文字符空格大小 nbsp:根据设置字体的大小决定空格大小 -decode:d ...