使用联机执行SQL语句进行备份还原
DM支持通过联机执行SQL语句方式对数据库执行备份还原操作。联机方式支持数据库、用户表空间、用户表和归档的备份以及用户表的还原。在进行联机库级备份、归档备份和表空间备份时,必须保证系统处于归档模式,否则联机备份不能进行。
对联机备份的支持与限制:
1) MPP环境仅允许库和归档备份,且各节点都会执行,生成相应的备份集,支持DDL CLONE;
2)DSC环境支持库备份、表空间备份和表备份,要求DSC环境的所有节点都处于OPEN状态;
3) MOUNT状态仅支持归档备份;
4) SUSPEND状态所有备份均不支持;
5) OPEN状态支持所有备份,支持DDL CLONE;
6) PRIMARY模式支持所有备份,支持DDL CLONE;
7) STANDBY模式仅支持库级、表空间级和归档备份,支持DDL CLONE;
8) DDL CLONE必须备份归档,不允许指定WITHOUT LOG。
联机还原:
仅支持表级还原,对联机还原的支持与限制:
1) MPP和分布式数据库不支持;
2) PRIMARY支持;
3) SUSPEND状态所有还原均不支持;
4) OPEN/NORMAL支持。
脱机备份:
脱机备份支持库级和归档备份。
1) MPP视同单机环境,仅当前节点执行备份操作;
2) 允许异常退出后备份,支持DDL_CLONE;
3) DSC支持库级备份,支持DDL_CLONE;当DSC环境下正常节点的CKPT_LSN小于故障节点的CKPT_LSN时,不支持脱机备份。
脱机还原:
脱机还原跟目标库所处的模式、状态以及集群环境(MPP和DSC)无关,允许库级、表空间级和归档还原。
在一般的应用场景中,常规性的数据库维护工作,即在不影响数据库正常运行的情况下,建议定期执行联机数据库备份,且完全备份和增量备份结合使用。执行两次完全备份的时间间隔可以尽量长一点,在两次完全备份之间执行一定数量的增量备份,比如,可以选择每周执行一次完全备份,一周内每天执行一次增量备份。为了尽量减少对数据库正常工作的影响,建议备份时间,选择在工作量较少的时间,比如深夜。
无论管理员选用哪一种备份方式,都要注意不应将备份产生的备份集与源备份库存放在同一磁盘或同一存储介质上,以避免存储介质发生硬件故障时,源备份库与备份集同时被毁坏。
备份与还原时,指定的备份集名称和目录名中最好不要包含中文、空格以及特殊字符,否则可能会因为字符处理及字符集问题导致一些不可预期的问题。
全库备份
disql工具中使用backup语句备份整个数据库,的备份集目录,默认的备份路径为dm.ini中BAK_PATH配置的路径,若未配置,则使用SYSTEM_PATH下的bak目录。这是最简单的数据库备份语句,如果要设置其他的备份选项需了解联机备份数据库的。
语法如下:
BACKUP DATABASE [[[FULL] [DDL_CLONE]]| INCREMENT [CUMULATIVE][WITH BACKUPDIR '<基备份搜索目录>'{,'<基备份搜索目录>'}]|[BASE ON BACKUPSET '<基备份目录>']][TO <备份名>][BACKUPSET '<备份集路径>']
[DEVICE TYPE <介质类型> [PARMS '<介质参数>']]
[BACKUPINFO '<备份描述>'] [MAXPIECESIZE <备份片限制大小>]
[IDENTIFIED BY <密码>|”<密码>” [WITH ENCRYPTION<TYPE>][ENCRYPT WITH <加密算法>]]
[COMPRESSED [LEVEL <压缩级别>]] [WITHOUT LOG]
[TRACE FILE '<TRACE文件名>'] [TRACE LEVEL <TRACE日志级别>]
[TASK THREAD <线程数>][PARALLEL [<并行数>] [READ SIZE <拆分块大小>]];
FULL:备份类型。
FULL表示完全备份,可不指定,默认为完全备份。
DDL_CLONE:数据库克隆。该参数只能用于完全备份中,表示仅拷贝所有的元数据不拷贝数据。如对于数据库中的表来说,只备份表的定义不备份表中数据。表空间和表备份不支持该参数。数据库克隆必须备份日志。
注意:DDL_CLONE会克隆HUGE表的元数据信息,之后库还原时会还原HUGE表的表定义。
INCREMENT:备份类型。
INCREMENT表示增量备份,若要执行增量备份必须指定该参数。
CUMULATIVE:用于增量备份中,指明为累积增量备份类型,若不指定则缺省为差异增量备份类型。
WITH BACKUPDIR:用于增量备份中,指定基备份的搜索目录,最大长度为256个字节。若不指定,自动在默认备份目录和当前备份目录下搜索基备份。如果基备份不在默认的备份目录或当前备份目录下,增量备份必须指定该参数。
BASE ONBACKUPSET:用于增量备份中,指定基备份集路径。
注意:
增量备份时,DM不会在默认备份目录或当前备份目录的子目录中搜索基备份集,因此若基备份集在默认备份目录或当前备份目录的子目录中,则需要指定基备份的搜索目录或直接指定基备份集路径,否则将无法搜索到相应的基备份集,备份操作将会失败。
TO:指定生成备份名称。若未指定,系统随机生成,默认备份名格式为:DB_库名_备份类型_备份时间。其中,备份时间为开始备份时的系统时间。
BACKUPSET:指定当前备份集生成路径。若指定为相对路径,则在默认备份路径中生成备份集。若不指定,则在默认备份路径中按约定规则,生成默认备份集目录。库级备份默认备份集目录名生成规则:DB_库名_备份类型_备份时间,如DB_DAMENG_FULL_20180518_143057_123456。表明该备份集为2018年5月18日14时30分57秒123456毫秒时生成的库名为DAMENG的数据库完全备份集。若库名超长使备份集目录完整名称长度大于128个字节将直接报错路径过长。
DEVICE TYPE:指存储备份集的介质类型,支持DISK和TAPE,默认DISK,详见1.3介质管理层。
PARMS:只对介质类型为TAPE时有效,详见1.3介质管理层。
BACKUPINFO:备份的描述信息。最大不超过256个字节。
MAXPIECESIZE:最大备份片文件大小上限,以M为单位,最小32M,32位系统最大2G,64位系统最大128G。
IDENTIFIED BY:指定备份时的加密密码。密码可以用双引号括起来,这样可以避免一些特殊字符通不过语法检测。密码的设置规则遵行ini参数pwd_policy指定的口令策略。
WITH ENCRYPTION:指定加密类型,0表示不加密,不对备份文件进行加密处理;1表示简单加密,对备份文件设置口令,但文件内容仍以明文方式存储;2表示完全数据加密,对备份文件进行完全的加密,备份文件以密文方式存储。当不指定WITHENCRYPTION子句时,采用简单加密。
ENCRYPT WITH:指定加密算法。当不指定ENCRYPT WITH子句时,使用AES256_CFB加密算法。
COMPRESSED:是否对备份数据进行压缩处理。LEVEL表示压缩等级,取值范围0~9:0表示不压缩;1表示1级压缩;9表示9级压缩。压缩级别越高,压缩速度越慢,但压缩比越高。若指定COMPRESSED,但未指定LEVEL,则压缩等级默认1;若未指定COMPRESSED,则默认不进行压缩处理。
WITHOUT LOG:联机数据库备份是否备份日志。如果使用,则表示不备份,否则表示备份。如果使用了WITHOUT LOG参数,则使用DMRMAN工具还原时,必须指定WITH ARCHIVEDIR参数。
TRACE FILE:指定生成的TRACE文件。启用TRACE,但不指定TRACE FILE时,默认在DM数据库系统的log目录下生成DM_SBTTRACE_年月.log文件;若使用相对路径,则生成在执行码同级目录下;若用户指定TRACE FILE,则指定的文件不能为已经存在的文件,否则报错。TRACE FILE不可以为ASM文件。
TRACE LEVEL:是否启用TRACE。有效值1、2,默认为1表示不启用TRACE,此时若指定了TRACE FILE,会生成TRACE文件,但不写入TRACE信息;为2启用TRACE并在TRACE文件中写入TRACE相关内容。
PARALLEL:指定并行备份的并行数和拆分块大小。并行数取值范围0~128。若不指定并行数,则默认为4,若指定为0或者1均认为非并行备份。若未指定关键字PARALLEL,则认为非并行备份。并行备份不支持存在介质为TAPE的备份。线程数(TASK THREAD)*并行数(PARALLEL)不得超过512。READ SIZE指定并行备份大数据量的数据文件时的拆分块大小,默认为1GB,最小为512MB,当指定的拆分块大小小于512MB时,系统会自动调整为512MB。若指定并行备份,但未指定拆分块大小,则直接使用默认拆分块大小进行拆分。当数据文件的大小小于拆分块大小时,不执行拆分;当数据文件的大小大于拆分块大小时,执行拆分。并行数不能大于拆分之后的总块数。
完全备份
前提条件:
1.配置归档
2.数据库处于open状态
[dmdba@DMTEST ~]$ disql /nolog disql V8 SQL> conn SYSDBA/manager998 服务器[LOCALHOST:5236]:处于普通打开状态 登录使用时间 : 4.542(ms) SQL> backup database full backupset 'db_bak_full_0519'; #使用默认的备份路径 操作已执行 已用时间: 00:00:03.194. 执行号:600. SQL> |
SQL> backup database full backupset ‘/dbbak/db_full_bak’; #参数full可省略,不指定备份类型会默认指定备份类型为完全备份 |
SQL> backup database full backupset '/dbbak/db_bak_full_0519'; #手动指定备份集路径 操作已执行 已用时间: 00:00:01.544. 执行号:601. SQL> |
SQL> backup database full to zhoutao_full_bak backupset '/dbbak/db_full_bak'; #to指定备份名 操作已执行 已用时间: 00:00:01.692. 执行号:602. SQL> SQL> backup database full backupset '/dbbak/db_full_bak' backupinfo ‘完全备份’; #为备份集添加描述信息“完全备份”,如果不指定该参数,备份集的描述信息为空 SQL> backup database full backupset '/dbbak/db_full_bak' maxpiecesize 300; #限制备份片的大小 SQL> backup database full backupset '/dbbak/db_full_bak' compressed level 3; #压缩 SQL> backup database full backupset '/dbbak/db_full_bak' parallel 8; #并行备份 |
增量备份
SQL>backup database increment with backupdir ‘/dbbak’ backupset ‘/dbbak/dbbak_inc’ |
备份语句中的INCREMENT参数不可省略,该参数用来指定执行的备份类型为增量备份。若要创建累积增量备份,还需要指定CUMULATIVE参数,否则缺省为差异增量备份。WITH BACKUPDIR参数用来指定基备份集的搜索目录,如果基备份集不在默认备份目录或当前备份目录则该参数不可省略。
表空间备份
注意:表空间的备份也有完全备份和增量备份
完全备份
表空间必须处于open状态,只支表空间联机备份,mount和suspend状态下无法执行表空间备份
SQL>backup tablespace apps full backupset ‘apps_full_bak_01’; SQL> backup tablespace OAISNEW full backupset '/dbbak/OAISNEW_full_bak_01' compressed level 4; |
备份语句中的FULL参数可以省略,不指定备份类型会默认指定备份类型为完全备份。
语法如下:
BACKUP TABLESPACE <表空间名> [FULL | INCREMENT [CUMULATIVE][WITH BACKUPDIR '<基备份搜索目录>'{,'<基备份搜索目录>'}]| [BASE ON BACKUPSET '<基备份集目录>']][TO <备份名>] [BACKUPSET '<备份集路径>']
[DEVICE TYPE <介质类型> [PARMS '<介质参数>']]
[BACKUPINFO '<备份描述>'] [MAXPIECESIZE <备份片限制大小>]
[IDENTIFIED BY <密码>|”<密码>” [WITH ENCRYPTION<TYPE>][ENCRYPT WITH <加密算法>]] [COMPRESSED [LEVEL <压缩级别>]]
[TRACE FILE '<TRACE文件名>'] [TRACE LEVEL <TRACE日志级别>]
[TASK THREAD <线程数>][PARALLEL [<并行数>][READ SIZE <拆分块大小>]];
注意:
增量备份时,DM不会在默认备份目录或当前备份目录的子目录中搜索基备份集,因此若基备份集在默认备份目录或当前备份目录的子目录中,则需要指定基备份的搜索目录或直接指定基备份集路径,否则将无法搜索到相应的基备份集,备份操作将会失败。
增量备份
数据库需要配置归档
数据库处于open状态
SQL>backup tablespace apps increment backupset ‘apps_inc_bak_01’; |
SQL>backup tablespace apps increment base on backupset ‘apps_full_bak_01’ backupset ‘apps_inc_bak_02’; |
上述示例中,增量备份apps_inc_bak_02若不指定备份集apps_full_bak_01作为基备份,那么默认会使用最近一次的备份集apps_inc_bak_01作为基备份。
表备份
可以不配置归档
SQL> backup table apps backupset '/dmbak/apps_bak_01' compressed level 4; |
语法如下:
BACKUPTABLE <表名>
[TO <备份名>] [BACKUPSET '<备份集路径>'] [DEVICE TYPE <介质类型> [PARMS '<介质参数>']]
[BACKUPINFO '<备份描述>']
[MAXPIECESIZE <备份片限制大小>]
[IDENTIFIED BY <密码>|”<密码>” [WITH ENCRYPTION<TYPE>][ENCRYPT WITH <加密算法>]]
[COMPRESSED [LEVEL <压缩级别>]]
[TRACE FILE '<TRACE文件名>'] [TRACE LEVEL <TRACE日志级别>];
更多内容请查看达梦官方网站:https://eco.dameng.com