一.集群連接狀態測試
首先,我們回到管理節點(mysql-mgm.mtest.com)上。在該服務器上,執行下面的命令:
$ ndb_mgm
命令執行後,就會進入MGM的客戶端界面,並顯示mgm提示符:
-- NDB Cluster -- Management Client --
ndb_mgm>
在該提示符下,輸入show命令,來查看當前連接狀態:
ndb_mgm> show
在正常情況下,應該顯示如下內容:
從上述內容我們可以看到,兩個NDB節點192.168.1.13和192.168.1.14都已經連接到管理節點上來了。配置成功!
執行quit或者exit命令,退出MGM客戶端:
ndb_mgm> quit
現在,讓我們來看看集群在數據存儲方面是否正常。我們將分別在兩個存儲節點上進行數據操作。
1.數據同步測試
首先,我們在節點mysql-data1.mytest.com上,創建一個數據庫,並插入一行數據。
$ mysql -u root -p
輸入密碼後,就進入了MySQL客戶端的命令行界面。在該界面中,輸入如下命令:
上述命令創建了一個叫做clustertest的數據庫,在該數據庫中創建了一個名為testtable的表,該表的類型為NDBCLUSTER,也就是采用NDBCLUSTER作為數據庫引擎。該表中有一個字段叫做Count。我們還向該表插入了一條數據,其Count字段的值為1。
現在,我們再到mysql-data2.mytest.com節點上,創建一個同名的數據庫。我們僅需要創建數據庫,然後,該數據庫的所有數據都會自動復制過來。
$ mysql -u root -p
輸入密碼後,就進入了MySQL客戶端的命令行界面。在該界面中,輸入如下命令:
看到了吧,數據已經從mysql-data1.mytest.com復制到mysql-data2.mytest.com這個節點上了。
現在,我們在mysql-data2.mytest.com上,再向數據庫插入一條數據:
mysql> INSERT INTO testtable () VALUES (2);
Query OK, 1 row affected (0.23 sec)
mysql> quit
Bye
數據插入後,我們回到mysql-data1.mytest.com上,看看數據是否同步過去了:
很好!在mysql-data1.mytest.com上也能查到該數據。
也就是說,兩個NDB節點,始終會保持互相同步,保持相同的數據。
2.故障模擬測試
假如兩個NDB節點當中的一個發生故障,會怎麼樣呢?另一個節點上面的數據能夠查詢得到嗎?現在我們來測試一下。
首先,我們把mysql-data1.mytest.com節點上的ndb服務停掉,來看看在另外一個節點mysql-data2.mytest.com上還能不能查到完整的數據。
在mysql-data1.mytest.com上執行命令:
$ sudo /etc/init.d/mysql-ndb stop
然後,到管理節點mysql-mgm.mytest.com上確認一下集群的連接狀態:
可以看到,192.168.1.13這個NDB節點(mysql-data1.mytest.com)確實已經斷開連接了。輸入quit或者exit命令退出MGM界面:
ndb_mgm> quit
現在,我們在mysql-data2.mytest.com上看看是否還能查詢數據:
$ mysql -u root -p
輸入密碼後,就進入了MySQL客戶端的命令行界面。在該界面中,輸入如下命令:
很好,在mysql-data1.mytest.com節點發生故障時,在mysql-data2.mytest.com節點上仍然可以工作。
我們再向mysql-data2.mytest.com的數據庫中插入一條數據:
現在,我們重新啟動mysql-data1.mytest.com,看看剛才插入的數據能否查到:
$ sudo /etc/init.d/mysql-ndb start
$ mysql -u root -p
輸入密碼後,就進入了MySQL客戶端的命令行界面。在該界面中,輸入如下命令:
非常好!這說明,如果有NDB節點發生故障,故障期間在其他NDB節點上新插入的數據,在故障節點恢復後,仍然可以成功地進行數據同步。