Oracle 负载均衡解决方案

Posted 平民软件

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Oracle 负载均衡解决方案相关的知识,希望对你有一定的参考价值。

为什么要运用负载均衡

一般我们在数据库中的操作无非不就是增删改查这四个基本操作,最终数据库和磁盘文件打交道也就是读写操作。如果采用传统的一台服务器去运作,可能会在读写高峰时会出现一些无法预知的问题。这些我们或许可以通过优化应用代码结构,采用缓存技术等等,这些都在一定程度上是可以减轻数据库服务器的负载。但是,如果我们能将数据库读写操作分离开来,也就是使用负载均衡的方案来优化我们的系统结构。


场景

假设我们业务中有这样的场景:业务A正在进行一个比较耗时的查询,而业务B又需要进行数据的更新操作。在这种情况下,A操作一定程度上会对B操作带来了影响,因为A的耗时查询已经占用了部分数据库服务器的资源,这样的后果就是B的操作会出现延时、响应慢等情况,如果处于高峰期则有可能会造成数据库服务器崩溃(作一个最坏的打算,这是一个比较严重的后果)。


Oracle 数据库的解决方案

读写分离技术应该是大部分系统采用的一种方案。针对商业数据库Oracle,其研究的人也是甚少,相对于mysql、PostgreSQL等开源的数据库,要实现读写分离功能是具备一定难度的(因为协议不开源,研究资料比较少)。在花了大量的时间和精力进行比较深入的研究后,我们研发了一款针对Oracle数据库的中间件产品。软件采用C++编写而成,只有一个可执行文件,不依赖任何组件,直接运行即可使用。目前仅支持Oracle11g的数据库和JDBC11gR2的客户端连接。在这里我主要介绍软件中的读写分离功能。


下载软件

软件可以在 http://www.onexsoft.com/ 网站上进行获取(目前只有Linux下的版本)

下载完后运行


要使用读写分离只需这样启动即可


指定好master和slave并设置要登录的用户密码,再指定访问策略(目前支持master_only和read_slave策略)。要读写分离,使用read_slave即可。

这样启动后再用客户端连接此程序(默认是8221端口),进行各种操作,你会发现读写操作会路由到不同的机器上去了。

注:对于事务中的操作均到master,非事务的读操作会到slave;Statement 和 PrepareStatement 操作均支持。


软件稳定性测试

对于软件的稳定性,我们也做了比较多的测试,均没发现任何异常或者错误的地方。其中我们用BenchmarkSQL工具模拟了业务场景的测试。和直连相比,性能损失极小,可以忽略不计。



以上是关于Oracle 负载均衡解决方案的主要内容,如果未能解决你的问题,请参考以下文章

nginx负载均衡怎么访问数据库

Oracle RAC 客户端连接负载均衡(Load Balance)

oracle rac负载均衡

Oracle RAC 负载均衡测试(结合服务器端与客户端)

Oracle RAC 服务器端连接负载均衡(Load Balance)

text JDBC负载均衡方式连接的Oracle双机RAC