2021-11-09

DM 实时主备搭建原理
DM 实时主备搭建原理:
1.DM 数据守护(Data Watch)的实现原理
将主库(生产库)产生的 Redo 日志传输到备库,备库接收并重新应用 Redo 日志,从而实现备库与主库的数据同步。DM 数据守护的核心思想是监控数据库状态,获取主、备库数据同步情况,为 Redo
日志传输与重演过程中出现的各种异常情况提供一系列的解决方案
1.1 DM 数据守护系统结构
主要由主库、备库、Redo 日志、Redo 日志传输、Redo 日志重演、守护进程
(dmwatcher)、监视器(dmmonitor)组成
① 主库
Primary 模式,提供完整数据库服务的实例,一般来说主库是用来直接支撑应用系统的生产库。 与普通单节点数据库相比,主库提供完整的数据库服务,主要的功能限制包括:不支持修改表空间文件名、不支持修改
arch_ini 参数。
② 备库
Standby 模式,提供只读数据库服务的实例。备库除了用于容灾,还可以提供备份、查询等只读功能,并且备库还支持临时表的 Insert/Delete/Update 操作。 备库在 Open
状态下执行数据同步,是真正意义上的热备库。
根据数据同步情况,备库又可以分为可切换备库和不可切换备库。可切换备库是指,主备库之间数据完全同步,主库发生故障、备库切换为主库后,不会造成任何数据丢失的备库。
③ 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 日志写入联机日志文件。
⑥ 守护进程
守护进程(dmwatcher)是数据守护系统的核心工具,监控数据库实例的运行状态和主备库数据同步情况,在出现故障时启动各种处理预案。守护进程是各种消息的中转站,接收数据库实例、其他守护进程、以及监视器
发送的各种消息;同时,守护进程也会将收到的数据库实例消息转发给其他守护进程和监视器。守护
进程必须和被守护的数据库实例部署在同一台机器上。

⑦ 监视器
监视器(dmmonitor)用来监控守护系统内守护进程、数据库实例信息,执行用户输入命令、监控实例故障、实现自动切换等。监视器一般配置在数据库实例和守护进程以外的机器上。
1.2 多种守护模式
提供自动切换和手动切换两种守护模式,其中,配置自动切换的前提是已经部署确认监视器。在提供第三方机器部署确认监视器情况下,可以配置为故障自动切换模式,主库出现故障时,系统自动将备库切换为主库对外提供数据
库服务。 1.3 多种守护类型
守护进程可以配置为全局守护(提供实时主备、MPP 主备、读写分离集群功能)或者本地守护,适应各种应用需求。
①MAL 系统
基于 TCP 协议实现的一种内部通信机制,具有可靠、灵活、高效的特性。DM 通过 MAL 系统实现 Redo 日志传输,以及其他一些实例间的消息通讯。
②OGUID
数据守护唯一标识码,配置数据守护时,需要由用户指定 OGUID 值。其中数据库的 OGUID 在 MOUNT 状态下由系统函数 SP_SET_OGUID 设置,守护进程和监视器的 OGUID
值在配置文件中设定。
同一守护进程组中的所有数据库、守护进程和监视器,都必须配置相同的 OGUID值,取值范围为 0~2147483647。
③OGUID 的查询方式
SELECT OGUID FROM V$INSTANCE;
2. 实时主备
由主库、实时备库、守护进程和监视器组成。通过部署实时主备系统,可以及时检测并处理各种硬件故障、数据库实例异常,确保持续提供数据库服务。
2.1 实时主备系统主要功能
2.1.1 实时数据同步
主备库通过实时归档完成数据同步,实时归档要求主库将 RLOG_PKG 发送到备库后,再将 RLOG_PKG 写入本地联机 Redo 日志文件。但要注意的是,备库确认收到主库发送的 Redo
日志,并不保证备库已经完成重演这些 Redo 日志,因此主备库之间的数据同步存在一定的时间差。
2.1.2 主备库切换
主备库正常运行过程中,可以通过监视器的 Switchover 命令,一键完成主备库角色转换。
2.1.3 自动故障处理
备库故障,不影响主库正常提供数据库服务,守护进程自动通知主库修改实时归档为 Invalid 状态,将实时备库失效。
2.1.4 自动数据同步
备库故障恢复后,守护进程自动通知主库发送归档 Redo 日志,重新进行主备库数据同步。并在历史数据同步后,修改主库的实时归档状态为 Valid,恢复实时备库功能。
备库接管后,原主库故障恢复,守护进程自动修改原主库的模式为 Standby,并重新作为备库加入主备系统。
2.1.5 备库接管

主库发生故障后,可以通过监视器的 Takeover 命令,将备库切换为主库,继续对外提供服务。如果配置为自动切换模式,确认监视器可以自动检测主库故障,并通知备库接管,这个过程不需要人工干预。
2.1.6 备库强制接管
如果执行 Takeover 命令不成功,但主库可能由于硬件损坏等原因无法马上恢复,为了及时恢复数据库服务,DM 提供了 Takeover Force 命令,强制将备库切换为
主库。但需要由用户确认主库故障前,主库与接管备库的数据是一致的(主库到 备库的归档是 Valid 状态),避免引发守护进程组分裂。
2.1.7 读写分离访问
在备库查询的实时性要求不高的条件下,实时主备也可以配置接口的读写分离属性访问,实现读写分离功能特性。
实时归档是实时主备数据同步的基础。 2.2 总体原则说明
DMDSC 集群各个节点分别部署守护进程(dmwatcher) 。
DMDSC 集群数据库控制节点的守护进程,称为控制守护进程,普通节点的守护进程称为普通守护进程,如果控制节点发生变化,则控制守护进程也相应变化。
守护进程会连接 DMDSC 集群所有实例,但只有控制守护进程会发起 OPEN、故障处理、故障恢复等各种命令。普通守护进程不处理用户命令,但接收其他库的控制守护进程消息。
主备实时同步数据时,DMDSC 集群主库各个节点将各自产生的联机日志发送到备库控制节点(重演节点)进行重演,备库普通节点不接收日志。
2.3 归档配置
1.DMDSC 集群必须配置远程归档,用于 DMDSC 节点故障后的数据同步。
2.如果归档目标是 DMDSC 集群,则归档的目标节点需要同时配置 DMDSC 集群所有实例,一个 DMDSC 集群作为一个整体进行配置,realtime/timely/async 归档配置要求
ARCH_DEST 配置目标 DMDSC 集群所有节点信息,以‘/’分割。

数据文件的介绍

数据文件就是数据库的记忆,保存着修改提交后的结果,所有的数据归根都要回到其中,数据文件一旦损坏就会导致数据丢失。
DM 数据文件由表空间进行组织管理,表空间是数据文件的逻辑集合,一个表空间下面对应一个或者多个数据文件。要熟悉数据文件,必须先熟悉表空间。
表空间分为系统表空间和非系统表空间。系统表空间
在 DM 数据库初始化完成后,默认会创建 5 个表空间:
SYSTEM:用于存放 DM 数据库的字典相关信息,用户不能在此创建对象。
ROLL:用于存放事务执行过程中,DML 语句操作之前的值。支撑表数据的读一致性。该表空间由实例自动维护。
MAIN:该表空间类似于 oracle 的 user 表空间,创建用户时,如果没有给用户指定默认的表空间,该表空间就会成为用户的表空间。
TEMP:用于存放一些操作过程中的临时数据段。由实例自动维护。 HMAIN:当用于创建 huge 表时,未指定表空间,由默认使用此表空间,实例自动维
护,无需用户干预。用户表空间
用户表空间就是指由用户通过 DM 提供的创建表空间语句创建的表空间。最多允许有
65535 个表空间。在创建时,用户可以指定表空间的文件存放路径,占用的簇数据,是否自动扩展,每次扩展的大小,最大大小,等等参数。
接下来介绍如何创建用户自定义表空间。

1,创建表空间时需要指定表空间名和其拥有的数据文件列表
CREATE TABLESPACE bookshop DATAFILE ‘d:\bookshop1.dbf’ SIZE 128, ‘d:\bookshop2.dbf’ SIZE 128;
以上语句,创建表空间 bookshop ,他含有两个数据文件,每个大小为 128M.
2,删除表空间
DROP TABLESPACE bookshop [cascade]; #cascade 会删除所有的数据文件,谨慎使用。
3,修改表空间名
ALTER TABLESPACE bookshop RENAME TO books;
4,离线表空间
ALTER TABLESPACE bookshop OFFLINE;

ALTER TABLESPACE bookshop OnLINE;
表空间和数据文件管理基本内容介绍完成,DM 数据库的逻辑结构就介绍到这里。

DMS 数据库配置文件介绍
简介:

初始化完成启动后生成的物理文件中重要的系统配置文件及控制文件。
配置文件:是用来配置数据库功能及性能的一些文本文件的集合。主要有两个功能点:
用于启动或者禁用某个数据库功能特性用于性能优化配置选项。
主要的几个配置文件如下:
dm.ini 文件:
该文件是数据库启动必需的文件,通过读取该文件,获取控制文件路径,归档等相关配置选项。
文件内的参数属性分为三种:
静态:可以被动态修改,修改后重启服务器才能生效。
动态:可以被动态修改,修改后即时生效。动态参数又分为会话级和系统级两种。会话 级参数被修改后,新参数值只会影响新创建的会话,之前创建的会话不受影响;系统级参数的修改则会影响所有的会话。
手动,不能被动态修改,必须手动修改 dm.ini 参数文件,然后重启才能生效。
Dmarch.ini 文件:
该文件用于配置归档的相关属性。需要在dm.ini 文件中修改参数ARCH_INI =1 启用归档后,才会生效。
文件内容如下:

Dm_svc.conf:
用于配置接口和客户端相关参数。比如配置服务名,方便本地应用通过服务名访问数据库。配置如下:

客户端就可以通过类似 disql username/password@dmsvc 的方式连接数据库。
Sqllog.ini
该文件用于记录 Sql 查询日志,常用于慢查询分析,需要修改 dm.ini 文件,启用
SVR_LOG =1,然后配置该文件即可。配置说明如下:

控制文件
控制文件是一个二进制文件,它记录了数据库必要的初始信息,在服务器运行中,对服务器的修改,事务的提交等等都会导致对控制文件的修改。一旦损坏就会导致服务器运行异常或启动失败。因此会对控制文件时行必要的备份
。默认备份 10个,放在特点的目录下,由 Dm.ini 文件配置默认的设置。参数为:
CTL_PATH #控制文件路径
CTL_BAK_NUM #控制文件备份个数限制,取值 1~100,默认是 10,循环覆盖。

以上是对 dm8 主要的几个配置文件的介绍。下一节介绍 dm8 数据库的内存结果和主要线程。

数据库的简介
数据库(Database):是一种存放数据的介质,规范管理数据的仓库。
SQL(Structured Query Language):结构化查询语言,是一种数据库查询和程序设计的语言。
关系型数据库和非关系数据库:
关系型数据库:指采用了关系模型来组织数据的数据库。通过表与表行与行存储数据,常见的关系型数据(MySQL,Oracle, Sql Server,DB2, SQLLite,DM
等 )。
非关系型数据库:使用对象储存,通过对象的自身属性来决定,常见的非关系型数据库(Redis, MongoDB,HBase 等)。
DM 数据库的介绍:
简介:达梦数据库作为已商业化的国产数据库代表,在政府及事业单位应用还是比较广泛,达梦数据库属于关系型数据库。
数据库实例 :已实例化可存储数据的仓库。达梦数据库与 MySQL 数据库有一个很大的差别就是:MySQL 服务启动后通过 create database 语句创建 N 个数据库
(数据库实例);而达梦数据库一个实例就只能挂一个数据库(即一个实例就是一个数据库),如果想建多个数据库,则需配置启动相应数量的实例。达梦的每个实例有一系列的后台进程和内存结构,这些是相互独立的。
用户:达梦数据库用户是建在实例下的,因为实例相互独立,所有达梦数据库不同的实例下可以有相同的用户名。另外,在达梦数据库中通过 create user
语句创建用户时,会同时创建一个同名的“模式”。也可以通过 create schema 语句单独创建模式(特别注意:在 Oracle 中,用户与 schema
是一一对应的,不能单独创建模式,要想创建模式得需通过创建一个同名用户来实现),并授权给某个已存在的用户,因此在达梦数据库中用户与模式是 1:N 的关系。(注:如果先通过 create schema
创建了模式,再通过 create user 创建同名用户,不能创建成功。)
模式:
关于模式,需要记住一下几点:
1、一个用户一般对应一个 schema,该用户的 schema 名等于用户名,并作为该用户缺省 schema;
2、一个用户还可以使用其他的 schema(Oracle 数据库也可通过权限管理实现访问其他 schema);
3、创建模式不指定用户时,该模式默认为 SYSDBA 拥有;
4、在同一模式下不能存在同名对象,但在不同模式中的对象名称可以相同;
5、用户可以直接访问同名模式对象,但如果要要访问其他模式对象,则必须具有对象权限;
6、当用户要访问其他模式对象时,必须附加模式名作后缀(schema.table);

7、用户是用来连接数据库对象,而模式是用来创建及管理对象的。
数据库表:
1、实现数据共享:数据共享包含所有用户可同时存取数据库中的数据,也包括用户可以用各种方式通过。
2.减少数据的冗余度:同文件系统相比,由于数据库实现了数据共享,从而避免了用户各自建立应用。
3.保持数据的独立性:数据的独立性包括逻辑独立性(数据库中数据库的逻辑结构和应用程序相互独立)。
4.数据实现集中控制:文件管理方式中,数据处于一种分散的状态,不同的用户或同一用户在不同处理。
数据文件 :数据的物理载体

                                      链接: https://blog.csdn.net/qq_38083601/article/details/121225809
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值