本文使用 DM8 单节点测试环境,实践操作系统文件级冷备、DMRMAN 脱机备份,以及通过 disql 执行的联机全库、单表、表空间和增量备份。
| 项目 | 配置 |
|---|---|
| 实例名 | DAMENG |
| 实例配置文件 | /dmdata/data/DAMENG/dm.ini |
| 数据库端口 | 5236 |
| 备份目录 | /dmdata/dmbak |
使用 root 创建目录,并设置属主和权限:
mkdir -p /dmdata/dmbak chown dmdba:dinstall /dmdata/dmbak chmod 750 /dmdata/dmbak ls -ld /dmdata/dmbak df -h /dmdata
该备份目录位于 /dmdata 所在文件系统,与数据目录处于同一个文件系统内,生产环境建议将备份复制到独立磁盘或异机存储,避免数据库磁盘故障时备份也一并丢失。
systemctl status DmServiceDAMENG disql / as sysdba
后续 SQL 示例均在 disql 中执行。
先检查当前归档状态及配置:
SELECT ARCH_MODE FROM V$DATABASE;
SELECT * FROM V$DM_ARCH_INI;
如果已经处于归档模式,应核对归档配置和目录可用性,不必重复开启。若尚未开启,则根据当前 DM8 版本的官方手册和实例状态完成配置。
脱机备份要求数据库实例停止运行。本节分别演示操作系统文件级备份和 DMRMAN 脱机备份。
systemctl stop DmServiceDAMENG systemctl status DmServiceDAMENG
确认实例已经正常关闭后再复制文件。不要在数据库仍运行、数据文件仍变化时直接打包,并将其当作一致性冷备份。
tar -czpf /dmdata/dmbak/DAMENG_cold_$(date +%Y%m%d_%H%M%S).tar.gz -C /dmdata/data DAMENG
该命令将 /dmdata/data/DAMENG 目录打包到 /dmdata/dmbak。恢复时仍需结合实例配置、文件权限和数据库恢复要求处理。
ls -lh /dmdata/dmbak/ tar -tzf /dmdata/dmbak/DAMENG_cold_实际时间戳.tar.gz | head
systemctl start DmServiceDAMENG systemctl status DmServiceDAMENG
操作系统文件级冷备操作简单,适合停库后整体复制实例文件;但它不是达梦数据库工具生成的备份集,恢复时必须保证实例文件完整、权限正确,并按文件级恢复方案执行。
systemctl stop DmServiceDAMENG systemctl status DmServiceDAMENG su - dmdba dmrman
确认实例已关闭后,在 RMAN> 提示符下执行备份。
或是通过DMRMAN的CTLSTMT参数,直接在linux命令行中带入备份命令
BACKUP DATABASE '/dmdata/data/DAMENG/dm.ini' FULL BACKUPSET '/dmdata/dmbak/DAMENG_OFFLINE_FULL_01';
BACKUP DATABASE:执行数据库备份。dm.ini:指定目标实例的配置文件。FULL:指定全量备份。BACKUPSET:指定备份集输出路径。find /dmdata/dmbak/DAMENG_OFFLINE_FULL_01 -maxdepth 2 -type f
systemctl start DmServiceDAMENG
systemctl status DmServiceDAMENG
启动后通过 disql 验证连接。备份集目录存在并不代表一定可恢复;还应进行备份集检查和恢复演练。
联机备份在数据库运行期间执行,可以减少因备份导致的停机时间。全库备份、表空间备份和增量备份需要结合归档配置及基备份集;单表备份有不同的限制。
确认数据库处于 OPEN 状态,归档配置符合要求,且备份目录对数据库运行用户可写。
在 disql 中执行:
BACKUP DATABASE FULL BACKUPSET '/dmdata/dmbak/DAMENG_ONLINE_FULL_01';
执行完成后检查返回信息及备份集:
ls -lh /dmdata/dmbak/
find /dmdata/dmbak/DAMENG_ONLINE_FULL_01 -maxdepth 2 -type f
该全量备份可作为后续数据库增量备份的基备份。后续应保留增量备份所依赖的基备份集,不能随意删除。
若是备份路径在BAK_PATH配置路径下,可通过查询V$BACKUPSET视图查询备份信息
WZL.TEST本文按 WZL.TEST 表示 WZL 模式下的 TEST 表。先查询对象是否存在及其表空间:
SELECT OWNER, TABLE_NAME, TABLESPACE_NAME
FROM DBA_TABLES
WHERE OWNER = 'WZL'
AND TABLE_NAME = 'TEST';
如果当前账号没有查询 DBA_TABLES 的权限,可使用具有相应权限的账号查询,或通过当前版本支持的数据字典视图确认。
表备份是物理备份中唯一能联机恢复的备份类型。
BACKUP TABLE WZL.TEST BACKUPSET '/dmdata/dmbak/WZL_TEST_TABLE_FULL_01';
表备份属于联机完全备份。执行后检查返回信息和备份集:
find /dmdata/dmbak/WZL_TEST_TABLE_FULL_01 -maxdepth 2 -type f
单表备份适合针对单个表的数据保护或迁移。它与全库备份的恢复对象及恢复流程不同,不能把单表备份集当成全库备份集使用。
表空间备份针对指定表空间中的有效数据,并非只备份其中某一张表。 表空间备份要求数据库处于 OPEN 状态,并且需要满足联机备份的归档要求。
WZL.TEST 所属表空间SELECT TABLESPACE_NAME
FROM DBA_TABLES
WHERE OWNER = 'WZL'
AND TABLE_NAME = 'TEST';
BACKUP TABLESPACE MAIN FULL
BACKUPSET '/dmdata/dmbak/MAIN_TS_FULL_01';
如果表空间中还有其他对象,表空间备份也会覆盖该表空间中的有效数据,而不是只备份 WZL.TEST。
检查备份集:
find /dmdata/dmbak/MAIN_TS_FULL_01 -maxdepth 2 -type f
先成功完成表空间全量备份,再执行增量备份:
BACKUP TABLESPACE MAIN INCREMENT
WITH BACKUPDIR '/dmdata/dmbak'
BACKUPSET '/dmdata/dmbak/MAIN_TS_INCR_01';
WITH BACKUPDIR 用于指定基备份集搜索目录。执行前应确认该目录内存在与本次表空间增量备份匹配的基备份集,并核对当前版本支持的语法。
增量备份以已有备份集为基础,通过扫描数据文件,识别并备份需要纳入本次备份的数据页。与完全备份相比,增量备份通常能够减少备份数据量,但实际效果取决于数据变化情况。
根据基备份的选择方式,DM8 的增量备份分为两种:
增量备份的恢复依赖完整的备份集链。差异增量可能依赖前序增量备份,而累积增量以完全备份为基准。执行恢复时,需要确保相关基备份及恢复所需的增量备份集均可用,不能仅保留最后一次增量备份而删除其依赖的备份集。
使用前面生成的全库全量备份作为基备份:
/dmdata/dmbak/DAMENG_ONLINE_FULL_01
如果全量备份尚未成功完成,应先执行并确认备份集可用。
增量备份需要有可备份的数据变化。在测试表中执行一笔测试数据变更并提交。
BACKUP DATABASE INCREMENT
WITH BACKUPDIR '/dmdata/dmbak'
BACKUPSET '/dmdata/dmbak/DAMENG_ONLINE_INCR_01';
INCREMENT:指定增量备份。WITH BACKUPDIR:指定基备份集搜索目录。BACKUPSET:指定本次备份集输出路径。未指定 CUMULATIVE 时,通常按差异增量备份处理。若需要累积增量备份,应明确指定 CUMULATIVE,并确认其基备份要求。
再次产生一笔测试数据变化后,可以执行第二次增量备份:
BACKUP DATABASE INCREMENT
WITH BACKUPDIR '/dmdata/dmbak'
BACKUPSET '/dmdata/dmbak/DAMENG_ONLINE_INCR_02';
每次使用不同的备份集路径。若期间没有产生可备份的数据变化,增量备份可能无法按预期完成;遇到错误时,应检查错误信息及基备份集匹配情况。
查看备份文件:
ls -lh /dmdata/dmbak/
find /dmdata/dmbak/DAMENG_ONLINE_FULL_01 -maxdepth 2 -type f
find /dmdata/dmbak/DAMENG_ONLINE_INCR_01 -maxdepth 2 -type f
find /dmdata/dmbak/DAMENG_ONLINE_INCR_02 -maxdepth 2 -type f
恢复时需要保留完整的依赖链。不要在完成恢复验证前删除全量基备份集或相关增量备份集。
WITH BACKUPDIR应指向实际存放基备份集的目录。
可尝试查询备份相关视图:
SELECT * FROM V$BACKUP_HISTORY;
SELECT * FROM V$BACKUPSET;
| 备份方式 | 数据库状态 | 归档要求 | 是否支持增量 | 主要用途 |
|---|---|---|---|---|
| 操作系统文件级冷备 | 正常关闭 | 文件级冷备本身不依赖联机归档配置 | 不适用 | 停库后整体复制实例文件 |
| DMRMAN 脱机全量备份 | 正常关闭 | 某些情况需要归档文件 | 支持 | 使用达梦工具生成备份集 |
| 联机全库备份 | OPEN | 需要满足联机备份的归档要求 | 支持 | 日常全库备份及增量备份基线 |
| 联机单表备份 | OPEN | 通常不需要 | 不支持单表增量 | 单个表的数据保护或迁移 |
| 联机表空间备份 | OPEN | 需要满足联机表空间备份的归档要求 | 支持 | 指定表空间的数据保护 |
正式生产环境应补充备份保留周期、异机存储、备份失败告警、定期恢复演练和恢复时间目标(RTO)/恢复点目标(RPO)。备份命令执行成功不等于恢复一定成功;只有完成可验证的恢复演练,才能更有把握地确认备份方案有效。
文章
阅读量
获赞
