数据库管理平台DMP

深信服数据库管理平台(DMP)提供MySQL、Oracle的RDS功能,支持全生命周期管理、自动MySQL主从切换、故障自愈、事务一致性备份、监控告警等,能够实现业务快速上线、资源快速分发、数据安全保护,提供SLA保障,使数据库运维复杂度大幅下降,帮助客户减少被动性救火工作,专注业务创新。
点击可切换产品版本
知道了
不再提醒
DMP 2.3.7
{{sendMatomoQuery("数据库管理平台DMP","Oracle异地容灾")}}

Oracle异地容灾

更新时间:2024-07-23

DMP支持创建Oracle DataGuard备库,支持“最大保护”、“最大可用”、“最大性能”三种模式。

最大性能:这是Data Guard默认的保护模式。primay上的事务commit前不需要从standby上收到反馈信息,该模式在primary故障时可能丢失数据,但standbyprimary的性能影响最小。

最大可用:在正常情况下,最大可用模式和最大保护模式一样;在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继续对外服务。

主备切换的过程包括以下步骤:

  1. 确认主数据库不可用:通过监控主数据库的状态,确认主数据库发生故障或需要进行维护
  1. 启动备用数据库:将备用数据库启动,并将其设置为可读写模式。
  2. 将备用数据库设置为主数据库:在备用数据库上执行一系列的操作,将其设置为主数据库。这包括修改数据库参数、启动监听器、修改应用连接等,
  3. 更新应用连接信息:将应用程序的连接信息更新为新的主数据库的连接信息。
  4. 启动其他相关服务:启动与主数据库相关的其他服务,如应用程序服务器、Web服务器等。
  5. 验证主备切换:通过测试和验证确保主备切换成功,并确保业务的连续性和可用性。

业务端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 IPOracle RAC架构,通常是SCAN IP,也可以是Virtual IPPublic IP

活动IP:主库上的一个业务IP;当主备切换或故障转移后,DMP会在原主库将该活动IP摘除并配置到新主库上。

通信IPDataGuard主备之间的数据同步使用的IP。可选Public IPSCAN IP(仅RAC)作为通信。也可以配置NAT转换作为通信IPNAT转换IP对应到Public IP)。推荐使用Public IP作为通信IP

使用经NAT转换的IP:主备网络三层打通,需要通过NAT IP访问时,可使用此方式;使用此方式,不支持配置活动IP

移除备库:一主多备架构下,可将其中某个备库移除。

解除DG:直接解除所有DG关系。

IP漂移 - 多实例纳管并创建DG

  1. 多实例环境下的 IP 漂移是串行执行,因为监听文件存在竞争访问。
  1. 其他 DataGuard 与当前 DataGuard 存在相同的主库和备库,允许使用同一个ip进行漂移。
  2. 其他 DataGuard 与当前 DataGuard 存在相同的主库,但备库不同,不允许使用同一个ip进行漂移。
  3. 其他 DataGuard 与当前 DataGuard 存在相同的主库,但备库不同,允许使用不同的ip进行漂移
  4. 单机纳管时不要使用scan/vip进行纳管,可能会飘走,影响其他实例。

IP漂移 - 一主多备:

  1. 只要有一个备库使用业务IP方式配置了通信IP,就可以给该DG配置活动IP,即使其他备库使用经过NAT转化的IP配置了通信IP
  1. 如果配置了活动IP,主备切换IP漂移时只能选择一个配置了业务IP做通信IP的备库作为目标库进行漂移。