您可以将 Oracle RAC 集群扩展到两个或多个地理位置不同的站点,每个站点都配有自己的存储。如果其中一个站点发生故障,另一个站点将充当活动备用站点。
通常,Oracle ASM 和 Oracle 数据库堆栈都设计为在数据中心中使用企业级共享存储。然而,光纤通道技术使您能够跨两个或多个数据中心分布计算和存储资源,并分别通过以太网电缆和光纤通道连接它们,以满足计算和存储需要。
虽然您可以在安装 Oracle Grid Infrastructure 时配置 Oracle 扩展集群,但也可以在安装后使用 ConvertToExtended 脚本进行配置。您可以使用 CRSCTL 管理 Oracle 扩展集群。
配置Oracle Extended Cluster
此过程仅支持已安装或升级到 Oracle Grid Infrastructure 12c 版本2(12.2)或更高版本的集群,这些集群通常配置有一个站点(默认站点)。
代码语言:javascript复制注:此过程要求集群中的所有节点都可以访问。在数据库访问中断期间,还将出现集群中断。
您可以将 Oracle Extended Cluster 配置为具有一个或多个磁盘组以及多个故障组。使用 ConvertToExtended 脚本,可以创建多个数据站点,并将节点与每个数据站点相关联。所有 Oracle Flex ASM 存储都与默认集群站点保持关联,因为没有将现有磁盘组转换为扩展磁盘组的机制。将集群转换为 Oracle Extended cluster 后,投票文件成员身份将保持不变,而不是层次结构。
还必须添加扩展磁盘组,并将投票文件迁移到扩展磁盘组以利用特定于站点的分层投票文件算法。
使用CRSCTL查询集群,如下所示,以确定其扩展状态:
代码语言:javascript复制$ crsctl get cluster extended
CRS-6579: The cluster is 'NOT EXTENDED'
代码语言:javascript复制$ crsctl query cluster site -all
Site 'crsclus' identified by '7b7b3bef4c1f5ff9ff8765bceb45433a' in state 'ENABLED',
and contains nodes 'node1,node2,node3,node4', and disks ''.
示例中名为 crsclus 的集群,该集群有四个节点node1、node2、node3和node4以及一个磁盘组datadg。集群配置了一个站点。
关闭 Oracle Clusterware 堆栈,以防止某些 Oracle Flex ASM 实例、cssd和crsd 认为集群模式未扩展,而其他组件认为集群模式已扩展。保持 Grid 即插即用守护进程(gpnpd)在线的好处是可以在远程节点上更新概要文件。下次启动 Oracle Clusterware 堆栈时,集群模式将被扩展。
代码语言:javascript复制# crsctl stop cluster -all
1、在集群中的第一个节点上,运行以下命令(注意将site_name替换为实际的名称):
代码语言:javascript复制$ rootcrs.sh -converttoextended -firstnode -sites site_list -site site_name
2、运行 crsctl check css 以确保集群同步服务(css)未在任何远程节点上运行。
3、使用以下命令生成站点名称和站点GUID:
代码语言:javascript复制$ crsctl query cluster site -all
上面的命令显示的输出类似于以下内容:
代码语言:javascript复制Site 'SiteA' identified by GUID '7b7b3bef4c1f5ff9ff8765bceb45433a' in state
'ONLINE' contains nodes 'node1,node2,node3', and disks 'disk1, disk2, disk3'.
Site 'SiteB' identified by GUID '23453bef4c1f5ff9ff8765bceb45433a' in state
'QUARANTINED' contains nodes 'node4, node5, node6', and disks 'disk4, disk5, disk6'.
Site 'SiteQ' identified by GUID '98763bef4c1f5ff9ff8765bceb45433a' in state
'ONLINE' contains no nodes and disk 'disk7'.
Site 'SiteD' identified by GUID '4abcd453c6bc6fc1ffd3a58849d5ba41' in state
'ONLINE' contains nodes 'cuj1234' and no disk
使用此信息更新检查点,并将其复制到集群中的其余节点。
4、更新Grid Plug 和 Play配置文件,并使用以下命令将ext_mode设置为TRUE:
代码语言:javascript复制$ cd $Grid_home/gpnp/host_name/profiles/peer
$ gpnptool getpval -p=profile.xml -prf_sq -o=temp_file // run_gpnptool_getpval()
$ gpnptool edit -p=profile.xml -asm_ext="" prf_sq=seq 1 -o=profile_ext.xml
代码语言:javascript复制注:对于ProfileSequence键,prf_sq的值必须大于当前配置文件中的值。
代码语言:javascript复制$ gpnptool sign -p=profile_ext.xml -o=profile_ext_sign.xml
$ mv profile_ext_sign.xml profile.xml
$ gpnptool put -p=profile.xml
5、将站点添加到本地配置,如下所示:
代码语言:javascript复制$ crsctl add crs site site_name -guid site_guid -local
6、将站点添加到全局配置中,如下所示(这要求OCR正在运行,需将 site_name 和 site_guid 参数改为实际值):
代码语言:javascript复制$ crsctl add crs site site_name -guid site_guid
7、为此节点更新本地配置中的到站点映射,如下所示(需要将 site_name 和 local_host 改为实际值):
代码语言:javascript复制$ crsctl modify cluster site site_name -n local_host -local
8、更新节点到站点的映射,如下所示:
代码语言:javascript复制$ crsctl modify cluster site site_name -n host1, host2, ...
9、停止然后启动Oracle High Availability Services堆栈,如下所示:
代码语言:javascript复制# crsctl stop crs
# crsctl start crs
对集群中的其余节点执行以下操作:
1、将集群扩展到特定节点,如下所示:
代码语言:javascript复制$ rootcrs.sh -converttoextended -site site_name
2、确保CSS未在任何远程节点上运行。
3、使用以前的检查点信息查找新站点和站点GUID。
4、将站点添加到本地配置,如下所示:
代码语言:javascript复制$ crsctl add crs site site_name -guid site_guid -local
5、为此节点更新本地配置中的到站点映射,如下所示:
代码语言:javascript复制$ crsctl modify cluster site site_name -n local_host -local
6、停止然后启动 Oracle High Availability Services 堆栈,如下所示:
代码语言:javascript复制# crsctl stop crs
# crsctl start crs
配置完Oracle Extended Cluster后,运行以下命令以验证配置:
代码语言:javascript复制$ crsctl get cluster extended
CRS-XXXX: The cluster is 'EXTENDED'
$ crsctl query cluster site -all
Site 'crsclus' identified by '7b7b3bef4c1f5ff9ff8765bceb45433a' is 'ONLINE', and
contains nodes '', and disks ''.
Site 'ny' identified by '888b3bef4c1f5ff9ff8765bceb45433a' is 'ONLINE', and
contains nodes 'node1,node2', and disks ''.
Site 'nj' identified by '999b3bef4c1f5ff9ff8765bceb45433a' is 'ONLINE', and
contains nodes 'node3,node4', and disks ''.
上述命令示例中的输出类似于运行命令时 CRSCTL 显示的内容。