针对我们上文双机冗余备份和负载均衡策略(Mysql Cluster入门安装配置指南)中配置好的mysql集群,我们应当下面就创建数据库,利用Mysql Cluster来进行冗余备份和负载均衡,
在192.168.56.10或者192.168.56.20任意一台机器上,访问数据库,命令为:
比如现在我在192.168.56.10机器上面创建数据库assetscenterdb,执行命令:
1 create database assetscenterdb
创建成功之后,在192.168.56.20的机器上面就可以看到我们创建的这个数据库,接下来我们要创建数据库表,
这里我们注意数据库表的ENGINE是ndb,比如说数据库里面我的一个表结构这个样子:
1 CREATE TABLE `AC_ASSET` (
2 `ID` int(11) NOT NULL AUTO_INCREMENT,
3 `TYPE_ID` int(11) NOT NULL,
4 `STATUS` tinyint(4) NOT NULL,
5 `SN` varchar(50) DEFAULT NULL,
6 `DESCRIPTION` text,
7 `ELTMS` varchar(50) DEFAULT NULL,
8 `ORDER_NAME` varchar(50) DEFAULT NULL,
9 `OWNER_NAME` varchar(50) DEFAULT NULL,
10 `WAREHOUSE_TIME` varchar(50) DEFAULT NULL,
11 `LOCATION` varchar(100) DEFAULT NULL,
12 `PRICE` double DEFAULT NULL,
13 `USER_NAME` varchar(50) DEFAULT NULL,
14 PRIMARY KEY (`ID`)
15 ) ENGINE=ndb AUTO_INCREMENT=1726 DEFAULT CHARSET=utf8;
只有这样子,这两台机器才能共享数据库的数据结构,此时在另外一台机器上面,执行命令:
就可以看到我们创建的这张表。
那么Java程序如何访问呢,我采用的Jdbc驱动为mysql-connector-5.1.12,连接串如下:
1 jdbc:mysql:loadbalance://192.168.56.10:3306,192.168.56.20:3306/assetscenterdb?roundRobinLoadBalance=true
使用roundRobin算法,若是其中一台机器down掉以后,将会自动将不能访问的数据库服务器 踢除,如果还原后将继续进行压力分载。
其余的数据库操作就和普通的一样。
接下来我们还需要配置数据库允许远程访问,比如我把服务器放在192.168.56.30机器上面,我需要在另外两台机器上面分别配置:
1 grant all on *.* to root@"192.168.56.30" Identified by "你的密码"
然后你运行服务器就可以正常访问了。
如果此时你的程序还不能正常访问,那么你就需要看我这一篇博文Mysql数据库“ERROR 1042 (HY000): Can't get hostname for your address”问题,
因为我就遇到了这种问题,我本地用上述配置就可以了,可是我把机器放到LAB中去了,mysql连接不上了,出现了ERROR 1042 (HY000): Can't get hostname for your address错误,
可能就是mysql的DNS解析除了问题,我的本地环境和Lab的DNS不一样,才会造成这个问题的。