暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

GDS与标准Oracle服务的区别

ASKTOM 2020-01-17
1019

问题描述

嗨,
我必须实现一个HA DBMs系统。

为了允许客户端几乎为零的停机时间,生产 (主DB) 环境和灾难恢复 (备用DB) 应该具有相同的服务名称。

主数据库和备用数据库与活动数据保护同步,注册的服务如下:

-主数据库中的本地服务称为ha_prv
-备用数据库中的本地服务称为ha_prv
-称为dgtst_ha.dgpool.oradbcloud的全球数据库服务 (在包含brokerconfiguration的DGPOOL中的GSM下注册)。在gdsctl下,以以下方式定义了此全局数据库服务:

add service -service DGTST_HA -gdspool DGPOOL -preferred_all -failovermethod BASIC -failovertype SELECT -notification TRUE -role PRIMARY 


主服务器称为PRIMHOST,备用服务器为STBYHOST。

因此,这是以下tnsnames之间的区别:

GSM_HA=
(DESCRIPTION_LIST=
 (LOAD_BALANCE=off)
 (FAILOVER=on)
 (DESCRIPTION =
 (CONNECT_TIMEOUT=10)(RETRY_COUNT=3)
 (ADDRESS_LIST=
 (ADDRESS=(PROTOCOL=tcp)(HOST=PRIMHOST)(PORT=1571))
 (ADDRESS=(PROTOCOL=tcp)(HOST=STBYHOST)(PORT=1572)))
 (CONNECT_DATA=(SERVICE_NAME = dgtst_ha.dgpool.oradbcloud))
 )
)


HA_PRV=
(DESCRIPTION_LIST=
 (LOAD_BALANCE=off)
 (FAILOVER=on)
 (DESCRIPTION =
 (CONNECT_TIMEOUT=10)(RETRY_COUNT=3)
 (ADDRESS_LIST=
 (ADDRESS=(PROTOCOL=tcp)(HOST=PRIMHOST)(PORT=1521))
 (ADDRESS=(PROTOCOL=tcp)(HOST=STBYHOST)(PORT=1521)))
 (CONNECT_DATA=(SERVICE_NAME = ha_prv))
 )
)


我有某种方法,使用GDS,只定义一个VIP,以便直接给客户端一个主机名?

谢谢。

专家解答

我个人认为GDS可能对您的设置有点过分,除非您计划针对数据保护节点运行应用程序的核心部分,但无论如何,不同之处在于您的GDS tnsnames指向GDS服务器,而不是您的数据库服务器。

所以你的第二个tnsnames通常是这样的:

GSM_HA =
(描述 _ 列表 =
(负载 _ 平衡 = 关闭)
(故障转移 = 开启)
(描述 =
(连接超时 = 10)(重试计数 = 3)
(地址列表 =
(地址 = (协议 = tcp)(HOST = gsmhost1)(端口 = 1571))
(地址 = (协议 = tcp)(HOST = gsmhost2)(端口 = 1572))
(连接数据 = (服务名称 = dgtst_ha.dgpool.oradbcloud))
)
)

您的GDS服务器与您的数据库是 * 不同 * 的机器。(GDS的重点是它位于数据库的 “外部”,因此它可以将流量引导到可用或最适合特定请求的那些数据库)。

然后,“dgtst_ha.dgpool.oradbcloud)” 可以是由不同数据中心中的1个或2个或 * 数十个 * 个不同数据库提供的服务,每个数据库都提供数据库的主要副本。

这里有一个很好的白皮书

https://www.oracle.com/technetwork/database/availability/maa-globaldataservices-3413211.pdf

我不确定是否需要GDS主机的VIP,因为它们是彼此的冗余副本,我们只是依次尝试。
文章转载自ASKTOM,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论