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,执行命令:
[color=red][b]create database assetscenterdb[/b][/color]
创建成功之后,在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;
只有这样子,这两台机器才能共享数据库的数据结构,此时在另外一台机器上面,执行命令:
[quote]show tables[/quote]
就可以看到我们创建的这张表。
那么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掉以后,将会自动将不能访问的数据库服务器 踢除,如果还原后将继续进行压力分载。
参考:
[url]http://www.blogjava.net/smalldirector/archive/2011/12/28/367547.html[/url]
如果在mysql集群搭建的时候,没有配置各节点的主从关系,那么这些节点都是平等的,就用 jdbc:mysql:loadbalance: 这种方式操作集群数据库.
如果mysql集群搭建的时候,指定了主从关系,java程序端需要连接到master库上,因为slave库只是readonly的,不可以写操作
参考:[url]https://zhidao.baidu.com/question/616362483677110132.html[/url]
MySQL 数据库的读写分离和负载均衡一般是通过第三方软件来实现的。 也可以通过mysql驱动程序来实现,如com.mysql.jdbc.ReplicationDriver。
详细文档参见:http://dev.mysql.com/doc/refman/5.5/en/connector-j-info.html
参考:[url]http://blog.csdn.net/orion61/article/details/44975181[/url]
java 程序连接集群的配置地址:
[url]http://dev.mysql.com/doc/connector-j/5.1/en/connector-j-master-slave-replication-connection.html[/url]