更新时间:2024-01-09
DMP支持创建Oracle DataGuard备库,支持“最大保护”、“最大可用”、“最大性能”三种模式。
• 最大性能:这是Data Guard默认的保护模式。primay上的事务commit前不需要从standby上收到反馈信息,该模式在primary故障时可能丢失数据,但standby对primary的性能影响最小。
• 最大可用:在正常情况下,最大可用模式和最大保护模式一样;在standby不可用时,最大可用模式会自动降低成最大性能模式,所以standby故障不会导致primay不可用。只要至少有一个standby可用的情况下,即使primary down机,也能保证不丢失数据。
• 最大保护:最高级别的保护模式。primay上的事务在commit前必须确认redo已经传递到至少一个standby上,如果所有standby不可用,则primary会挂起。该模式能保证零数据丢失, 一般为保证主库在某个从库故障后仍能正常运行,最好配置两个及以上的从库。
DMP管理的Oracle DataGuard支持数据库主备切换,支持设置基于主备角色的数据库服务名(service_name)。应用程序需配置主备库IP与基于角色的服务名,对于应用程序来说数据库主备角色切换是透明的。应用程序可不受数据库切换影响,正确的连接到主库或者备库。
DG主备切换分为计划内(switchover)和计划外(failover)切换。
如果是可预见因素需要关闭Primary Database,比如软硬件升级,可以把Standby Database 切换为Primary Database 继续对外服务,这样即减少了服务停止时间,并且数据不会丢失。
如果异常原因导致Primary Database 不可用,也可以把Standby Database 强制切换为Primary Database继续对外服务。
主备切换的过程包括以下步骤:
- 确认主数据库不可用:通过监控主数据库的状态,确认主数据库发生故障或需要进行维护
- 启动备用数据库:将备用数据库启动,并将其设置为可读写模式。
- 将备用数据库设置为主数据库:在备用数据库上执行一系列的操作,将其设置为主数据库。这包括修改数据库参数、启动监听器、修改应用连接等,
- 更新应用连接信息:将应用程序的连接信息更新为新的主数据库的连接信息。
- 启动其他相关服务:启动与主数据库相关的其他服务,如应用程序服务器、Web服务器等。
- 验证主备切换:通过测试和验证确保主备切换成功,并确保业务的连续性和可用性。
业务端tnsnames.ora连接串如下:
--连接主库的连接串
PRIMARY=
(DESCRIPTION =
(ADDRESS_LIST =
(FAILOVER = ON)
(LOAD_BALANCE = OFF)
(ADDRESS = (PROTOCOL = TCP)(HOST = <主库端IP>)(PORT = 1521))
(ADDRESS = (PROTOCOL = TCP)(HOST = <备库端IP>)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = <DG主库服务名>)
)
)
--连接备库的连接串
STANDBY=
(DESCRIPTION =
(ADDRESS_LIST =
(FAILOVER = ON)
(LOAD_BALANCE = OFF)
(ADDRESS = (PROTOCOL = TCP)(HOST = <主库端IP>)(PORT = 1521))
(ADDRESS = (PROTOCOL = TCP)(HOST = <备库端IP>)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = <DG备库服务名>)
)
)
业务端 jdbc 连接串如下:
--连接主库的连接串
jdbc:oracle:thin:@(DESCRIPTION = (ADDRESS_LIST = (FAILOVER = ON)(LOAD_BALANCE = OFF)(ADDRESS = (PROTOCOL = TCPS)(HOST = <主库端IP>)(PORT = 1521))(ADDRESS = (PROTOCOL = TCPS)(HOST = <备库端IP>)(PORT = 1521)))(CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = <DG主库服务名>)))
--连接备库的连接串
jdbc:oracle:thin:@(DESCRIPTION = (ADDRESS_LIST = (FAILOVER = ON)(LOAD_BALANCE = OFF)(ADDRESS = (PROTOCOL = TCPS)(HOST = <主库端IP>)(PORT = 1521))(ADDRESS = (PROTOCOL = TCPS)(HOST = <备库端IP>)(PORT = 1521)))(CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = <DG备库服务名>)))
业务IP:业务访问数据库服务时使用的IP;单机架构下,通常是指Public IP;Oracle RAC架构,通常是SCAN IP,也可以是Virtual IP、Public IP。
活动IP:主库上的一个业务IP;当主备切换或故障转移后,DMP会在原主库将该活动IP摘除并配置到新主库上。
通信IP:DataGuard主备之间的数据同步使用的IP。可选Public IP、SCAN IP(仅RAC)作为通信。也可以配置NAT转换作为通信IP(NAT转换IP对应到Public IP)。推荐使用Public IP作为通信IP。
使用经NAT转换的IP:主备网络三层打通,需要通过NAT IP访问时,可使用此方式;使用此方式,不支持配置活动IP。
移除备库:一主多备架构下,可将其中某个备库移除。
解除DG:直接解除所有DG关系。
IP漂移 - 多实例纳管并创建DG:
- 多实例环境下的 IP 漂移是串行执行,因为监听文件存在竞争访问。
- 其他 DataGuard 与当前 DataGuard 存在相同的主库和备库,允许使用同一个ip进行漂移。
- 其他 DataGuard 与当前 DataGuard 存在相同的主库,但备库不同,不允许使用同一个ip进行漂移。
- 其他 DataGuard 与当前 DataGuard 存在相同的主库,但备库不同,允许使用不同的ip进行漂移
- 单机纳管时不要使用scan/vip进行纳管,可能会飘走,影响其他实例。
IP漂移 - 一主多备:
- 只要有一个备库使用业务IP方式配置了通信IP,就可以给该DG配置活动IP,即使其他备库使用经过NAT转化的IP配置了通信IP。
- 如果配置了活动IP,主备切换IP漂移时只能选择一个配置了业务IP做通信IP的备库作为目标库进行漂移。