配置 RAC 负载均衡与故障转移
Oracle负载均衡主要是指新会话连接到RAC数据库时,如何判定这个新的连接要连到哪个节点进行工作?通常情况下,负载均衡分为客户端负载
均衡与服务器端负载均衡。客户端负载均衡通常是在客户端的tnsnames.ora中多添加一个链接地址以及LOAD_BALANCE与failover参数。而服务器
端的负载均衡则相对复杂,下面具体描述服务器端负载均衡。
一、负载均衡
注意这里的负载均衡指的是连接的负载均衡,即客户可以随机从不同的实例中连接到数据库
1.配置tnsnames.ora使得该文件中包含如下全部内容:
2.配置参数文件remote_listener
3.需要配置连接描述信息的两个IP地址、端口号、以及load_balance子项为yes (主要是load_balance子项) 4.查看侦听器的状态,从下面可以看到devdb.robinson.com服务中有两个实例为其提供服务
5.测试负载均衡
使用shell脚本来进行测试负载均衡
二、配置故障转移
负载均衡是用于实现基于连接的负载均衡,但不能解决节点是否可用,一旦一个节点损坏,已成功连接的客户端并不能转移到其他正常服务的
实例中。而故障转移功能则使得该功能得以实现。可以使用srvctl 和dbca来创建服务。下面使用dbca来创建一个新的服务,客户端连接到实
例后,对故障实现透明切换。
1.配置故障转移服务
在节点rac1使用oracle帐户启动dbca工具,
a.选择 Oracle Real Application Clusters database
b.选择 Services Management
c.集群数据库列表:单击 Next。
d.数据库服务:单击 Add。
添加服务:输入sales。
选择 devdb1 作为首选实例。
选择 devdb2 作为可用实例。
TAF 策略:选择 Basic。
单击 Finish。
e.数据库配置助手:单击 No 退出。
配置完毕后,在tnsnames.ora中多出了以下内容,注意是各个节点都会多出以下内容
同时参数service_names会多出一个服务名,位于在配置数据库服务时选择的首选实例中 使用srvctl工具也可以看到该服务已经正常开始提供服务
2.实现故障转移
下面使用帐户usr1,服务名sales从Windows客户端来登陆,注意要配置好客户端tnsnames,可以将服务器sales项内容全部复制到客户端tnsnames.ora中
3.重新定位故障转移服务到首选实例
对于首选实例从故障中恢复后,需要手动来重新定位到首选实例
4.DML故障转移(不同于DQL,因此单独列出)
使用Windows客户端通过sales服务名登陆
从另一个会话中使用sysdba关闭devdb1(shutdown abort)
再在刚刚执行表创建的会话中查询记录,收到提示,事务必须被回滚
总结:对于DML 操作在实现故障转移时,将严格按照ACID原则来执行,大部分情况需要回滚事务。
均衡与服务器端负载均衡。客户端负载均衡通常是在客户端的tnsnames.ora中多添加一个链接地址以及LOAD_BALANCE与failover参数。而服务器
端的负载均衡则相对复杂,下面具体描述服务器端负载均衡。
一、负载均衡
注意这里的负载均衡指的是连接的负载均衡,即客户可以随机从不同的实例中连接到数据库
1.配置tnsnames.ora使得该文件中包含如下全部内容:
2.配置参数文件remote_listener
3.需要配置连接描述信息的两个IP地址、端口号、以及load_balance子项为yes (主要是load_balance子项) 4.查看侦听器的状态,从下面可以看到devdb.robinson.com服务中有两个实例为其提供服务
5.测试负载均衡
使用shell脚本来进行测试负载均衡
二、配置故障转移
负载均衡是用于实现基于连接的负载均衡,但不能解决节点是否可用,一旦一个节点损坏,已成功连接的客户端并不能转移到其他正常服务的
实例中。而故障转移功能则使得该功能得以实现。可以使用srvctl 和dbca来创建服务。下面使用dbca来创建一个新的服务,客户端连接到实
例后,对故障实现透明切换。
1.配置故障转移服务
在节点rac1使用oracle帐户启动dbca工具,
a.选择 Oracle Real Application Clusters database
b.选择 Services Management
c.集群数据库列表:单击 Next。
d.数据库服务:单击 Add。
添加服务:输入sales。
选择 devdb1 作为首选实例。
选择 devdb2 作为可用实例。
TAF 策略:选择 Basic。
单击 Finish。
e.数据库配置助手:单击 No 退出。
配置完毕后,在tnsnames.ora中多出了以下内容,注意是各个节点都会多出以下内容
同时参数service_names会多出一个服务名,位于在配置数据库服务时选择的首选实例中 使用srvctl工具也可以看到该服务已经正常开始提供服务
2.实现故障转移
下面使用帐户usr1,服务名sales从Windows客户端来登陆,注意要配置好客户端tnsnames,可以将服务器sales项内容全部复制到客户端tnsnames.ora中
3.重新定位故障转移服务到首选实例
对于首选实例从故障中恢复后,需要手动来重新定位到首选实例
4.DML故障转移(不同于DQL,因此单独列出)
使用Windows客户端通过sales服务名登陆
从另一个会话中使用sysdba关闭devdb1(shutdown abort)
再在刚刚执行表创建的会话中查询记录,收到提示,事务必须被回滚
总结:对于DML 操作在实现故障转移时,将严格按照ACID原则来执行,大部分情况需要回滚事务。