在最近的一个大型项目中,用户提到由我们云提供商进行Oracle数据库的备份、迁移集成工作,是选择用DG、还是RMAN?我们今天来分析一下。
一、首先我们来回顾一下这两种工具的用途
Data Guard是实时的数据同步工具,即使可以开启数据延迟同步的功能(例如2小时才将主用数据库的更新同步到备用数据库),但实时同步功能仍是它的主要用途。Data Guard有物理、逻辑同步两种工作方式。例如如果我们执行了误删除,DG也会将备库执行删除操作。
RMAN(Recovery Manager)是物理备份工具,也是Oracle官方唯一的数据备份工具。其好处是可以设置多个同步的时间点,可以回退到备份点。即使执行了误操作,也可以随时回退。
如果服务商希望减少对客户数据的操作,减少直接触碰Oracle数据库密码的风险,同时用一个工具可迁移Oracle、Mysql、MSSQL等数据库,也可以在停机的状态下,采用第三方的数据磁盘copy工具进行数据迁移,相当于直接把数据磁盘全部copy走。
二、实际DG、RMAN是互补的关系,有不同的应用场景
1、数据迁移场景:
如果需要将线下客户自有的Oracle迁移至云上,因为数据量较大(5T),如果采用常用的export/import文本导出、导入方法,时间会很久。因为线下、线上库的操作系统、Oracle版本环境一模一样,用RMAN备份恢复的方式进行数据迁移最好。
2、数据备份的场景:
如果是关键型的业务数据备份,一般是DG RMAN同时上。
用DG实现秒级的数据同步,即使主用数据库的硬盘坏掉,备用数据库的数据也能完全一致。用DG恢复数据很快,主、备用数据库实际是同时处于运行状态,通过切换数据库就可以将数据库进行快速切换,恢复业务。同时,DG不仅是用于备份场景,也用于读写分离高性能的场景。
用RMAN实现按天等定期的数据备份,便于误操作的数据回退、或者找回更长时间的数据(甚至是几年、几个月前的数据)。RMAN的备份数据是无法直接使用的,需要进行恢复操作,数据库越大,恢复得越慢。
为了避免同时对主库进行DG RMAN操作而影响主库的性能,在实际生产场景中,一般建议:对主库进行DG操作,而在备库上进行RMAN定期备份。