在达梦数据库中,差异增量备份和累积增量备份有什么区别?它们的还原结果一样吗?

【问题描述】

在达梦数据库中,差异增量备份和累积增量备份有什么区别?它们的还原结果一样吗?

【问题原因】

差异增量备份和累积增量备份的区别:

差异增量备份的基备份集可以是一个完全备份集,也可以是一个增量备份集。会备份自上一次增量备份集或者完全备份集以来所有发生变化的数据块。

累积增量备份的基备份只能是一个完全备份集,会备份自上次完全备份集以来发生变化的数据块。相对数据量较大,占用空间多,但是恢复时间相对较少。

【问题解决】

以下通过实际操作验证两者的还原结果。

  1. 备份数据
---创建 tab1 表,并插入一条数据
create table tab1(a int,b varchar);
insert into tab1(a,b) values(1,'a');
commit;

---联机执行一次完全备份
backup database full backupset '/dmdata/dmbak/db_full_bak_01';

---在tab1表中再插入一条数据:
insert into tab1(a,b) values(2,'b');
commit;

---联机执行第一次差异增量备份
backup database increment with backupdir '/dmdata/dmbak' backupset '/dmdata/dmbak/db_increment_bak_01';

---联机执行第一次累计增量备份
backup database increment cumulative with backupdir '/dmdata/dmbak' backupset '/dmdata/dmbak/db_increment_cumulative_bak_01';

---在tab1表中再插入一条数据:
insert into tab1(a,b) values(3,'c');
commit;

---联机执行第二次差异增量备份
backup database increment with backupdir '/dmdata/dmbak' backupset '/dmdata/dmbak/db_increment_bak_02';

---联机执行第二次累计增量备份
backup database increment cumulative with backupdir '/dmdata/dmbak' backupset '/dmdata/dmbak/db_increment_cumulative_bak_02';
  1. 还原差异增量备份

(1)使用第一次差异增量备份还原数据库:

---还原
restore database '/dmdata/dmdb/DAMENG/dm.ini' from backupset '/dmdata/dmbak/db_increment_bak_01';

---恢复
recover database '/dmdata/dmdb/DAMENG/dm.ini' from backupset '/dmdata/dmbak/db_increment_bak_01';

---更新
recover database '/dmdata/dmdb/DAMENG/dm.ini' update db_magic;

此时,tab1 表中的数据为插入的第一条和第二条数据。

(2)使用第二次差异增量备份:

---还原
restore database '/dmdata/dmdb/DAMENG/dm.ini' from backupset '/dmdata/dmbak/db_increment_bak_02';

---恢复
recover database '/dmdata/dmdb/DAMENG/dm.ini' from backupset '/dmdata/dmbak/db_increment_bak_02';

---更新
recover database '/dmdata/dmdb/DAMENG/dm.ini' update db_magic;

此时,tab1 表中的数据为插入的全部三条数据。

  1. 还原累计增量备份

(1)使用第一次累积增量备份:

---还原
restore database '/dmdata/dmdb/DAMENG/dm.ini' from backupset '/dmdata/dmbak/db_increment_cumulative_bak_01';

---恢复
recover database '/dmdata/dmdb/DAMENG/dm.ini' from backupset '/dmdata/dmbak/db_increment_cumulative_bak_01';

---更新
recover database '/dmdata/dmdb/DAMENG/dm.ini' update db_magic;

此时,tab1 表中的数据为插入的第一条和第二条数据。

(2)使用第二次累积增量备份:

---还原
restore database '/dmdata/dmdb/DAMENG/dm.ini' from backupset '/dmdata/dmbak/db_increment_cumulative_bak_02';

---恢复
recover database '/dmdata/dmdb/DAMENG/dm.ini' from backupset '/dmdata/dmbak/db_increment_cumulative_bak_02';

---更新
recover database '/dmdata/dmdb/DAMENG/dm.ini' update db_magic;

此时,tab1 表中的数据为插入的全部三条数据。

总结:根据以上验证过程可知,差异增量备份和累计增量备份的还原结果相同。