其他分享
首页 > 其他分享> > DM数据守护集群原理及安装步骤概要介绍

DM数据守护集群原理及安装步骤概要介绍

作者:互联网

数据守护(DATA WATCH)是一种集成化的高可靠性解决方案,同时满足用户对数据安全性和高可用性的要求,可以解决由于硬件故障、自然灾害等原因导致的数据库服务长时间中断问题,满足用户不间断提供数据库服务的要求。集群系统基于数据库REDO日志,不依赖于第三方软件和存储。数据守护包含的主要部件有:主数据库、备数据库、联机REDO日志系统、本地REDO日志归档服务、实时REDO日志归档服务、REDO日志重做服务、MAL系统、守护进程和监视器。其中,守护进程和监视器是两个独立的工具,其他部件集成在DM8数据库服务器DMSERVER中。

 

一、数据守护集·群原理部分

DM数据守护提供多种解决方案,可以配置成实时主备、MPP主备或读写分离集群、DMDSC(数据共享集群)的数据守护集群,满足用户关于系统可用性、数据安全性、性能等方面的综合需求。

实时主备系统由主库、实时备库、守护进程和监视器组成。通过部署实时主备系统,可以及时检测并处理各种硬件故障、数据库实例异常,确保持续提供数据库服务。日志和归档是需要了解掌握的核心内容。

 

1、联机Redo日志文件

实时归档是实时主备数据同步的基础,联机redo日志是归档的关键。在达梦数据库系统中,任何数据页从Buffer缓冲区写入磁盘之前,都会先把修改数据页产生的Redo日志已经写入到联机Redo日志文件中(特殊声明情况除外)。DM默认包含两个联机Redo日志文件(如DAMENG01.log、DAMENG02.log),RLOG_PKG顺序写入联机Redo日志文件中,当一个日志文件写满后,自动切换到另一个文件。随着检查点(Checkpoint)的推进,对应产生Redo日志的数据页从数据缓冲区(Data Buffer)写入磁盘后,联机Redo日志文件可以覆盖重用、循环使用,确保Redo日志文件不会随着日志量的增加而增长。

 

图 联机Redo日志文件与日志包

2、归档文件

归档是实现数据守护系统的重要技术手段,根据功能与实现方式的不同,DM的归档可以分为5类:本地归档、远程归档、实时归档、即时归档和异步归档。

(1)本地归档:Redo日志本地归档(Local)。

是将Redo日志写入到本地归档日志文件的过程。

(2)远程归档:专门用于DMDSC环境中。

是将归档目录配置在远程节点上。远程归档采用双向配置的方式,双向配置远程归档就是两个节点将自己的远程归档相互配置在对方机器上。具体有两种配置方式:

一是共享本地归档的远程归档,即将远程归档目录配置为另一节点的本地归档目录,以此来共享它的本地归档日志文件;

二是通过MAL发送的远程归档,即将写入本地归档的REDO日志信息,通过MAL发送到远程节点,并写入远程节点的指定归档目录中,形成远程归档日志文件。

(3)实时归档

与本地归档写入保存在磁盘中的日志文件不同,实时归档(Realtime)将主库产生的Redo日志通过MAL系统传递到备库,实时归档是实时主备和MPP主备的实现基础。

 

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

 

图 实时归档流程图

 

执行流程是,主库在Redo日志(RLOG_PKG)写入联机日志文件前,将Redo日志发送到备库。主库收到备库的响应消息,确认备库已经收到Redo日志后,再将Redo日志写入联机日志文件中。

实时归档有两种模式:事务一致模式和高性能模式。区别在于配置为实时归档时,dmarch.ini中的ARCH_WAIT_APPLY配置项默认值为0,即采用高性能模式。

(4)即时归档

即时归档(Timely)在主库将Redo日志写入联机日志文件后,通过MAL系统将Redo日志发送到备库。即时归档与实时归档的主要区别是Redo日志的发送时机不同。即时归档有两种模式:事务一致模式和高性能模式。通过配置文件dmarch.ini中的ARCH_WAIT_APPLY配置项(默认值为1)来确定,1表示事务一致模式,0表示高性能模式。

事务一致模式:

主库事务提交触发Redo日志刷盘和即时归档,备库收到主库发送的Redo日志,先重演,完成后再响应主库。主库收到备库响应消息后,再响应用户的提交请求。事务一致模式下,同一个事务的SELECT语句无论是在主库执行,还是在备库执行,查询结果都满足READ COMMIT隔离级要求。

高性能模式:

与实时归档一样,备库收到主库发送的Redo日志后,先马上响应主库,再启动日志重演。

 

(5)异步归档

异步归档(Async)由主、备库上配置的定时器触发,根据异步备库的KEEP LSN信息,扫描本地归档目录获取Redo日志,并通过MAL系统将Redo日志发送到异步备库。异步备库的Redo日志重演过程与实时归档等其他类型的归档完全一致。

 

(6)归档类型比较

 

 

(7)归档状态

本地归档、实时归档和即时归档均包含两种状态: Valid 归档有效,正常执行各种数据库归档操作;Invalid 归档无效,主数据库不发送联机Redo日志到备数据库。异步归档只有一种归档状态:Valid。

 

3、MAL系统

MAL系统是基于TCP协议实现的一种集群内部通信机制,DM通过MAL系统实现Redo日志传输,以及其他一些实例间的消息通讯。

 

4、守护进程和监视器

守护进程(dmwatcher)是DM数据守护系统的核心部件,在数据库实例和监视器之间起到信息流转的桥梁作用。数据库实例向本地守护进程发送信息,接收本地守护进程的消息和命令;

监视器(dmmonitor)接收守护进程的消息,并向守护进程发送命令;

,守护进程负责解析、处理、转发命令。守护进程提供了数据库监控、故障检测、故障处理、故障恢复等各种功能。

数据库实例与监视器之间没有直接的消息交互;守护进程解析并执行监视器发起的各种命令(Switchover/Takeover/Open database等),并在必要时通知数据库实例执行相应的操作。

 

监视器和守护进程之间也是采用超时机制判断对方是否故障,即当前时间和上次收到消息的时间差是否超过故障认定时间(守护进程配置的DW_ERROR_TIME),因此不建议在数据守护系统运行过程中调整操作系统时间,避免导致这个差值很大,误判监视器故障。这也是我们在部署集群时候,需要重点检查或者配置时间服务器的原因之一。

 

守护进程控制文件(dmwatcher.ctl)用于记录本地数据库的分裂状态和分裂描述信息。守护进程在检测到本地库分裂时,自动创建dmwatcher.ctl文件,保存在本地库的SYSTEM_PATH路径下,并且文件中记录的状态一定是Split分裂状态。如果dmwatcher加载到dmwatcher.ctl文件,则认为对应的库一定是分裂状态。

如果需要对分裂库进行重建,则需要手动将dmwatcher.ctl文件删除,否则守护进程仍然会认定本地库为分裂库。

 

7、脑裂

脑裂是同一个守护进程组中同时出现两个或者多个活动主库,并且这些主库都接收用户请求,提供完整数据库服务。一旦发生脑裂,将无法保证数据一致性,对数据安全造成严重后果。

 

8、数据库模式

DM支持3种数据库模式:Normal模式、Primary模式和Standby模式。

(1)Normal模式

提供正常的数据库服务,操作没有限制。正常生成本地归档,但不发送实时归档(Realtime)、即时归档(Timely)和异步归档(Async)。

(2)Primary模式

提供正常的数据库服务,操作有极少限制。该模式下部分功能受限,包括:不支持修改表空间文件名、不支持修改arch_ini参数。正常生成本地归档,支持实时归档(Realtime)、即时归档(Timely)和异步归档(Async)。Primary模式下,对临时表空间以外的所有的数据库对象的修改操作都强制生成Redo日志。

(3)Standby模式

可以执行数据库备份、查询等只读数据库操作。正常生成本地归档,正常发送异步归档Redo日志;但实时归档(Realtime)、即时归档(Timely)均强制失效。该模式下时间触发器、事件触发器等都失效。

 

9、数据库状态

DM的数据库状态包括:

(1)Startup状态。系统刚启动时设置为Startup状态。

(2)After Redo状态。系统启动过程中联机日志重做完成后,回滚活动事务前设置为After Redo状态。非Standby模式的实例在执行alter database open操作前,也会将系统设置为After Redo状态。

(3)Open状态。数据库处于正常提供服务的状态,但不能进行归档相关的配置等操作。

(4)Mount状态。数据库在Mount状态下,不能修改数据,不能访问表、视图等数据库对象,但可以执行修改归档配置、控制文件和修改数据库模式等操作,也可以执行一些不修改数据库内容的操作,比如查询动态视图或者一些只读的系统过程。由于Mount状态不生成PWR日志,因此数据页可以正常刷盘,也正常推进检查点。

系统从Open状态切换为Mount状态时,会强制回滚所有活动事务,但不会强制清理(Purge)已提交事务,不会强制断开用户连接,也不会强制Buffer中的脏页刷盘。

(5)Suspend状态。 数据库在Suspend状态下,可以访问数据库对象,甚至可以修改数据,但限制Redo日志刷盘,一旦执行COMMIT等触发Redo日志刷盘的操作时,当前操作将被挂起。

 

下面是简单介绍在实时归档失败时的数据库状态变化:

实时归档失败时(比如网络故障导致),Primary实例将试图切换成Suspend状态,防止后续的日志写入。当实例成功切换为SUSPEND状态时,可直接退出,强制丢弃多余的日志,避免主备数据不一致。

主库如果还在继续写入,此时,主备切换有可能备库没有收到最后那次的RLOG_PKG,导致主库上多一段日志,很容易造成主备数据不一致。

 

 

二、集群环境部署

在搭建数据守护系统前,应注意数据守护系统中各实例使用的DM服务器版本应一致,同时还应注意各实例所在主机的操作系统位数、大小端模式、时区及时间设置都应一致,以及使用同一个用户启动DM服务器和守护进程dmwatcher,以免系统在运行时出现意想不到的错误。

下面列出的是检查和注意事项清单:

(1).基本和单机环境一致,操作系统参数调整一致;

(2).集群内所有操作系统的数据盘是否独立分区;

(3).集群内所有操作系统的目录挂载是否一致;

(4).集群内所有操作系统是否开启ntp时间同步;

(5).集群内所有操作系统用户(dmdba),id与group id 是否一致;

(6).集群内所有服务器是否在同一局域网内,注意网络防火墙策略;

(7).备份目录是否共享目录(nfs);

(8).监视器(dmmonitor)有条件一定要独立安装在服务器。

 

整个安装过程大致分为 5个大的步骤:

 

步骤1、数据准备阶段

配置数据守护之前,必须先通过备份还原方式同步各数据库的数据,确保各数据的数据保持完全一致。主库可以是新初始化的数据库,也可以是正在生产、使用中的数据库。

数据初始化大致分为两种情况:

(1)如果是初始搭建环境,可以通过对主库脱机备份、对备库脱机还原的方式来准备数据;

(2)如果主库已经处于运行状态,则可以对主库进行联机备份、对备库脱机还原的方式来准备数据。

可以根据实际情况进行选择数据初始化的方式。

两种情况都需要服务器配置本地归档,本地归档配置方式如下:

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

2.配置dmarch.ini

数据准备过程大致是 主库 进行脱机/联机备份;然后把备份文件从主库传输到备库所在机器;最后在备库机器上进行还原操作。

 

步骤2、参数文件配置阶段

参数配置涉及到主库、备库、第三方独立监视器。

 

主库

备库

第三方监视器

1 配置dm.ini

2 配置dmmal.ini

3 配置dmarch.ini

4 配置dmwatcher.ini

5 启动主库到Mount状态

6 设置OGUID

7 修改数据库为Primary模式

1 配置dm.ini

2 配置dmmal.ini

3 配置dmarch.ini

4 配置dmwatcher.ini

5 启动备库到Mount状态

6 设置OGUID

7 修改数据库为Standby模式

1 已经安装了DM数据库软件

2 新建dmmonitor.ini文件并配置相关参数。文件中的MON_DW_IP中的IP和PORT和dmmal.ini中的MAL_HOST和MAL_DW_PORT配置项保持一致。

 

注意:

(1)MAL系统,主备库的dmmal.ini配置必须完全一致。

(2)主库和即时备库的守护进程配置为自动切换模式,那应当配置确认监视器。和普通监视器相比,确认监视器有自动故障处理的功能:在主库发生故障时,能够自动通知即时备库接管为新的主库。

 

步骤3、启动阶段

(1)启动各个主备库上的守护进程

./dmwatcher /dm/data/DAMENG/dmwatcher.ini(根据自己安装部署的目录决定文件的存放和启动位置)

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

(2)启动第三方独立监视器

./dmmonitor /dm/data/dmmonitor.ini (根据自己安装部署的目录决定文件的存放和启动位置)

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

 

步骤4、数据验证阶段

使用disql 客户端验证。首先在主库上,使用 disql 客户端登录主库,创建一个测试表,插入数据。然后在备库上,使用 disql 客户端登录主库,查询刚才主库上创建的测试表中插入的数据,如果可以查询到。则系统安装部署成功。

 

步骤5、注册各项服务阶段

用root用户执行dm_service_installer.sh 脚本来注册守护进程服务、数据库实例服务以及第三方监视器服务。

 

至此数据守护实时主备集群搭建完毕,在搭建步骤和各项配置都正确的情况下,在监视器上执行show命令,可以监控到所有守护进程状态 WSTATUS 为 OPEN,所有实例状态 ISTATUS 为 OPEN,归档类型 RTYPE 为REALTIME,归档状态 RSTAT 为VALID,即为正常运行状态。

此外,集群的日常操作管理方面还有以下顺序注意事项:

1、集群关闭顺序

l  退出监视器

l  关闭备库的守护进程

l  关闭主库的守护进程

l  关闭主库实例

l  关闭备库实例

 

2、集群开启顺序

l  开启主库实例

l  开启备库实例

l  开启备库的守护进程

l  开启主主的守护进程

l  开启监视

 

 

 

以上是这次技术分享的相关内容,欢迎小伙伴给我留言进行交流指导。

 

 

DM 武汉达梦数据库股份有限公司 24小时免费服务热线:400 991 6599
达梦技术社区:https://eco.dameng.com

标签:主库,DM,概要,数据库,归档,日志,Redo,守护
来源: https://www.cnblogs.com/idmon/p/16262983.html