DN提供三种数据保护模式,分别是大保护(Maximum Protection),大可用(Maximum Availability)和大性能(Maximum Performance)。可以通过DV_DATABASE的PROTECTION_MODE字段进行查询。
保护模式只在主机上有用,备机或级联备机上不使用。build后备机会自动同步主机的保护模式。否则,主机修改保护模式后,备机不会自动同步。虽然备机不用,但是考虑到备机后续可能升主,建议也同步修改备机的保护模式。
- 单AZ部署,DN 1主2备部署,默认部署为QUORUM_ANY = 1,默认保护模式为:大保护。
- 单AZ部署,DN 1主1备部署,默认部署为QUORUM_ANY = 1,默认保护模式为:大可用。
- 跨AZ部署,DN 1主4备,1主5备部署,默认部署为QUORUM_ANY = 2,默认保护模式为:大保护。
如果不是以上几种部署模式,则默认保护模式为:大可用。
大保护(Maximum Protection)
大保护优先保证主备机数据一致。
要求所有的事务在提交前其事务日志不仅被写入到本地的日志文件,还要同时写入到备库日志文件,并确保日志数据在至少在一个备库中可用,然后才会在主库上提交。如果出现故障导致所有备库不可用(如网络中断),主库业务会阻塞,以防止数据丢失。
主库必须使用LGWR SYNC方式复制到备库。
该保护模式需要在mount状态下设置,命令如下:
ALTER DATABASE SET STANDBY DATABASE TO MAXIMIZE PROTECTION;
- LOG归档的备机地址ARCHIVE_DEST_n(n不等于1),至少有一个备机的Redo日志传输模式必须配置为同步模式SYNC,如果所有的备机都配置为异步模式ASYNC,数据库会启动失败。
- 如果LOG归档的备机地址ARCHIVE_DEST_n(n不等于1)指定了SYNC和AFFIRM属性,那么事务日志写入所有指定AFFIRM的备库日志文件后,才会在主库上提交。
- 如果LOG归档的备机地址ARCHIVE_DEST_n(n不等于1)指定了SYNC和NAFFIRM属性,那么无需等待备机写入,事务日志将直接写入主库。
大可用(Maximum availability)
大可用优先保证数据库主机可用。
实现方式与大保护模式类似,也要求本地事务在提交前必须将事务日志写入到至少一台备机的日志文件中。与大保护模式不同的是,如果出现故障导致备库不可用,主库业务不会阻塞。虽然会尽量避免数据丢失,但不能保证数据完全一致。
要求主库必须使用LGWR SYNC方式复制到备库。
该保护模式设置没有状态要求,命令如下:
ALTER DATABASE SET STANDBY DATABASE TO MAXIMIZE AVAILABILITY;
- 如果LOG归档的备机地址ARCHIVE_DEST_n(n不等于1)指定了SYNC和AFFIRM属性,且指定了AFFIRM的备机和主机连接正常时,那么事务日志写入所有指定AFFIRM的备库日志文件后,才会在主库上提交。
- 如果LOG归档的备机地址ARCHIVE_DEST_n(n不等于1)指定了SYNC和NAFFIRM属性,那么无需等待备机写入,事务日志将直接写入主库。
大性能(Maximum performance)
大性能优先保证数据库主机性能。
事务可以随时提交。主库的事务日志至少需要写入一个备库,不过这种写入可以是不同步的。如果网络条件理想的话,这种模式能够提供类似高可用性的数据保护,而仅对主库性能有轻微影响。
主库可以使用LGWR SYNC/ASYNC复制到备库。
该保护模式设置没有状态要求,命令如下:
ALTER DATABASE SET STANDBY DATABASE TO MAXIMIZE PERFORMANCE;