YashanDB数据库备份与恢复
1、创建备份目录存储备份元数据信息
catalog文件文件包含记录备份集元数据信息的二进制文件,不可手动删除。若发生删除或者更换catalog路径等异常操作,可能导致无法使用yasrman恢复其包含的备份集、无法查看备份集信息等异常情况。 catalog并不绑定某个具体的数据库,但是建议为不同的数据库创建独立的catalog文件。 yasrman不支持catalog的备份和恢复,用户可以手动拷贝catalog目录进行备份,拷贝catalog时需要保证yasrman没有工作。 catalog备份集元数据信息与DB的系统表元数据信息不会自动同步,若发生过catalog迁移、重建等操作可能出现备份指定tag已存在报错。
–创建catalog
yasrman sys/pmg_123986@127.0.0.1:1688 -c “create catalog” -D /data/dbbackup
2、创建Level 0级别备份
–Level 0备份
yasrman sys/pmg_123985@127.0.0.1:1688 -c “backup database incremental level 0 format ‘/data/dbbackup/202407261708’ tag ‘202407261708’ parallelism 4 section size 1024M” -D /data/dbbackup
3、登陆数据库执行以下操作
create table t_1 as select * from dba_objects;
create table t_2 as select * from dba_objects;
alter system switch logfile;
alter system switch logfile;
alter system switch logfile;
4、执行Level 1差异增量备份
–Level 1 增量备份
yasrman sys/pmg_123985@127.0.0.1:1688 -c “backup database incremental level 1 format ‘/data/dbbackup/202407261710’ tag ‘2024072616710’ parallelism 4 section size 1024M” -D /data/dbbackup
5、登陆数据库执行以下操作
create table t_3 as select * from dba_objects;
alter system switch logfile;
alter system switch logfile;
alter system switch logfile;
6、执行Level 1 差异增量备份
yasrman sys/pmg_123985@127.0.0.1:1688 -c “backup database incremental level 1 format ‘/data/dbbackup/202407261711’ tag ‘202407261711’ parallelism 4 section size 1024M” -D /data/dbbackup
7、登陆数据库执行以下操作
create table t_4 as select * from dba_objects;
alter session set date_format=‘yyyy-mm-dd hh24:mi:ss’;
select now() from dual; --2024-07-26 17:12:36
drop table t_2;
alter system switch logfile;
alter system switch logfile;
alter system switch logfile;
8、恢复需求
将数据库恢复到删除t_2表之前的时间点,即将数据库恢复到2024-07-26 17:12:36时刻,将删除t_2表恢复出来。
9、查看备份集
[yashan@ydb03 dbbackup]$ yasrman sys/pmg_123985@127.0.0.1:1688 -c “list backup” -D /data/dbbackup
Group: type DB, tag: 202407261708, format: /data/dbbackup/202407261645, connect url: 127.0.0.1:1688, nodeCount: 1, distribution: FALSE, isClient: FALSE, offset: 0
backup path: /data/dbbackup/202407261645
instance: 1, archive range sequence: 18-18
scn: 590426469873250304-590430369917407232
Group: type DB, tag: 2024072616710, format: /data/dbbackup/202407261710, connect url: 127.0.0.1:1688, nodeCount: 1, distribution: FALSE, isClient: FALSE, offset: 12288
backup path: /data/dbbackup/202407261710
instance: 1, archive range sequence: 22-22
scn: 590430854627008512-590430854627008512
Group: type DB, tag: 202407261711, format: /data/dbbackup/202407261711, connect url: 127.0.0.1:1688, nodeCount: 1, distribution: FALSE, isClient: FALSE, offset: 24576
backup path: /data/dbbackup/202407261711
instance: 1, archive range sequence: 26-26
scn: 590431311327662080-590431311327662080
list backup显示的备份集中,无法区别出全量备份和增量及差异增量备份和累计增量备份。建议增加相关项以区分。通过DBA_BACKUP_SET视图可以区分。
10、恢复步骤
10.1 将数据库启动到nomount状态
在执行数据库恢复之前需要将数据库启动到nomount状态,且要删除数据文件和redo日志。
yasboot cluster clean -c yasdb -r -f -d
10.2 指定增量备份执行不完全恢复
SQL> restore database from ‘/data/dbbackup/202407261711’ parallelism 4;
Succeed.
SQL> recover database until time to_date(‘2024-07-26 17:12:36’,‘YYYY-MM-DD HH24:MI:SS’);
Succeed.
SQL> alter database open resetlogs;
Succeed.
SQL> select table_name from user_tables where table_name like ‘T%’;
TABLE_NAME
T_4
T_3
T_2
T_1
TYPEBODY$
TYPE$
TRIGGERDEP$
TRIGGERCOL$
TRIGGER$
TOID$
TABXFMR$
TABSORT$
TABPART$
TABLE_PRIVILEGE_MAP$
TABCHUNK$
TAB$
T_G_TMP
17 rows fetched.
SQL> select count(1) from t_2;
COUNT(1)
1481
注意:此处指定的为最近一次的增量备份,在恢复的时候会自动寻找最近的全量备份开始恢复,并应用中间的增量备份。
至此,数据库不完全恢复完成,t_2表成功恢复。
10.3 执定全量备份进行不完全恢复
SQL> restore database from ‘/data/dbbackup/202407261645’ parallelism 4;
Succeed.
SQL> recover database until time to_date(‘2024-07-26 17:12:36’,‘YYYY-MM-DD HH24:MI:SS’);
Succeed.
SQL> alter database open resetlogs;
Succeed.
SQL> select table_name from user_tables where table_name like ‘T%’;
TABLE_NAME
T_4
T_3
T_2
T_1
TYPEBODY$
TYPE$
TRIGGERDEP$
TRIGGERCOL$
TRIGGER$
TOID$
TABXFMR
TABPART$
TABLE_PRIVILEGE_MAP$
TABCHUNK$
TAB$
T_G_TMP
17 rows fetched.
注意:此处指定的为最近的一个全量备份,在恢复过程中会自动应用全量备份后的增量备份。




