`
shishi11
  • 浏览: 114152 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

MySQL JDBC 集群(转载标记)

阅读更多

MySQL JDBC 集群

3 八月, 2010 (12:53) | 性能 , 数据库 繁体 English    DeliciOus    2 分享到新浪 微博
作者: H.E. | 您可以转载, 但必须以超链接形式标明文章原始出处和作者信息及版权声明
网址: http://www.javabloger.com/article/jdbc-mysql-loadbalance.html
豆瓣 读书 向你推荐有关 性能数据库 、 类别的图书。

如果按照网上大部分提供的资料,写成这样 url = jdbc:mysql://127.0.0.1,192.168.20.211/dbName仅仅只是用逗号 分隔开 , 那是肯定不行的,当写在jdbc url地址中前一台的数据库(127.0.0.1)down掉以后,就算你重新启动还是会出现 org.apache.jasper.JasperException: java.lang.NullPointerException 空指针异常,如图所示
http://public.bay.livefilestore.com/y1p6uh5d_sMRfrT1hDVDnzs53_p41YNSRHbZlu4Ng43R4FdIebI1MtUENYBn-PN0inhz6aGR5_xVc0G6ahK61QbRQ/jdbc-cluster-err.jpg?psid=1

查看大图请点击这里

采用较新版本的 mysql-connector-java-5.1.6.jar  MySQL JDBC 驱动,再将url写成这样url=jdbc:mysql:loadbalance://127.0.0.1,192.168.20.249/dbName
会将访问的压力分载到 127.0.0.1,192.168.20.211 2个机器上,还可以加上roundRobinLoadBalance=true参数,使用roundRobin算法,若是其中一台机器down掉以后,将 会自动将不能访问的数据库服务器 踢除,如果还原后将继续进行压力分载。

测试方案:
1、你可以找2台数据库,保证这2台数据库的用户名和密码一致,然后建立2张同样的表,里面插入不同的数据,再通过web程序调用,你不断的刷新页面你将会看见 显示不同的数据,这样就说明 压力被分载到不同的数据库服务器上了。
 
2、再将关闭其中一台服务器,看看是不是会 剔除 被关闭的那台机器直接访问目前活动的那台。

3、如果再恢复,MySQL JDBC 驱动将会帮你 继续分载压力,呵呵。

口水:
Mysql JDBC 驱动的版本也非常的重要 ,建议使用 mysql-connector-java-5.1.6.jar 或者以上的版本。

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics