在数据库管理中备份是非常重要的一个环节,备份是为了应对意外情况,在操作错误时,人为因素致使数据丢失等问题。在备份中还有一个重要的区分就是差异备份。今天我们将主题集中在mysql和oracle这两个大型数据库上,分别介绍一下它们的差异备份处理。
在MySQL中,差异备份的实现方式是在上一次完全备份的基础上,只备份自上次备份以来被更改的数据文件。这些发生变化的数据文件实际上只是数据文件的片段,并不包含文件的整个数据。
mysqldump --all-databases --triggers --master-data=2 --ignore-table=mysql.event --flush-logs --delete-master-logs -u xxx -p >/data/mysql/mysql_full_$(date "+%Y%m%d%H%M%S").sql
mysqldump --all-databases --triggers --master-data=2 --ignore-table=mysql.event --flush-logs --delete-master-logs -u xxx -p --no-create-info --where="update_time >'$last_full_backup_time'" >/data/mysql/mysql_diff_$(date "+%Y%m%d%H%M%S").sql
然后再将差异备份与完全备份合并,完成备份还原。这种方法需要在应用服务器上进行备份,需要备份的数据较多时,备份时间会比较长。
而在Oracle中,差异备份则是指对上一次全备份后发生修改或新增的所有数据进行备份。Oracle的备份策略通常是先进行一次完全备份,之后再进行增量备份。因此当需要做差异备份时,则需要将上一次完全备份与所有增量备份进行合并,这样才能拥有完全的备份。
rman
backup incremental level 1 for recover of copy with tag ‘incr’ database plus archivelog;
crosscheck backup;
delete noprompt obsolete;
backup archivelog all;
该命令将每个备份中发生变化的部分进行复制,并创建完整的备份。使用这种方法进行备份时,备份的数据量少,时间也非常快。而在需要还原时,只需要将最近一次完全备份和所有增量备份合并,还原备份数据。
综上所述,MySQL的差异备份方式主要是针对需要备份的数据较多时,备份时间较长,需要进行增量备份。而Oracle则会先进行完全备份,再进行增量备份,备份的数据较少,时间也更短。在实践中可根据需求选择适合自己的备份方式。