DM实时主备部署

目录

实时主备搭建

前言

概述

主库

备库

Redo 日志

Redo日志传输

Redo 日志重演

守护进程

监视器

实时主备

主要功能:

归档流程

配置实时主备

数据库软件安装

创建DM用户

数据准备

启动一次主机

进行脱机备份

数据库更新

配置主库 GRP1_RT_01

启动主库

以mount方式启动主库

设置 OGUID

修改数据库模式

启动备库

设置 OGUID

修改数据库模式

配置监视器

启动监视器


实时主备搭建

前言

DM 数据守护(Data Watch)是一种集成化的高可用、高性能数据库解决方案,是数 据库异地容灾的首选方案。通过部署 DM 数据守护,可以在硬件故障(如磁盘损坏)、自然 灾害(地震、火灾)等极端情况下,避免数据损坏、丢失,保障数据安全,并且可以快速恢复数据库服务,满足用户不间断提供数据库服务的要求。与常规的数据库备份(Backup)、还原(Restore)技术相比,数据守护可以更快地恢复数据库服务。随着数据规模不断增长,通过还原手段恢复数据,往往需要数个小时、甚至更长时间,而数据守护基本不受数据 规模的影响,只需数秒时间就可以将备库切换为主库对外提供数据库服务。

DM数据守护提供多种解决方案,可以配置成实时主备、MPP主备、DMDSC主备或读写分离集群,满足用户关于系统可用性、数据安全性、性能等方面的综合需求,有效降低总体投入,获得超值的投资回报。

实时主备由一个主库以及一个或者多个配置了实时(Realtime)归档的备库组成,其 主要目的是保障数据库可用性,提高数据安全性。实时主备系统中,主库提供完整的数据库 功能,备库提供只读服务。主库修改数据产生的Redo日志,通过实时归档机制,在写入联 机Redo日志文件之前发送到备库,实时备库通过重演Redo日志与主库保持数据同步。当主库出现故障时,备库在将所有Redo日志重演结束后,就可以切换为主库对外提供数据库服务。

概述

DM 数据守护(DM Data Watch)的实现原理非常简单:将主库(生产库)产生的 Redo 日志传输到备库,备库接收并重新应用 Redo日志,从而实现备库与主库的数据同步。DM 数据守护的核心思想是监控数据库状态,获取主、备库数据同步情况,为 Redo 日志传输与重演过程中出现的各种异常情况提供一系列的解决方案。

DM 数据守护系统结构参考图如下:主要由主库、备库、Redo 日志、Redo 日志传输、Redo日志重演、守护进程(dmwatcher)、监视器(dmmonitor)组成。

主库

Primary模式,提供完整数据库服务的实例,一般来说主库是用来直接支撑应用系统的生产库。

备库

Standby 模式,提供只读数据库服务的实例。备库除了用于容灾,还可以提供备份、查询等只读功能,并且备库还支持临时表的Insert/Delete/Update 操作。

备库支持临时表修改主要基于两个因素:

  1. 临时表数据的修改不会产生 Redo日志,主库对临时表的修改无法同步到备库;
  2. 可以提供更大灵活性,适应更多应用场景。

根据数据同步情况,备库又可以分为可切换备库和不可切换备库。可切换备库是指,主备库之间数据完全同步,主库发生故障、备库切换为主库后,不会造成任何数据丢失的备库。

Redo 日志

Redo 日志记录物理数据页内容变动情况,是数据库十分重要的一个功能,在数据库系统故障(比如服务器掉电)重启时,利用 Redo 日志可以把数据恢复到故障前的状态。

Redo 日志也是数据守护的实现基础,数据库中 Insert、Delete、Update 等 DML 操作以及 Create TABLE 等 DDL 操作最终都会体现为对某一个或者多个物理数据页的修 改,因此备库通过重做 Redo 日志可以与主库数据保持一致。

Redo日志传输

主备库之间的 Redo 日志传输,以日志包 RLOG_PKG 为单位,主库通过 MAL 系统发送 Redo 日志到备库。各种不同数据守护类型的区别,就在于主库日志包 RLOG_PKG 的发送时机,以及备库收到 Redo 日志后的处理策略。

Redo 日志重演

Redo 日志重演的过程,就是备库收到主库发送的 Redo 日志后,在物理数据页上,重新修改数据的过程。Redo 日志重演由专门的 Redo 日志重演服务完成,重演服务严格按照 Redo 日志产生的先后顺序,解析 Redo 日志、修改相应的物理数据页,并且重演过程中备库会生成自身的 Redo 日志写入联机日志文件。

守护进程

守护进程(dmwatcher)是数据守护系统的核心工具,监控数据库实例的运行状态和 主备库数据同步情况,在出现故障时启动各种处理预案。守护进程是各种消息的中转站,接 收数据库实例、其他守护进程、以及监视器发送的各种消息;同时,守护进程也会将收到的 数据库实例消息转发给其他守护进程和监视器。守护进程必须和被守护的数据库实例部署在同一台机器上。

监视器

监视器(dmmonitor)用来监控守护系统内守护进程、数据库实例信息,执行用户输 入命令、监控实例故障、实现自动切换等。监视器一般配置在数据库实例和守护进程以外的机器上。

实时主备

主要功能:

  1. 实时数据同步

主备库通过实时归档完成数据同步,实时归档要求主库将 RLOG_PKG 发送到备库后,再将 RLOG_PKG 写入本地联机 Redo 日志文件。但要注意的是,备库确认收到主库发送的Redo 日志,并不保证备库已经完成重演这些 Redo 日志,因此主备库之间的数据同步存在一定的时间差。

  1. 主备库切换

主备库正常运行过程中,可以通过监视器的 Switchover 命令,一键完成主备库角色转换。主备库切换功能可以确保在软、硬件升级,或系统维护时,提供不间断的数据库服务。

  1. 自动故障处理

备库故障,不影响主库正常提供数据库服务,守护进程自动通知主库修改实时归档为 Invalid 状态,将实时备库失效。

  1. 自动数据同步

备库故障恢复后,守护进程自动通知主库发送归档 Redo 日志,重新进行主备库数据同步。并在历史数据同步后,修改主库的实时归档状态为 Valid,恢复实时备库功能。

备库接管后,原主库故障恢复,守护进程自动修改原主库的模式为 Standby,并重新作为备库加入主备系统

  1. 备库接管

主库发生故障后,可以通过监视器的 Takeover 命令,将备库切换为主库,继续对外提供服务,如果配置为自动切换模式,确认监视器可以自动检测主库故障,并通知备库接管,不需要人工干预。

  1. 备库强制接管

如果执行 Takeover 命令不成功,但主库可能由于硬件损坏等原因无法马上恢复,为了及时恢复数据库服务,DM 提供了 Takeover Force 命令,强制将备库切换为主库。但需要由用户确认主库故障前,主库与接管备库的数据是一致的(主库到备库的归档是 Valid状态),避免引发守护进程组分裂。

  1. 读写分离访问

在备库查询的实时性要求不高的条件下,实时主备也可以配置接口的读写分离属性访问,实现读写分离功能特性。

归档流程

实时归档是实时主备数据同步的基础,其流程如下图所示:

主库生成联机 Redo 日志,当触发日志写文件操作后,日志线程先将 RLOG_PKG 发送到备库,备库接收后进行合法性校验(包括日志是否连续、备库状态是否 Open 等),不合法则返回错误信息,合法则作为 KEEP_PKG 保留在内存中,原有 KEEP_PKG 的 Redo 日志加入 Apply 任务队列进行 Redo 日志重演,并响应主库日志接收成功。当有多个备库时,主库需要收到所有备库的响应消息才继续后续操作。

配置实时主备

配置实时主备,有以下几种配置方案,可以根据实际情况部署:

  1. 只配置主库和最多 8 个实时备库
  2. 只配置主库和最多 8 个异步备库
  3. 配置主库、最多 8 个实时备库,和最多 8 个异步备库

数据库软件安装

创建DM用户

修改/etc/security/limits.conf修改用户限制

dmdba soft nproc 10240

dmdba hard nproc 10240

dmdba soft nofile 65536

dmdba hard nofile 65536

dmdba hard data unlimited

dmdba soft data unlimited

dmdba hard fsize unlimited

dmdba soft fsize unlimited

dmdba soft core unlimited

dmdba hard core unlimited

此处选择静默安装 

备库主机相同操作,此处省略

DW_P 机器上初始化主库至目录/dm8/data

./dminit path=/dm8/data page_size=32 extent_size=32 case_sensitive=N charset=1  instance_name=GRP1_RT_01

DW_S1 机器上初始化备库至目录/dm8/data

数据准备

启动一次主机

(前台启动:会详细显示启动过程,system is ready 就完成启动)

启动之后,exit关闭

进行脱机备份

./dmrman CTLSTMT="BACKUP DATABASE '/dm8/data/DAMENG/dm.ini' FULL TO BACKUP_FILE1 BACKUPSET '/dm8/data/BACKUP_FILE_01'"

拷贝备份文件到备库所在机器

scp -r BACKUP_FILE_01/ root@192.168.6.101:/dm8/data

执行脱机数据库还原与恢复

./dmrman CTLSTMT="RESTORE DATABASE '/dm8/data/DAMENG/dm.ini' FROM BACKUPSET '/dm8/data/BACKUP_FILE_01'"

因为脱机备份没有产生任何 REDO 日志,所以此处省略恢复数据库的操作步骤

数据库更新

./dmrman CTLSTMT="RECOVER DATABASE '/dm8/data/DAMENG/dm.ini' UPDATE DB_MAGIC"

配置主库 GRP1_RT_01

1.配置 dm.ini,打开 ARCH_INI 参数

在 DW_P 机器上配置主库的实例名为 GRP1_RT_01,dm.ini 参数修改如下:

参数

设置

备注

INSTANCE_NAME

GRP1_RT_01

PORT_NUM

5236

数据库实例监听端口

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 系统,各主备库的 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

192.168.6.200

MAL 系统监听 TCP 连接的 IP 地址

MAL_PORT

61141

MAL 系统监听 TCP 连接的端口

MAL_INST_HOST

192.168.6.100

实例的对外服务 IP 地址

MAL_INST_PORT

5236

实例的对外服务端口,和 dm.ini 中的 PORT_NUM 一致

MAL_DW_PORT

52141

实例本地的守护进程监听 TCP 连接的端口

MAL_INST_DW_PORT

33141

实例监听守护进程 TCP 连接的端口

[MAL_INST2]

MAL_INST_NAME

GRP1_RT_02

实例名,和 dm.ini 中的 INSTANCE_NAME 一致

MAL_HOST

192.168.6.201

MAL 系统监听 TCP 连接的 IP 地址

MAL_PORT

61142

MAL 系统监听 TCP 连接的端口

MAL_INST_HOST

192.168.6.101

实例的对外服务 IP 地址

MAL_INST_PORT

5236

实例的对外服务端口,和 dm.ini 中的 PORT_NUM 一致

MAL_DW_PORT

52142

实例本地的守护进程监听 TCP 连接的端口

MAL_INST_DW_PORT

33142

实例监听守护进程 TCP 连接的端口

3.配置 dmarch.ini

参数

设置

备注

[ARCHIVE_REALTIME]

ARCH_TYPE

REALTIME

实时归档类型

ARCH_DEST

GRP1_RT_02

实时归档目标实例名

[ARCHIVE_LOCAL1]

ARCH_TYPE

LOCAL

本地归档类型

ARCH_DEST

/dm8/data/DAMENG/arch

本地归档文件存放路径

ARCH_FILE_SIZE

128

单位 Mb,本地单个归档文件最大值

ARCH_SPACE_LIMIT

0

单位 Mb,0 表示无限制,范围 1024~2147483647M

4.配置 dmwatcher.ini

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

参数

设置

备注

DW_TYPE

GLOBAL

全局守护类型

DW_MODE

AUTO

自动切换模式

DW_ERROR_TIME

10

远程守护进程故障认定时间

INST_RECOVER_TIME

60

主库守护进程启动恢复的间隔时间

INST_ERROR_TIME

10

本地实例故障认定时间

INST_OGUID

453331

守护系统唯一 OGUID 值

INST_INI

/dm8/data/DAMENG/dm.ini

dm.ini 配置文件路径

INST_AUTO_RESTART

1

打开实例的自动启动功能

INST_STARTUP_CMD

/dm8/dmdba/dmdbms/bin/dmserver

命令行方式启动

RLOG_SEND_THRESHOLD

0

指定主库发送日志到备库的时间阈值,默认关闭

RLOG_APPLY_THRESHOLD

0

指定备库重演日志的时间阈值,默认关闭

启动主库

以mount方式启动主库

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

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

设置 OGUID

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

./disql SYSDBA/SYSDBA:5236

SQL>SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 1); SQL>sp_set_oguid(453331);

SQL>SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 0);

系统通过 OGUID 值确定一个守护进程组,由用户保证 OGUID 值的唯一性,并

确保数据守护系统中,数据库、守护进程和监视器配置相同的 OGUID 值。

修改数据库模式

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

SQL>alter database primary;

配置备库 GRP1_RT_02

将主库的配置文件scp到备库

需要修改:

dmarch.ini

ARCH_DEST = GRP1_RT_01 

dm.ini

INSTANCE_NAME =  GRP1_RT_02

不修改dmwatcher.ini,dmmal.ini

启动备库

以 mount 方式启动备库

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

设置 OGUID

启动命令行工具 DIsql,登录备库设置 OGUID 值为 453331

SQL>SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 1); SQL>sp_set_oguid(453331);

SQL>SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 0);

修改数据库模式

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

SQL>SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 1); //第 1 步

SQL>alter database standby; //第 2 步

SQL>SP_SET_PARA_VALUE(1, 'ALTER_MODE_STATUS', 0); //第 3 步

配置监视器

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

修改 dmmonitor.ini 配置确认监视器,其中 MON_DW_IP 中的 IP 和 PORT 和 dmmal.ini 中的 MAL_HOST 和 MAL_DW_PORT 配置项保持一致

启动监视器

./dmmonitor /dm8/data/DAMENG/dmmonitor.ini

分别在主机和备机,启动守护 

  ./dmwatcher /dm8/data/DAMENG/dmwatcher.ini

数据库实例

./dm_service_installer.sh -t dmserver -dm_ini /dm8/data/DAMENG/dm.ini -p GRP1_RT_01

./dm_service_installer.sh -t dmserver -dm_ini /dm8/data/DAMENG/dm.ini -p GRP1_RT_02

​​​​​​​

达梦云适配技术社区
https://eco.dameng.com/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值