DM8:达梦数据库定时自动全库备份与删除备份
环境介绍
- 备份很重要,建议备份的文件和数据库分开磁盘放置,避免放在一起时磁盘损坏导致数据库和备份一起丢失;
- 请根据数据库占用磁盘空间规划备份空间,备份保留周期;
- 可选择 全库备份 或 全库备份+增量备份;
- 备份时建议勾选压缩选项,默认压缩级别 1,节省备份磁盘空间;
1 备份条件
- 开启归档
- 备份前的准备工作:备份之前需要先开归档!!!(归档配置点我)
- 开归档/全量备份/增量备份/删除备份 (精简)
-- 开归档
ALTER DATABASE MOUNT;
ALTER DATABASE ARCHIVELOG;
ALTER DATABASE ADD ARCHIVELOG 'DEST=/opt/dmdba/dmdata/dmarch,TYPE=LOCAL,FILE_SIZE=2048,SPACE_LIMIT=204800';
ALTER DATABASE OPEN;
CHECKPOINT(100);
backup database compressed;
--开启代理环境
SP_INIT_JOB_SYS(1);
-- 周六晚上9点 备份全量
call SP_CREATE_JOB('db_bak',1,0,'',0,0,'',0,'');
call SP_JOB_CONFIG_START('db_bak');
call SP_ADD_JOB_STEP('db_bak', 'db_bak', 6, '01000000', 1, 1, 0, 0, NULL, 0);
call SP_ADD_JOB_SCHEDULE('db_bak', 'db_bak', 1, 2, 1, 64, 0, '21:36:44', NULL, '2021-12-08 21:36:44', NULL, '');
call SP_JOB_CONFIG_COMMIT('db_bak');
--23点累计增量备份 周日,周一,周二,周三,周四,周五
--注意修改全量备份路径 /opt/dmdba/dmdata/DAMENG/bak
call SP_CREATE_JOB('db_bak_add',1,0,'',0,0,'',0,'');
call SP_JOB_CONFIG_START('db_bak_add');
call SP_ADD_JOB_STEP('db_bak_add', 'db_bak_add', 6, '41000000/opt/dmdba/dmdata/DAMENG/bak', 1, 1, 0, 0, NULL, 0);
call SP_ADD_JOB_SCHEDULE('db_bak_add', 'db_bak_add', 1, 2, 1, 63, 0, '23:16:38', NULL, '2024-12-31 17:16:38', NULL, '');
call SP_JOB_CONFIG_COMMIT('db_bak_add');
-- 删除31天前的备份
call SP_CREATE_JOB('del_dbbak',1,0,'',0,0,'',0,'');
call SP_JOB_CONFIG_START('del_dbbak');
call SP_ADD_JOB_STEP('del_dbbak', 'del_dbbak', 0, 'CALL SP_DB_BAKSET_REMOVE_BATCH(''DISK'', NOW()-31);', 1, 1, 0, 0, NULL, 0);
call SP_ADD_JOB_SCHEDULE('del_dbbak', 'del_dbbak', 1, 1, 1, 0, 0, '22:04:40', NULL, '2021-12-08 22:04:40', NULL, '');
call SP_JOB_CONFIG_COMMIT('del_dbbak');
- 开归档/全量备份/删除备份 (精简)
-- 开归档
ALTER DATABASE MOUNT;
ALTER DATABASE ARCHIVELOG;
ALTER DATABASE ADD ARCHIVELOG 'DEST=/opt/dmdba/dmdata/dmarch,TYPE=LOCAL,FILE_SIZE=2048,SPACE_LIMIT=204800';
ALTER DATABASE OPEN;
CHECKPOINT(100);
--开启代理环境
SP_INIT_JOB_SYS(1);
--全量备份
call SP_CREATE_JOB('db_bak',1,0,'',0,0,'',0,'');
call SP_JOB_CONFIG_START('db_bak');
call SP_ADD_JOB_STEP('db_bak', 'db_bak', 6, '01000000', 1, 1, 0, 0, NULL, 0);
call SP_ADD_JOB_SCHEDULE('db_bak', 'db_bak', 1, 1, 1, 0, 0, '01:36:44', NULL, '2021-12-08 21:36:44', NULL, '');
call SP_JOB_CONFIG_COMMIT('db_bak');
-- 删除备份
call SP_CREATE_JOB('del_dbbak',1,0,'',0,0,'',0,'');
call SP_JOB_CONFIG_START('del_dbbak');
call SP_ADD_JOB_STEP('del_dbbak', 'del_dbbak', 0, 'CALL SP_DB_BAKSET_REMOVE_BATCH(''DISK'', NOW()-8);', 1, 1, 0, 0, NULL, 0);
call SP_ADD_JOB_SCHEDULE('del_dbbak', 'del_dbbak', 1, 1, 1, 0, 0, '22:04:40', NULL, '2021-12-08 22:04:40', NULL, '');
call SP_JOB_CONFIG_COMMIT('del_dbbak');
2 测试手动备份是否成功
-
在库备份 右键,新建备份
-
修改数据库默认的备份路径,修改后重启数据库服务生效
-
在DDL栏得到执行的SQL
backup database full to "DB_DAMENG5240_FULL_2021_12_08_21_20_27" backupset 'DB_DAMENG5240_FULL_2021_12_08_21_20_27' compressed;
2.1 报错 -718
- 报错啦:
错误号:-718
错误消息:收集到的归档日志不连续
2.2 错误解决方法
方法1: 在数据库执行SQL
CHECKPOINT(100);
方法2:重启 数据库实例服务,再继续备份
backup database full to "DB_DAMENG5240_FULL_2021_12_08_21_20_27" backupset 'DB_DAMENG5240_FULL_2021_12_08_21_20_27' compressed;
3 创建代理环境
- 创建代理环境:SP_INIT_JOB_SYS(1);–与图形化界面效果一样
删除代理环境:SP_INIT_JOB_SYS(0); --谨慎操作
4 配置作业
4.1 新建定时自动备份作业:
- 定时自动备份数据库选择步骤类型
- 提示
- 备份压缩:默认不压缩。选择压缩等级,则可以设置压缩级别 1~9:1 表示 1 级压缩;9 表示 9 级压缩。压缩级别越高,压缩速度越慢,但压缩比越高。
- 配置好的作业步骤
- 定时自动备份数据库配置作业调度
- 调度配置完成后如图
- 通过一系列的配置,最终的执行脚本
SP_INIT_JOB_SYS(1);
call SP_CREATE_JOB('db_bak',1,0,'',0,0,'',0,'');
call SP_JOB_CONFIG_START('db_bak');
call SP_ADD_JOB_STEP('db_bak', 'db_bak', 6, '01000000', 1, 1, 0, 0, NULL, 0);
call SP_ADD_JOB_SCHEDULE('db_bak', 'db_bak', 1, 1, 1, 0, 0, '01:36:44', NULL, '2021-12-08 21:36:44', NULL, '');
call SP_JOB_CONFIG_COMMIT('db_bak');
4.2 配置删除历史备份作业:
将 sql 放到作业里即可,末尾的 -8 意思是删除8天之前的历史备份,具体保存多久的历史备份,根据磁盘剩余空间大小,与项目现场的要求配置
CALL SP_DB_BAKSET_REMOVE_BATCH('DISK', NOW()-8);
- 定时自动删除历史备份–配置步骤类型与脚本
- 定时自动删除历史备份–配置调度策略
- 定时自动删除历史备份通过一系列配置,最终得到以下脚本
call SP_CREATE_JOB('del_dbbak',1,0,'',0,0,'',0,'');
call SP_JOB_CONFIG_START('del_dbbak');
call SP_ADD_JOB_STEP('del_dbbak', 'del_dbbak', 0, 'CALL SP_DB_BAKSET_REMOVE_BATCH(''DISK'', NOW()-8);', 1, 1, 0, 0, NULL, 0);
call SP_ADD_JOB_SCHEDULE('del_dbbak', 'del_dbbak', 1, 1, 1, 0, 0, '22:04:40', NULL, '2021-12-08 22:04:40', NULL, '');
call SP_JOB_CONFIG_COMMIT('del_dbbak');
定时自动备份数据库完成了
5 备份查询相关视图
- 备份管理相关动态视图总结如下
序号 | 视图名 | 介绍 |
---|---|---|
5.1 | V$BACKUPSET | 显示备份集基本信息。 |
5.2 | V$BACKUPSET_DBINFO | 显示备份集的数据库相关信息。 |
5.3 | V$BACKUPSET_DBF | 显示备份集中数据文件的相关信息。 |
5.4 | V$BACKUPSET_ARCH | 显示备份集的归档信息。 |
5.5 | V$BACKUPSET_BKP | 显示备份集的备份片信息。 |
5.6 | V$BACKUPSET_SEARCH_DIRS | 显示备份集搜索目录。 |
5.7 | V$BACKUP_HISTORY | 显示最近 100 条备份监控信息。 |
5.8 | V$BACKUPSET_SUBS | 显示并行备份中生成的子备份集信息。 |
5.9 | V$BACKUP_MONITOR | 显示当前备份任务实时监控信息。 |
5.10 | V$BACKUPSET_TABLE | 显示表备份集中备份表信息。 |
5.11 | V$BACKUP_FILES | 显示当前备份任务待备份数据文件列表。 |
列举部分视图查询结果
5.1 V$BACKUPSET查询结果:
SQL> SELECT * FROM V$BACKUPSET;
行号 DEVICE_TYPE BACKUP_ID PARENT_ID BACKUP_NAME BACKUP_PATH TYPE LEVEL RANGE#
---------- ----------- ----------- ----------- ----------- ---------------------------- ----------- ----------- -----------
OBJECT_NAME OBJECT_ID BASE_NAME BACKUP_TIME DESC# ENCRYPT_TYPE COMPRESS_LEVEL WITHOUT_LOG
----------- ----------- --------- -------------------------- ----- ------------ -------------- -----------
USE_PWR PKG_SIZE BEGIN_LSN END_LSN BKP_NUM DBF_NUM PARALLEL_NUM BAKSET_TYPE
----------- ----------- -------------------- -------------------- ----------- ----------- ------------ -----------
MPP_FLAG MIN_TRX_START_LSN MIN_EXEC_VER CUMULATIVE MIN_DCT_VER DDL_CLONE
----------- -------------------- ------------ ----------- ----------- -----------
1 DISK 170370612 -1 DBBAK_73 /home/dmdba/dmdata/bak/DB_73 0 0 1
dsc -1 2023-03-20 10:14:07.327960 0 0 0
0 33554432 6703189 6704494 2 5 1 0
0 0 134283521 0 4 0
已用时间: 416.830(毫秒). 执行号:1565612.
SQL>
5.2 V$BACKUPSET_DBINFO 查询结果
SQL> SELECT * FROM V$BACKUPSET_DBINFO;
行号 DEVICE_TYPE BACKUP_ID BACKUP_NAME BACKUP_PATH EXTENT_SIZE PAGE_SIZE LOG_PAGE_SIZE CASE_SENSITVE
---------- ----------- ----------- ----------- ---------------------------- ----------- ----------- ------------- -------------
DB_MAGIC PMNT_MAGIC UNICODE_FLAG DB_VERSION GLOBAL_VERSION ENABLE_POLICY ARCH_FLAG DSC_NODE PAGE_CHECK
----------- ----------- ------------ ----------- -------------- ------------- ----------- ----------- -----------
RLOG_ENCRYPT EX_CIPHER_NAME EX_CIPHER_ID EX_HASH_NAME EX_HASH_ID LENGTH_IN_CHAR USE_NEW_HASH BLANK_PAD_MODE
------------ -------------- ------------ ------------ ----------- -------------- ------------ --------------
SRC_DB_MAGIC
------------
1 DISK 170370612 DBBAK_73 /home/dmdba/dmdata/bak/DB_73 32 32768 512 0
619384466 1082198939 1 458764 V8 0 1 2 0
0 0 0 0 1 0
619384466
已用时间: 247.530(毫秒). 执行号:1565613.
SQL>
5.3 V$BACKUPSET_DBF 查询结果
SQL> SELECT * FROM V$BACKUPSET_DBF;
行号 DEVICE_TYPE BACKUP_ID BACKUPNAME BACKUPPATH FILE_SEQ TS_ID FILE_ID TS_STATE
---------- ----------- ----------- ---------- ---------------------------- ----------- ----------- ----------- -----------
TS_NAME FILE_NAME MIRROR_PATH FILE_LEN MAX_LIMIT_SIZE AUTO_EXTEND NEXT_SIZE
------- --------------------------- ----------- -------------------- -------------- ----------- -----------
START_BKP_SEQ START_BKP_OFF END_BKP_SEQ END_BKP_OFF
------------- -------------------- ----------- --------------------
1 DISK 170370612 DBBAK_73 /home/dmdba/dmdata/bak/DB_73 1 0 0 0
SYSTEM +DMDATA/data/dsc/system.dbf 161480704 0 1 0
NULL NULL NULL NULL
行号 DEVICE_TYPE BACKUP_ID BACKUPNAME BACKUPPATH FILE_SEQ TS_ID FILE_ID TS_STATE
---------- ----------- ----------- ---------- ---------------------------- ----------- ----------- ----------- -----------
TS_NAME FILE_NAME MIRROR_PATH FILE_LEN MAX_LIMIT_SIZE AUTO_EXTEND NEXT_SIZE
------- --------------------------- ----------- -------------------- -------------- ----------- -----------
START_BKP_SEQ START_BKP_OFF END_BKP_SEQ END_BKP_OFF
------------- -------------------- ----------- --------------------
2 DISK 170370612 DBBAK_73 /home/dmdba/dmdata/bak/DB_73 2 1 0 0
ROLL +DMDATA/data/dsc/roll.dbf 249561088 0 1 0
NULL NULL NULL NULL
行号 DEVICE_TYPE BACKUP_ID BACKUPNAME BACKUPPATH FILE_SEQ TS_ID FILE_ID TS_STATE
---------- ----------- ----------- ---------- ---------------------------- ----------- ----------- ----------- -----------
TS_NAME FILE_NAME MIRROR_PATH FILE_LEN MAX_LIMIT_SIZE AUTO_EXTEND NEXT_SIZE
------- --------------------------- ----------- -------------------- -------------- ----------- -----------
START_BKP_SEQ START_BKP_OFF END_BKP_SEQ END_BKP_OFF
------------- -------------------- ----------- --------------------
3 DISK 170370612 DBBAK_73 /home/dmdba/dmdata/bak/DB_73 3 4 0 0
MAIN +DMDATA/data/dsc/main.dbf 134217728 0 1 0
NULL NULL NULL NULL
已用时间: 284.245(毫秒). 执行号:1565614.
SQL>
5.4 V$BACKUPSET_ARCH 查询结果
SQL> SELECT * FROM V$BACKUPSET_ARCH;
行号 DEVICE_TYPE BACKUP_ID BACKUPNAME BACKUPPATH FILE_SEQ FILE_NAME FILE_LEN
---------- ----------- ----------- ---------- ---------------------------- ----------- --------- --------------------
DSC_SEQNO BEGIN_SEQNO BEGIN_LSN END_SEQNO END_LSN
----------- -------------------- -------------------- -------------------- --------------------
CREATE_TIME CLOSE_TIME START_BKP_SEQ START_BKP_OFF END_BKP_SEQ END_BKP_OFF
----------------------- ----------------------- ------------- -------------------- ----------- --------------------
1 DISK 170370612 DBBAK_73 /home/dmdba/dmdata/bak/DB_73 4 162816
0 1142892 6703189 1143109 6704494
0-00-00 00:00:00.000000 0-00-00 00:00:00.000000 NULL NULL NULL NULL
行号 DEVICE_TYPE BACKUP_ID BACKUPNAME BACKUPPATH FILE_SEQ FILE_NAME FILE_LEN
---------- ----------- ----------- ---------- ---------------------------- ----------- --------- --------------------
DSC_SEQNO BEGIN_SEQNO BEGIN_LSN END_SEQNO END_LSN
----------- -------------------- -------------------- -------------------- --------------------
CREATE_TIME CLOSE_TIME START_BKP_SEQ START_BKP_OFF END_BKP_SEQ END_BKP_OFF
----------------------- ----------------------- ------------- -------------------- ----------- --------------------
2 DISK 170370612 DBBAK_73 /home/dmdba/dmdata/bak/DB_73 5 29184
1 446475 6704248 446514 6704493
0-00-00 00:00:00.000000 0-00-00 00:00:00.000000 NULL NULL NULL NULL
已用时间: 225.422(毫秒). 执行号:1565615.
SQL>
5.5 V$BACKUPSET_BKP 查询结果
SQL> SELECT * FROM V$BACKUPSET_BKP;
行号 DEVICE_TYPE BACKUP_ID BACKUPNAME BACKUPPATH BKP_NTH FILE_NAME BKP_LEN
---------- ----------- ----------- ---------- ---------------------------- ----------- ----------- --------------------
1 DISK 170370612 DBBAK_73 /home/dmdba/dmdata/bak/DB_73 0 DB_73.bak 166274048
2 DISK 170370612 DBBAK_73 /home/dmdba/dmdata/bak/DB_73 1 DB_73_1.bak 197120
已用时间: 219.501(毫秒). 执行号:1565616.
SQL>
5.6 V$BACKUPSET_SEARCH_DIRS 查询结果
SQL> SELECT * FROM V$BACKUPSET_SEARCH_DIRS;
行号 DIR
---------- ----------------------
1 /home/dmdba/dmdata/bak
已用时间: 0.215(毫秒). 执行号:1565617.
SQL>
5.7 V$BACKUP_HISTORY 查询结果
SQL> SELECT * FROM V$BACKUP_HISTORY;
行号 PATH START_TIME END_TIME READ_SIZE
---------- ---------------------------- -------------------------- -------------------------- --------------------
WRITE_SIZE AVG_READ MIN_READ MAX_READ AVG_WRITE MIN_WRITE MAX_WRITE
-------------------- -------- -------- -------- --------- --------- ---------
1 /home/dmdba/dmdata/bak/DB_73 2023-03-20 10:13:57.000000 2023-03-20 10:14:07.000000 295698432
166456832 29.75 0 117.07 16.75 0 62.99
已用时间: 23.909(毫秒). 执行号:1565618.
SQL>
6 使用备份文件还原数据库
- 建议还原在相同CPU架构,相同操作系统OS,相同数据库版本(小版本号不要相差太大,最好一致)的环境