mysql cluster第一次嘗試
1.本人一開始是想用主從一致來作為資料庫基礎的,後來發現主從一致,如果他們之間的通訊斷了,對整個系統來說是致命的。之前的方案是資料庫讀寫分離。現在的方案是資料庫叢集,其實他們之間的聯絡也是主從一致,但是數量比較多,而且當其中一個斷了聯絡之後,可以在下次連線的時候進行恢復。然後我選擇的是mysql cluster
2.期間參照很多部落格:http://blog.csdn.net/l1028386804/article/details/53074306,http://www.linuxidc.com/Linux/2016-02/128056.htm,https://segmentfault.com/a/1190000003715950?_ea=338410
其實裡面寫了都差不多,然後我自己總結歸納一下
3.我用的是2臺虛擬機器(ubuntu)
192.168.0.106管理節點,還有資料節點
192.168.0.107資料節點
4.先使用root的身份,sudo su,輸入密碼進入
然後都要關閉防火牆,ufw disable
5.解除安裝本地的mysql,因為我們要下載另一個自帶mysql的,不然會衝突
6.解壓gz
注意了,第二步很關鍵,因為mysql在linux系統裡面是預設存在/usr/local/mysql裡面的cd /root/Downloads tar -xvzf mysql-cluster-gpl-7.3.4-linux-glibc2.5-x86_64.tar.gz mv mysql-cluster-gpl-7.3.4-linux-glibc2.5-x86_64 /usr/local/mysql
7.建立mysql使用者
useradd mysql
chown -R mysql:mysql /usr/local/mysql/
安裝mysql
cd /usr/local/mysql/scripts
./mysql_install_db --basedir=/usr/local/mysql/ --datadir=/usr/local/mysql/data/ --user=mysql
8.配置管理節點
mkdir /var/lib/mysql-cluster cd /var/lib/mysql-cluster gedit config.ini
配置完安裝管理節點
cp /usr/local/mysql/bin/ndb_mgm* /usr/local/bin
cd /usr/local/bin
chmod +x ndb_mgm*
叢集的很多東西都和ndb_mgm*有關,然後上面這樣做是為了可以直接在命令列呼叫ndb_mgm等等命令,不用每次都cd到相應的檔案再./ndb_mgm等等
啟動管理節點
ndb_mgmd -f /var/lib/mysql-cluster/config.ini
如果有修改要
ndb_mgmd -f /var/lib/mysql-cluster/config.ini --reload
下面從其他部落格截圖的,就舉個例子
如果裡面有出現error的,是config.ini這配置檔案出錯,自己改改。其他的warning都是沒問題的
檢視1186埠是否已經開啟,開啟表示你之前的東西都ojbk了。
# netstat -langput | grep mgm
tcp 0 0 0.0.0.0:1186 0.0.0.0:* LISTEN 3427/ndb_mgmd
tcp 0 0 127.0.0.1:45251 127.0.0.1:1186 ESTABLISHED 3427/ndb_mgmd
tcp 0 0 127.0.0.1:1186 127.0.0.1:45251 ESTABLISHED 3427/ndb_mgmd
下面是用ndb_mgm -e show顯示叢集的狀態(旁白:抄襲的,就舉個例子而已)
9.配置資料節點
資料庫預設的配置檔案儲存在/etc/my.cnf
所以配置my.cnf
[mysqld]
ndbcluster
datadir=/usr/local/mysql/data
basedir=/usr/local/mysql
socket=/tmp/mysql.sock
port=3306
ndb-connectstring=192.168.0.106 ---管理節點ip
[mysql_cluster]
ndb-connectstring=192.168.0.106 ---管理節點ip
注意了上面datadir要根據自己實際去修改哦
啟動資料節點(這個是在之前下載了mysql cluster等等操作之後才做的)
/usr/local/mysql/bin/ndbd --initial
會顯示上面類似這樣的圖案,如果顯示retry 然後12 11 10 。。。這樣是你這個管理節點的1186埠沒有開啟,自己百度
上面的意思是什麼,是這個資料節點在管理節點裡面配置是id=3,然後啟動了
如果你跟我一樣把管理節點作為資料節點,那麼管理節點也要 執行
/usr/local/mysql/bin/ndbd --initial
啟動sql節點的是
/usr/local/mysql/bin/mysqld_safe --user=mysql &
我沒試過,你們自己玩
10.管理節點可以看下叢集的狀態
ndb_mgm -e show
注意瞭如果裡面顯示starting,證明還在啟動,或者操作錯誤。要用上面說的啟動,才會連線
11.最後是你們自己去連線資料庫試下是不是會同步。然後我發現在管理節點的不會同步到資料節點,資料節點的會管理節點。也不知道對不對,自己試試。還有注意建立資料表的時候要用engine=ndbcluster,才會同步起來。這個很重要哦
然後有關bug或者知識充電的
在安裝mysql的時候回出現少了個libaio.so.1,
sudo apt-get install libaio-dev
用上面這個解決
這個是手動安裝mysql,沒有給你中途去設定密碼的。你用mysql -u root mysql
可以直接進去mysql,然後
update user set password=password('密碼');
flush privileges
第二個是使得修改生效
mysql -uroot -p
輸入自己剛剛設定的密碼進去了。enjoy it