这个话题还是很广的。
各种数据库对应的数据库复制产品,有不同的特点,每一种产品又有很多种运行模式,又有很多特点。
就拿oracle DG来举例,
Oracle Dataguard提供了三种数据保护模式:
1.最大保护模式
1)这种模式提供了最高级别的数据保护能力;
2)要求至少一个物理备库收到重做日志后,主库的事务才能够提交;
3)主库找不到合适的备库写入时,主库会自动关闭,防止未受保护的数据出现;
4)优点:该模式可以保证备库没有数据丢失;
5)缺点:主库的自动关闭会影响到主库的可用性,同时需要备库恢复后才能提交,对网络等客观条件要求非常的高,主库的性能会因此受到非常大的冲击。
2.最大可用性模式
1)该模式提供了仅次于“最大保护模式”的数据保护能力;
2)要求至少一个物理备库收到重做日志后,主库的事务才能够提交;
3)主库找不到合适的备库写入时,主库不会关闭,而是临时降低到“最大性能模式”模式,直到问题得到处理;
4)优点:该模式可以在没有问题出现的情况下,保证备库没有数据丢失,是一种折中的方法;
5)缺点:在正常运行的过程中缺点是主库的性能受到诸多因素的影响。
3.最大性能模式
1)该模式是默认模式,可以保证主数据库的最高可用性;
2)保证主库运行过程中不受备库的影响,主库事务正常提交,不因备库的任何问题影响到主库的运行;
4)优点:避免了备库对主数据库的性能和可用性影响;
5)缺点:如果与主库提交的事务相关的恢复数据没有发送到备库,这些事务数据将被丢失,不能保证数据无损失;
oracle DG还有一些限制,例如:
解决高可用性和故障切换的问题
– 备库不能提供查询, 不能用于报表和数据仓库
– 在主库正常状态下,总是处于恢复模式
– 如果要使用备库, 复制必须停止
– 不能实现零宕机迁移
代码规则限制
– 仅能设置30个目标
– 必须是同平台、同OS、同数据库版本
表必须在相同的Schema下面
– DBA不能有选择性的复制
Switchover 可能要求Primary Database 重启或重新mount
不必要的停机时间
Failover 可能要求备库重启
– 不必要的停机时间
– 与RAC数据库不完全兼容
占用比较高的资源
– 通过Oracle*Net传输redo data – 网络资源占用比较高
– Massive protocol
– 没有数据压缩
failover时间比较长
– 必须等待所有日志被应用– delayed startup
- USING CURRENT LOGFILE
Log corruption = disaster
– 不能倒退事务
– 不能过滤所选择的事务
– 有限地基于时间的恢复
Patches/upgrades 要求停机
不能把事务拆分、不能把SQL合并
没有转换能力
收起