说明

在达梦数据库中,使用DISQL工具,可以对数据库实施备份操作。

备份 – 操作:1

最简单的备份是:在DISQL中直接执行BACKUP DATABASE语句

如下:

可以看到,上面的备份成功执行完成了;

那么备份被存放在哪里了呢?
默认情况下备份的路径是在配置文件dm.ini中定义的,通过参数BAK_PATH指定;
如果没有设置,则默认使用配置文件dm.ini中的SYSTEM_PATH路径,默认的备份路径为SYSTEM_PATH指定的路径下的子目录bak。

先查看下备份所在的路径:

让我们去文件系统上看看刚刚的备份集:

可以看到备份数据了。

备份成功后:

  1. 会生成一个备份元数据文件:*.meta
  2. 一个或者多个备份片文件:*.bak
  3. 当备份数据超过限制大小的时候,会生成新的备份文件,新的备份文件名是初始文件名后面加文件编号

备份:语法详解

BACKUP DATABASE 的语法详解如下:

下面来具体的解读一下上述的每一个选项:

选项说明备注
FULL完全备份,可以不指定,因为默认就是完全备份
DDL_CLONE数据库克隆:
该参数只能在完全备份的时候使用,表示仅备份所有的元数据,而不备份数据;
例如:
只备份表的定义,而不备份表中的数据
限制:
表空间与表备份不支持该参数
INCREMENT增量备份,如果需要执行增量备份,则必须指定该参数
CUMULATIVE用于增量备份中,表示累积增量备份类型,如果不指定,则默认为差异备份类型
WITH BACKUPDIR用于增量备份中,表示基备份的搜索目录
最大长度为:256个字节
如果不指定,则默认在备份目录下搜索基备份
如果基备份不在默认的备份目录下,则增量备份的时候必须指定该参数
BASE ON用于增量备份中,指定基备份集目录
TO指定生成备份的名称
如果不指定,则系统随机生成,默认备份名称的格式为:DB_库名_备份类型_备份时间
其中,备份时间为开始备份的时候,系统的时间
BACKUPSET指定当前备份集生成路径
如果指定为相对路径,则在默认备份路径中生成备份集
如果不指定,则在默认备份路径中按照约定规则生成备份集目录。
库级备份默认备份目录生成规则:DB_库名_备份类型_备份时间
备份时间部分:年月日_时分秒_毫秒
如果库名超长,使得最终生成的备份目录名称大于128字节,那么,则会去掉库名字段,调整为:DB_备份类型_备份时间
DEVICE TYPE指定存储备份集的介质类型
支持:DISK(磁盘) 与 TAPE(磁带)
默认:DISK
PARAMS只有介质类型为TAPE的时候才有效
BACKUPINFO备份的描述信息,最大不能超过256个字节
MAXPIECESIZE最大备份片文件大小的上限
单位:M
最小:32M
最大:
32bit – 2G
64bit – 128G
IDENTIFIED BY指定备份的时候的加密密码
密码应该用双引号包起来,避免一些特殊字符通不过语法检测
密码的设置规则,遵循ini文件中的PWD_POLICY指定的口令策略
究竟是哪个INI配置文件呢?
WITH ENCRYPTION指定加密类型
0 – 不加密,不对备份文件进行加密处理
1 – 简单加密,对备份文件设置口令,但文件内容仍然以明文保存
2 – 完全数据加密,对备份文件进行完全的加密,备份文件以密文方式存储
默认:简单加密
ENCRYPT WITH加密算法
当不指定ENCRYPT WITH子句的时候,使用AES256_CFB加密算法
COMPRESSED取值范围:0 – 9
0 不压缩
1 1级压缩
9 9级压缩
压缩级别越高,压缩越慢,压缩比率越高
默认:
如果指定COMPRESSED,则默认1
如果没有指定,则默认0
WITHOUT LOG联机数据库备份是否备份日志
如果不使用,表示备份
如果使用,表示不备份
如果使用了该参数,则后面使用DMRMAN工具还原的时候,必须指定WITH ARCHIVEDIR参数
TRACE FILE指定生成的TRACE文件
启用TRACE但是不指定TRACE FILE的时候,默认会在DM数据库系统的log目录下生成TRACE FILE文件,格式为:DM_SBTTRACE_年月.log
如果使用的是相对路径,则会生成在执行的时候的同级目录下
不能指定为已存在的文件
不能指定为ASM文件
TRACE LEVEL取值:1 2
默认:1
1 表示不启用TRACE,这时候如果指定了TRACE FILE,会生成TRACE文件,但是不会写入TRACE信息
2 表示启用TRACE,并且写入TRACE相关内容
TASK THREAD备份过程中数据处理过程线程的个数
取值:0 – 64
默认:4
如果指定为0,则会调整为1
如果指定的数字超过了当前系统的主机的核数,则会调整为主机核数
线程数(TASK TRHEAD)*并行数(PARALLEL)不能超过512
PARALLEL指定并行备份的并行数和READ SIZE(拆分块大小)
并行数取值范围:0 – 128,默认:4,指定0或1都被认为是非并行备份;如果没有指定PARALLEL,则为非并行备份
并行备份不支持备份介质TAPE
拆分快大小,用户指定对于大数据量的数据文件并行备份的时候拆分快的大小,默认1GB,最小不能小于512M,当指定的拆分快大小小鱼512M的时候,系统会自动调整为512M
如果执行并行备份,但是没有指定拆分快大小,则会使用默认的拆分快大小进行拆分
当数据文件的大小小于拆分块的大小的时候,不执行拆分
如果数据文件的大小大于拆分快大小的时候,执行拆分
并行数不能大于拆分之后的总块数。

其他需要注意的:

只有在数据库处于归档模式的时候,才允许进行数据库的联机备份

如果备份库是DSC库,并且没有指定WITHOUT LOG,那么也需要配置REMOTE归档

当数据库位于MOUNT阶段,不允许执行数据库的备份

以DDL_CLONE的方式备份的备份集是不能够作为增量备份的基备份的,只能作为库级还原

在执行联机备份的过程中,如果报错归档不完整,则需要先执行生成检查点操作,才可以正常备份。

备份:生成备份语句的脚本

常见的备份选项包括以下:

  1. 设置联机数据库备份集路径
  2. 设置备份名
  3. 增量备份指定基备份目录
  4. 指定备份介质类型
  5. 添加备份描述
  6. 限制备份片大小
  7. 加密备份
  8. 备份压缩

BACKUP DATABASE语句的完整语法很长,为了方便的定义常用的选项,我写了一个Python脚本,可以自动的生成达梦的BACKUP DATABASE语句。

代码可以去我的Gitee上面查看:
https://gitee.com/leviathan-litan/Python-Database-Backup_and_Recovery-dameng

其中,用于描述备份行为的文件为:*.yml文件
如下所示:

来看看这个Python脚本的运行效果:

然后,再在Python代码中添加os.popen,就可以做成定时执行数据库备份的脚本了。


Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.

隐藏
变装