Java程序訪問Mysql Cluster
針對我們上文雙機冗余備份和負載均衡策略(Mysql Cluster入門安裝配置指南)中配置好的mysql集群,我們應當下面就創建數據庫,利用Mysql Cluster來進行冗余備份和負載均衡,
在192.168.56.10或者192.168.56.20任意一臺機器上,訪問數據庫,命令為:
1 bin/mysql
比如現在我在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;
只有這樣子,這兩臺機器才能共享數據庫的數據結構,此時在另外一臺機器上面,執行命令:
1 show tables
就可以看到我們創建的這張表。
那么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不一樣,才會造成這個問題的。