一、服务管理
DSC有三个重要服务需要管理,分别是DMCSS,DMASM及DM数据库实例管理服务。DMCSS全称为Dameng Cluster Synchronization Services,即达梦集群同步服务。使用 DMASM 集群或 DMDSC 集群都必须要配置 DMCSS 服务。DMASM(DM Auto Storage Manager)是一个专用的分布式文件系统,使用 DMASM自动存储管理方案,可以帮助用户更加便捷地管理DMDSC集群的数据库文件。
在DSC集群中,这三个服务可以注册到Linux系统服务中,在后台运行,开机可自启动,避免人员在开机时逐个手动启动。作为后台运行服务进程,是项目上线的常用方式。达梦数据库DM8中,注册数据库服务一般用dm_service_installer.sh命令完成,该命令帮助如下:
[root@dcs0 root]# ./dm_service_installer.sh -h
Usage: dm_service_installer.sh -t service_type [-p service_name_postfix] [-dm_ini dm_ini_file]
[-watch_ini watch_ini_file ] [-wmon_ini wmon_ini_file] [-rww_ini rww_ini_file]
[-watcher_ini watcher_ini_file ] [-monitor_ini monitor_ini_file] [-cssm_ini cssm_ini_file]
[-dfs_ini dfs_ini_file] [-dcr_ini dcr_ini_file]
[-dss_ini dss_ini_file] [-drs_ini drs_ini_file] [-dras_ini dras_ini_file] [-dcs_ini dcs_ini_file] [-server server_info]
[-m open|mount] [-y dependent_service] [-auto true|false]
or dm_service_installer.sh [-s service_file_path]
or dm_service_installer.sh -h
-t Service Type, include: dmimon,dmap,dmserver,dmwatcher,dmmonitor,dmcss,dmcssm,dmasmsvr,dmdcs,dmdrs,dmdras,dmdss.
-p Service Name Postfix, is invalid for dmimon,dmap.
-dm_ini The path of the dm.ini file.
-watch_ini The path of the dmwatch.ini file.
-wmon_ini The path of the dmwmon.ini file.
-rww_ini The path of the dmrww.ini file.
-watcher_ini The path of the dmwatcher.ini file.
-monitor_ini The path of the dmmonitor.ini file.
-dcr_ini The path of the dmdcr.ini file.
-cssm_ini The path of the dmcssm.ini file.
-dss_ini The path of the dss.ini file.
-drs_ini The path of the drs.ini file.
-dras_ini The path of the dras.ini file.
-dcs_ini The path of the dcs.ini file.
-dfs_ini The path of the dfs.ini file.
-server server info
-auto Set the start type of the service, whether auto.include:true或false, default true.
-m Set the start mode of the server, include:open or mount, is valid for dmserver only, select.
-y Set the dependent service, this parameter is valid for dmserver,dmasmsvr in systemd service environment.
-s The path of the service script file, if set this parameter and ignore other parameter but -y.
-h Help
重要参数解释如下:
-t 服务类型,主要有dmimon,dmap,dmserver,dmwatcher,dmmonitor,dmcss,dmcssm,dmasmsvr,dmdcs,dmdrs,dmdras,dmdss类型。
-p 服务名后缀,对dmimon,dmap类型服务无效。
-m 实例启动模式,仅对dmserver类型服务有效,打开或者挂载模式。
-y 指定服务依赖关系,实际上是设定服务启动先后顺序,该服务依赖于哪个服务,则在这个服务启动成功后再启动此服务。
-s 设定服务脚本文件,设定这个参数则-y参数会被忽略。
-auto 取值可为true或false,默认为true,设置服务是否为自启动。
下面利用dm_service_installer.sh注册三个服务:
1.注册DMCSS服务
./dm_service_installer.sh -t dmcss -p DMCSS0 -dcr_ini /dm8/data/dmdcr.ini
2.注册DMAMS服务
./dm_service_installer.sh -t dmasmsvr -p DMASM0 -dcr_ini /dm8/data/dmdcr.ini -y DmCSSServiceDMCSS0
3.注册实例服务
./dm_service_installer.sh -t dmserver -p DSC0 -dm_ini /dm8/data/dsc0_config/dm.ini -dcr_ini /dm8/data/dmdcr.ini -y DmASMSvrServiceDMASM0
服务注册完成后,会在/usr/lib/systemd/system文件夹下生成以下三个文件:
成为系统服务后,用户可以手动地进行启动、关闭和状态查询。
启动DSC集群,按照CSS、ASM、DMSERVER的先后顺序进行:
systemctl start DmCSSServiceDMCSS0
systemctl start DmASMSvrServiceDMASM0
systemctl start DmServiceDSC0
关闭DSC集群,按照CSS、DMSERVER、ASM的先后顺序进行:
systemctl stop DmCSSServiceDMCSS0
systemctl stop DmServiceDSC0
systemctl stop DmASMSvrServiceDMASM0
当然,也可以启动 DMCSSM,在DMCSSM控制台执行命令"ep startup asm"启动 DMASMSVR 集群,执行"ep startup dsc"启动 dmserver 集群,执行"ep stop asm/dsc"可以关闭 dmasmsvr/dmserver 集群环境。
查询各服务状态:
systemctl status DmCSSServiceDMCSS0
systemctl status DmASMSvrServiceDMASM0
systemctl status DmServiceDSC0
二、备份还原
DMDSC集群备份还原的功能、语法与单节点数据库基本保持一致,下面主要介绍DMDSC集群与单节点数据库备份、还原的使用方法差异,并说明在DMDSC集群中执行备份还原的一些注意事项。
达梦数据库中,备份还原的对象包括:表、表空间和数据库。表备份还原的操作对象是数据页,而数据页是通过 BUFFER 获取的,与存储无关,因此DMDSC集群的表备份还原与单节点没有任何区别。表空间备份只需要访问属于这个表空间的数据文件,并不需要备份归档日志,因此 DMDSC 集群的表空间备份与单节点没有任何区别。表空间还原要求将表空间数据恢复到最新状态,需要重做归档日志,但 DMDSC 集群中本地归档往往是保存在本地磁盘中的,因此如何访问其他节点生成的归档日志,是 DMDSC集群需要解决的问题。
数据库备份也需要访问所有节点的本地归档日志文件,同样需要解决如何访问其他节点的归档日志问题;另外,与单节点不同的是,DMDSC 集群备份过程中还需要记录备份开始和结束时各个节点的 LSN 信息,LSN 信息需要在节点间进行传递。数据库还原的过程就是从备份集中读取数据页并重新写入数据库文件中,而 DMDSC 集群的数据库文件是保存在共享存储中的,因此不要特别处理。但是,数据库的恢复操作有可能需要访问本地归档日志文件,因此也需要解决如何访问其他节点归档日志问题。
虽然可以将本地归档(LOCAL ARCHIVE)保存到共享存储中,解决其他节点归档日志问题,但是出于数据安全性和成本的考虑,一般建议将数据库备份文件和本地归档日志文件保存在本地磁盘中,避免由于共享存储的损坏,导致所有数据丢失、无法恢复的风险。而拷贝远程节点归档日志文件,到备份还原执行节点的做法,不但操作繁琐,而且在归档日志量比较大的情况,执行效率也存在很大问题。为了简化操作步骤,降低数据丢失风险,达梦数据库提供了远程归档(REMOTE ARCHIVE)功能,解决了DMDSC集群备份还原过程中访问其他节点归档日志文件问题。
配置远程归档后,DMDSC 集群中各个节点接收其他节点发送的REDO日志,并保存在节点的本地目录后,DMDSC集群备份恢复的使用方法与单节点基本保持一致。
DMDSC备份集
备份集除了保存备份对象的数据(数据页和归档日志),还记录了备份库节点的描述信息。单节点库生成的备份集,可以认为是只包含一个节点的特殊备份集。与节点相关的描述信息主要包括:
- DMDSC 库的节点数,单节点库为1
- 备份开始时 DMDSC 节点的状态,以及各节点 REDO 日志的起始 LSN 和 SEQ
- 备份结束时 DMDSC 节点 REDO 日志的结束 LSN 和 SEQ
- 备份集中记录了执行备份节点的 dm.ini 配置参数,还原时使用备份集中的参数值覆盖目标库节点的dm.ini 文件
备份操作可以在 DMDSC 集群的任意节点执行,生成的备份集可以存放在本地磁盘上,也可以存放到共享存储的 DMASM目录中。但考虑到数据安全性,一般建议将备份集保存在本地磁盘上。可以通过以下方式,将备份集生成到本地磁盘:
- 使用dminit 初始化库时,将默认备份目录 bak_path 设置为本地磁盘
- 修改DMDSC 集群中所有节点的 dm.ini 配置文件,将 bak_path 设置为本地磁盘
- 执行备份时,手动指定备份集路径为本地磁盘
DMDSC 备份还原实例
配置远程归档和本地归档如下:
启动 console工具,脱机备份数据库。备份其中任意一个节点即可备份整个 DMDSC 环境。 注意备份时,在环境这一栏中需要选定DSC,并指定DCR_INI文件具体位置,如下:
生成备份信息如下:
还原数据库。还原数据库之前可选择对备份文件进行校验。需要注意的是,待还原的目标库可以是单机库,也可以是DMDSC库,且节点个数允许不同。
检验备份集:
还原数据库:
恢复数据库:
更新数据库魔数:
启动数据库并查看数据库状态:
SQL> select * from v$instance;
LINEID NAME INSTANCE_NAME INSTANCE_NUMBER HOST_NAME
---------- ---- ------------- --------------- ---------
SVR_VERSION DB_VERSION
-------------------------- -------------------
START_TIME
----------------------------------------------------------------------------------------------------
STATUS$ MODE$ OGUID DSC_SEQNO DSC_ROLE
------- ------ ----------- ----------- ------------
1 DSC0 DSC0 1 dcs0
DM Database Server x64 V8 DB Version: 0x7000a
2021-05-01 23:05:12
OPEN NORMAL 0 0 Control node
used time: 53.964(ms). Execute id is 3.
备份还原DSC集群注意事项
- 配置远程归档时,必须同时配置本地归档。
- DMDSC 集群环境中,备份还原涉及到的 trace 文件路径、DUMP 命令的映射文件路径、SHOW 命令的备份集信息输出文件路径都不支持 DMASM 类型文件
- 由于 DMDSC 集群中,各个节点可能存在 LSN 值相同的 REDO 日志,恢复过程中无法严格校验归档日志的完整性;因此,需要用户保证全局归档日志的完整性
- 在恢复过程中创建的数据文件,优先使用原始路径创建,如果创建失败,则会在system_path 目录下创建。因此,在恢复结束后,需要检查一下是否有数据文件创建在本 地磁盘上,如果有则需要用户手动执行 SQL,将这些文件重新存放到共享存储、或者 DMASM文件系统中,确保数据文件可以被 DMDSC 集群中的所有节点访问
- 归档日志是恢复数据库的关键,建议将归档文件与数据库文件分别保存到不同的物理磁盘上;如果使用 DMASM 文件系统保存数据库文件,则建议将归档配置到本地磁盘上,以降低数据无法修复的风险
- 如果需要访问DMASM文件系统,DMRMAN必须设置 DCR_INI参数,指定 DCR的访问配置
- 数据库恢复过程中,需要保证本地归档和远程归档的完整性。如果由于节点故障等原因,导致远程归档不完整,则需要使用 DMRMAN 工具在对应节点修复本地归档后,将修复后本地归档拷贝过来,再进行恢复
- 还原操作指定 REUSE DMINI 选项时,会将备份集中的 dm.ini 参数更新还原节点上的 dm.ini 配置文件,DMDSC 集群中其他节点的 dm.ini 并不会更新,需要用户手动修改