Java程序访问Mysql Cluster

jdbc:mysql://[host:port],[host:port].../[database][?propertyName1][=propertyValue1][&propertyName2][=propertyValue2]...


例如:
jdbc:mysql://host1:3306,host2:3307,host3:3308/test?user=root&password=root&autoReconnect=true&failOverReadOnly=false


在192.168.56.10或者192.168.56.20任意一台机器上,访问数据库,

比如现在我在192.168.56.10机器上面创建数据库assetscenterdb,执行命令:
create database assetscenterdb

创建成功之后,在192.168.56.20的机器上面就可以看到我们创建的这个数据库,接下来我们要创建数据库表,

这里我们注意数据库表的ENGINE是ndb,比如说数据库里面我的一个表结构这个样子:

CREATE TABLE `AC_ASSET`(`ID` int(11) NOT NULL AUTO_INCREMENT,
`TYPE_ID` int(11) NOT NULL,
`STATUS` tinyint(4) NOT NULL,
`SN` varchar(50) DEFAULT NULL,
`DESCRIPTION` text,
`ELTMS` varchar(50) DEFAULT NULL,
`ORDER_NAME` varchar(50) DEFAULT NULL,
`OWNER_NAME` varchar(50) DEFAULT NULL,
`WAREHOUSE_TIME` varchar(50) DEFAULT NULL,
`LOCATION` varchar(100) DEFAULT NULL,
`PRICE` double DEFAULT NULL,
`USER_NAME` varchar(50) DEFAULT NULL,
PRIMARY KEY (`ID`)) 
ENGINE=ndb AUTO_INCREMENT=1726 DEFAULT CHARSET=utf8;


只有这样子,这两台机器才能共享数据库的数据结构,此时在另外一台机器上面,执行命令:

引用
show tables

就可以看到我们创建的这张表。

那么Java程序如何访问呢,我采用的Jdbc驱动为mysql-connector-5.1.12,连接串如下:

jdbc:mysql:loadbalance://192.168.56.10:3306,192.168.56.20:3306/assetscenterdb?roundRobinLoadBalance=true

使用roundRobin算法,若是其中一台机器down掉以后,将会自动将不能访问的数据库服务器 踢除,如果还原后将继续进行压力分载。


参考:
http://www.blogjava.net/smalldirector/archive/2011/12/28/367547.html


如果在mysql集群搭建的时候,没有配置各节点的主从关系,那么这些节点都是平等的,就用 jdbc:mysql:loadbalance: 这种方式操作集群数据库.

如果mysql集群搭建的时候,指定了主从关系,java程序端需要连接到master库上,因为slave库只是readonly的,不可以写操作
参考: https://zhidao.baidu.com/question/616362483677110132.html


MySQL 数据库的读写分离和负载均衡一般是通过第三方软件来实现的。 也可以通过mysql驱动程序来实现,如com.mysql.jdbc.ReplicationDriver。

详细文档参见:http://dev.mysql.com/doc/refman/5.5/en/connector-j-info.html

参考: http://blog.csdn.net/orion61/article/details/44975181

java 程序连接集群的配置地址:
http://dev.mysql.com/doc/connector-j/5.1/en/connector-j-master-slave-replication-connection.html

猜你喜欢

转载自rd-030.iteye.com/blog/2348795