針對我們上文雙機冗餘備份和負載平衡策略(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不一樣,才會造成這個問題的。