我们帮助行业客户进行上云业务迁移,Oracle的业务数据迁移几乎成了必然遇到的问题。对Oracle的数据高可用,作为云架构师,应该说是必须懂。今天我们从入门开始,介绍一些常见的问题。
一、什么是DG、RAC
DG(Data Guard)数据卫士,它主要解决数据存储上的安全问题,简单来讲就是存储另外一份同步的数据冗余来保护数据,而且这种保护是动态的,秒级同步。DG很好地避免了服务器系统在数据存储上的单点故障。
RAC(Real Application Cluster)实时数据集群,则很好地解决了服务器的扩展问题,我们可以用X86服务器来增加服务器的访问节点。可以做到负载均衡或者是热备。
二、DG如何实现数据的冗余
Data Guard包括一个生产数据库以及若干个备用数据库,这些数据库只与主数据库在事务上保持一致。副数据库通过重做数据保持这种事务的一致性。
当主数据库发生变更、新增操作时,则生成重做数据并将其写入本地日志文件中。此时主数据库必须运行在归档模式,否则不会产生日志文件。副数据库将日志文件下载到本地,并应用到备用数据库中。此时DG可以选择是数据同步模式、还是异步模式。
三、DG最多可以实现多少副数据库?
最近做的一个项目,副数据库达到了两个,一个在公有云端,另一个在本地的客户私有云。
实现DG可以实现最多九份副数据库,也就是可以实现最多九份只读数据库,或九处不同地方的数据库备份。
DG主、副数据库运行的底层操作系统、DBMS数据库版本要求一致。如两边都是RedHat 6.8、Oracle 12G。
四、DG副本数据有两种不同的数据重写方式
1、Redo Log物理写数据模式。
Redo Log、SQL。Redo Log是物理重写,就也就直接往副数据库的块里写数据,直接复制块。而SQL是逻辑重写,在副数据库里写标准语句,insert数据等。
因为Redo Log是物理重写,如果此时副数据库正在执行写操作,Oracle数据库是无法正常打开的。为了解决该问题,实现主副数据库的读写分离功能,Oracle支持闪回功能,也就是读数据时,Oracle置为只读模式(此时同步数据无法写入),而当有物理数据写入时,Oracle置为写模式。
在Oracle 11G版本开始,DG提升了Redo Log的功能,数据库可以在Read Only模式下继续Redo写数据。
2、SQL逻辑写数据模式。
SQL模式不需要锁定副数据库,任何时侯都可以往副数据库里进行数据的读/写操作。
SQL采用逻辑重写数据的方式,insert、update等标准SQL语句重写数据,看上去挺美好。但有弊端,使用该模式有些数据类型、语句有操作上的限制,不能保证数据库完全一致。
3、真实场景我们如哪种模式?
几个项目中,用到Redo Log物理写数据的更多。为了保证数据的一致性,这是很关键的。