MySQL JDBC 集群
如果按照网上大部分提供的资料,写成这样 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 空指针异常,如图所示
采用较新版本的 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 或者以上的版本。