Oracle云上构建RAC,看这1篇就够了(附代码)

王鹤松 2021-02-23 10:01:50

 

 

​本文根据王鹤松老师在〖deeplus直播第259期〗线上分享演讲内容整理而成。(文末有获取本期PPT&回放的方式,不要错过)

 

王鹤松

中国东南地区甲骨文用户组(SECOUG)核心成员

 

  • Oracle 11g OCM,拥有十几年的数据库经验,曾服务于电信,税务,交通,金融等行业,有丰富的性能优化、故障诊断、数据库设计、异常恢复经验,热衷于技术的研究与分享。

 

随着国家政策逐步推进企业上云,云计算做为重点发展的战略性产业受到多方关注。市面上云厂家很多,各有各的优势。Oracle云凭借独一无二的技术,成为私有云和公有云部署的理想平台。本次技术分享会在Oracle云上完整搭建一套RAC,告诉大家在搭建过程中的注意事项以及要规避的“坑”。还会分享FlEX ASM新特性,同时结合云上高可用最佳实践来保证用户不间断的访问。

 

一、Oracle云的使用

 

 
1、个人测试账户申请

 

https://www.oracle.com/cn/cloud/free/

 

除了要进行邮箱验证和必要的信息录入外,还需要准备一张支持国际货币交易的信用卡,可支持一下三种:

 

 

验证过程会模拟一次交易,但会马上撤销,(或者会显示扣费失败,实际验证成功),最终以收到的邮件为准。

 

 
2、账号登陆

 

登陆地址

https://cloud.oracle.com/

或者

https://console.ap-tokyo-1.oraclecloud.com (区域选择日本登录地址)

https://console.ap-seoul-1.oraclecloud.com(区域选择韩国登录地址)

https://console.us-phoenix-1.oraclecloud.com(区域选择美西登录地址)

 

 

 

 
3、创建虚拟云网络

 

建议使用虚拟网络向导创建,并验证入站和出站规则正常。

 

 

 

 

 
4、创建SSH秘钥

 

以xshell工具为例 

 

 

按提示输入信息外,要注意:要选择RSA算法

 

 

 

生成的密钥属性里,可以将公钥另存成文件,或记录下公钥的具体信息,便于上传服务器

 

 
5、创建集群

 

 

根据页面提示填写注意事项,其中配置选项里要VM Standard2.2以上,节点总数要选2,添加SSH密钥部分将上个步骤生成的密钥文件上传:

 

 

 

 

 

创建成功后,可以在数据库详细信息的节点部分,看到对应的公网IP

 

 

 
6、配置ssh链接

 

 

 

ssh链接后,使用sudo切换用户,如sudo su - oracle

 

二、12C 新特性-FLEX集群

 

 
1、FLEX集群介绍

 

 

Oracle RAC 12c 引入了两个新概念:

 

  • 中心节点:和以前的版本一样,它们通过专用网络相互连接,并且可以直接访问共享存储。这些节点可以直接访问 Oracle 集群注册表 (OCR) 和表决磁盘 (VD);

  • 叶节点:这些节点是轻型节点,彼此不互连,也不能像中心节点一样访问共享存储。每个叶节点与所连接的中心节点通信,并通过所连接的中心节点连接到集群。 

 

从架构上来说,Oracle Flex 集群包括一个中心和叶架构,其中只有中心节点可以直接访问 Oracle 集群注册表 (OCR) 和表决磁盘 (VD)。但是应用可以通过叶节点访问数据库,而不必在叶节点上运行 ASM 实例。通过中心节点连接到数据库使得它对应用透明。 

 

 
2、FLEX ASM的体系结构:

 

 

 
3、FLEX集群与传统集群的区别

 

 

Flex 集群RAC12C 与传统集群的11G RAC相比,最大不同得是有Hub以及Leaf节点的存在,而Hub节点类似于传统集群节点,但是存在一个最大区别:即传统集群节点11G RAC是ASM实例与数据库实例绑定,ASM实例宕机则直接导致数据库实例无法访问,但是该方式在Flex集群中已将ASM和数据库实例进行了分割,本机ASM实例宕了,其ASM服务飘在其他节点,数据库实例仍然是可以访问的 

 

 
4、FLEX ASM新特性模拟实验

 

1.在ASM实例中检查集群状态正常

 

 

[grid@cat1 ~]$ crsctl check cluster 

CRS-4537: Cluster Ready Services is online

CRS-4529: Cluster Synchronization Services is online

CRS-4533: Event Manager is online

 

2.检查 RAC 数据库实例中 ASM 实例两个节点的状态正常

 

 

[grid@cat1 ~]$ srvctl status asm 

ASM is running on cat2,cat1

 

3.检查 Oracle Flex ASM 是否启用的命令  

 

 

[grid@cat1 ~]$ asmcmd showclustermode 

ASM cluster : Flex mode enabled - Direct Storage Access

[grid@cat1 ~]$ asmcmd showclusterstate 

Normal

 

4.确认Oracle Flex ASM 的状态 

 

[grid@cat1 ~]$ srvctl status asm -detail 

ASM is running on cat2,cat1

ASM is enabled.

ASM instance +ASM1 is running on node cat1

Number of connected clients: 2

Client names: cat1:_OCR:cat-cluster whs11:whs1:cat-cluster

ASM instance +ASM2 is running on node cat2

Number of connected clients: 2

Client names: cat2:_OCR:cat-cluster whs12:whs1:cat-cluster

 

[grid@cat1 ~]$ srvctl config asm -detail

ASM home: <CRS home>

Password file: +OCR/orapwASM 

Backup of Password file: +OCR/orapwASM_backup 

ASM listener: LISTENER

ASM is enabled.

ASM is individually enabled on nodes: 

ASM is individually disabled on nodes: 

ASM instance count: 3

Cluster ASM listener: ASMNET1LSNR_ASM

 

5.sqlplus连接入RAC的节点2的实例 2 (whs12)

 

 

sqlplus / as sysdba

 

6.查询一定数据量的表单,需要能形成刷屏效果

 

7.在 RAC 实例任意节点中关闭节点2的ASM 实例

 

 

[grid@cat1 ~]$ srvctl stop asm -node cat2 -stopoption abort –force

 

8.验证查询未被终止,并能正常输出

 

9.在 RAC 实例 2 (cat2) 中检查 ASM 实例的状态 ,发现ASM实例并未运行在节点2上

 

 

[grid@cat1 ~]$ srvctl status asm 

ASM is running on cat1

 

10.在 RAC 实例 2 (cat2) 中检查 ASM 和 RAC 数据库的状态

 

 

[grid@cat1 ~]$ ps -ef | grep pmon 

oracle    39297      1  0 10:43 ?        00:00:00 ora_pmon_whs11

grid     101927 100740  0 15:26 pts/3    00:00:00 grep --color=auto pmon 

 

注:由此可以验证flex集群的特性,ASM实例与数据库实例非绑定状态

 

11.恢复节点2的ASM实例

 

 

[grid@cat1 ~]$ srvctl start asm -node cat2

 

三、高可用性实践

 

1、创建针对PDB1_WHS 的故障转移服务

 

 

srvctl add service -d whs1 -s ser_whs_pdb1 -r whs11,whs12 -P basic -e select -m basic -z 180 -w 5 -pdb PDB1_WHS

 

2、启动服务

 

 

srvctl start service -d whs1 -s ser_whs_pdb1

 

3、检查服务状态

 

 

srvctl status service -d whs1 -s ser_whs_pdb1

 

4、在RAC的节点1创建连接串

 

 

45_pdb_whs =

 

  (DESCRIPTION =

    (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.0.45)(PORT = 1521))

    (CONNECT_DATA =

      (SERVER = DEDICATED)

      (SERVICE_NAME =ser_whs_pdb1)

    )

  )

 

5、使用创建的连接串登陆

 

 

sqlplus test/test@45_pdb_whs 

 

6、检查会话连接的实例信息

 

 

set line 1000

select INSTANCE_NUMBER,INSTANCE_NAME,STATUS,HOST_NAME from v$instance;

INSTANCE_NUMBER INSTANCE_NAME  STATUS        HOST_NAME

------------ -------------   -------------------- ---------------------------------

      1 whs11  OPEN       cat1

 

7、查询一定数据量的表单,需要能形成刷屏效果

 

8、强行停止会话所在的实例 

 

 

srvctl stop instance -d whs1 -i whs11 –f

 

9、验证查询未被终止,并能正常输出

 

10、检查节点1进程信息,发现数据库实例没有启动

 

 

[grid@cat1 ~]$ ps -ef | grep pmon 

oracle    39297      1  0 10:43 ?        00:00:00 ora_pmon_ASM1

grid     101927 100740  0 15:26 pts/3    00:00:00 grep --color=auto pmon 

 

11、再次检查会话连接的实例信息,发现会话在无感知情况下已切换至节点2

 

 

set line 1000

select INSTANCE_NUMBER,INSTANCE_NAME,STATUS,HOST_NAME from v$instance;

INSTANCE_NUMBER INSTANCE_NAME STATUS        HOST_NAME

------------ -------------   -------------------- ---------------------------------

      2 whs12  OPEN       cat2

 

注:使用TAF服务来实现业务在云端节点之间的弱感知甚至零感知的会话漂移

 

 
>>>>

Q&A

 

Q1:公有云上部署高性能Oracle RAC集群有哪些比较好的方法啊?

 

A1:首先要注意的是,目前除了Oracle云,甲骨文官方不支持其他云使用Oracle数据库的。当然技术上,其他云是可以安装、部署Oracle数据库的。Oracle云上搭建RAC集群是自动化完成的,对于核心业务可以参考视频的高可用测试进行配置。

 

Q2:我们公司Oracle数据库是单机模式的,如果想要云上搭建Oracle RAC,您有什么建议?

 

A2:云上搭建RAC服务器,使用DATAGUARD的方式从本地单机服务器实时同步数据到云端服务器,然后使用主备切换的方式,将数据库的主库迁移到云上RAC,实现数据库上云。这种是最为成熟的一种上云方式。要注意云上的单机和云上的RAC收费不是一个量级的,建议搭建一个测试环境模拟下。

 

Q3:已部署普通集群,普通集群如何转换为flex集群?后续要怎么做?

 

A3:按照以下步骤:

 

  • 步骤1:先使用asmca图形界面的convert to oracle flex asm按钮将ASM改为flex asm;

  • 步骤2:root用户使用命令crsctl set cluster mode flex将集群改为flex集群;

  • 步骤3:重启集群生效。

 

Q4:企业上云有必要全部都搬上云吗?上云哪些是重点?

 

A4:现阶段企业上云没有必要全部上云,建议最核心的系统不上云,非最核心和边缘系统上云。虽然上了云,还是建议本地有一个备机以防万一。

 

上云的有许多优点,例如:

 

  • 可以降低企业技术开发成本;

  • 现在公有云技术越来越成熟,丰富的产品线可以实现一站式上云;

  • 企业云计算的灵活性非常高;

  • 系统升级方便;

  • 企业上云可以减少运维开支。但最核心不容有失,现阶段,建议还是采用最传统的两地三中心的容灾方法最为稳妥,这种方案相比上云还是更为成熟。

 

 

Q5:本地迁移上Oracle云有哪些地方容易出错?怎么选择迁移方案?

 

A5:本地迁移上Oracle云在私网通信配置最容易出错,在视频中有介绍。迁移方式的方式有很多,可以根据具体业务的情况的做出选择。这边建议还是DATAGUARD、OGG、数据泵、XTTS等方法为主。各种方法有各自的优缺点,同平台同版本、停机时间短的,建议使用DATAGUARD;数据库数据量小的,可以使用数据泵方法;应用停机时间短、同步粒度灵活(记录级)、不同平台的,建议使用OGG。可以根据实际情况选择其中一种或几种方式结合使用。

 

Q6:Oracle云创建的云服务器本身有哪些安全防护功能,是否具备病毒防护等功能?

 

A6:Oracle云创建的云服务器具有病毒防护功能。具体的防护功能有:

 

  • Oracle云会自动查询漏洞信息,根据季度发布的补丁信息给予用户是否打补丁。具体的补丁更新权取决于用户;

  • Oracle云服务器本身的还有IP访问控制和端口访问控制,严格审计登录用户;

  • SSH连接秘钥带有安全审计功能。要注意,云端的数据安全是要用户自己负责的,所以常规的备份和容灾也不可或缺。

 

↓点这里可回看本期直播

阅读原文

 
活动预告