為了安裝這個cluster,研究了2天才徹底搞定,因此將此次研究經驗記錄下來供大家參考學習,避免重複走彎路,安裝分為如下幾個階段:
環境說明: CentOs6.5 + MySQL-Cluster 7.3.4 (最新GA版本),規劃2台機器,一台做控制伺服器 + 負載平衡伺服器 + 資料節點伺服器, 另一台做 負載平衡伺服器 + 資料節點伺服器;
一、下載,這裡為了方便安裝過程,這裡直接使用了RPM包來安裝,避開了編譯安裝的痛苦:
首先先到www.msyql.com下載如下的RPM安裝包 (http://dev.mysql.com/downloads/cluster/),記得選擇 Red Hat Enterprise Linux/Oracle Linux 下面的 MySQL-Cluster-gpl-7.3.4-1.el6.x86_64.rpm-bundle.tar 這個安裝包,避免一個接一個下載的痛苦;
二、環境清理以及安裝:
1. mysql舊版本清除:
首先使用如下命令來清理之前作業系統內建的mysql安裝:yum -y remove mysql
然後使用如下命令:
rpm -qa | grep mysql*
對於找到的2個剩餘mysql包,請按照如下的命令格式予以刪除:
rpm -e --nodeps mysql-libs-5.1.71-1.el6.x86_64
2. mysql cluster版本安裝準備:將MySQL-Cluster-gpl-7.3.4-1.el6.x86_64.rpm-bundle.tar放到某個目錄下(譬如/package) 下面,並且執行如下命令解壓:
tar -xvf MySQL-Cluster-gpl-7.3.4-1.el6.x86_64.rpm-bundle.tar
得到如下檔案清單:
MySQL-Cluster-client-gpl-7.3.4-1.el6.x86_64.rpm
MySQL-Cluster-devel-gpl-7.3.4-1.el6.x86_64.rpm
MySQL-Cluster-embedded-gpl-7.3.4-1.el6.x86_64.rpm
MySQL-Cluster-server-gpl-7.3.4-1.el6.x86_64.rpm
MySQL-Cluster-shared-compat-gpl-7.3.4-1.el6.x86_64.rpm
MySQL-Cluster-shared-gpl-7.3.4-1.el6.x86_64.rpm
MySQL-Cluster-test-gpl-7.3.4-1.el6.x86_64.rpm
3. mysql cluster版本安裝:
建立檔案夾(分如下3個類來建立對應的檔案夾)
儲存節點:mkdir /var/lib/mysql/data
管理節點:mkdir /var/lib/mysql-cluster SQL節點:可不用 檔案夾授權
進程DIR: mkdir /var/run/mysqld
使用如下的命令來變更許可權保證可寫入:
chmod -R 1777 /var/lib/mysql
chmod -R 1777 /var/run/mysqld
chmod -R 1777 /var/lib/mysql-cluster
rpm -ivh MySQL-Cluster-server-gpl-7.3.4-1.el6.x86_64.rpm
rpm -ivh MySQL-Cluster-client-gpl-7.3.4-1.el6.x86_64.rpm
特別注意,當安裝完畢server gpl包後,將出現如下提示資訊,提醒我們整個cluster安裝後的初次超級賬戶密碼存在/root/.mysql_secret這個檔案當中。
---------------------------------------------------------------------------------------------------------------------
A RANDOM PASSWORD HAS BEEN SET FOR THE MySQL root USER !
You will find that password in '/root/.mysql_secret'.
You must change that password on your first connect,
no other statement but 'SET PASSWORD' will be accepted.
See the manual for the semantics of the 'password expired' flag.
Also, the account for the anonymous user has been removed.
In addition, you can run:
/usr/bin/mysql_secure_installation
which will also give you the option of removing the test database.
This is strongly recommended for production servers.
---------------------------------------------------------------------------------------------------------------------
4. 設定檔撰寫與調整:
cd /var/lib/mysql-cluster
vi config.ini
---------------------------------------------------------------------------------------------------------------------------
[computer]
Id=mgr-server-01
HostName=10.10.0.1
[mgm default]
datadir=/var/lib/mysql-cluster
[mgm]
HostName=10.10.0.1
NodeId=60
ExecuteOnComputer=mgr-server-01
PortNumber=1186
ArbitrationRank=2
[ndbd default]
NoOfReplicas=2
DataMemory=8G
IndexMemory=2G
[ndbd]
HostName=10.10.0.1
DataDir=/var/lib/mysql
NodeId=1
[ndbd]
HostName=10.10.0.2
DataDir=/var/lib/mysql
NodeId=2
[mysqld]
HostName=10.10.0.1
NodeId=81
[mysqld]
HostName=10.10.0.2
NodeId=82
---------------------------------------------------------------------------------------------------------------------------
5. 配置Mysql檔案:
vi /etc/my.cnf
[client]
socket=/var/lib/mysql/mysql.sock
[mysqld]
max_connections=100
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
ndbcluster
ndb-connectstring=10.10.0.1
[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
[mysql_cluster]
ndb-connectstring=10.10.0.1
---------------------------------------------------------------------------------------------------------------------------
三、SQL Cluster初次啟動命令以及使用者密碼更改調整:(請嚴格按照次序啟動)
執行初次啟動前請先確認 將兩台機器的防火牆關閉(service iptables stop 或者 設定 防火牆連接埠可通,兩個連接埠即通訊連接埠1186、資料連接埠3306 )
初次啟動mgt console命令:ndb_mgmd -f /var/lib/mysql-cluster/config.ini
啟動均衡節點命令: ndbd --initial
啟動資料節點命令: mysqld_safe --defaults-file=/etc/my.cnf --explicit_defaults_for_timestamp &
注意在啟動過程中需要監測整個控制台輸出,發現有錯誤資訊需要及時解決,根據錯誤記錄檔內容來解決。
---------------------------------------------------------------------------------------------------------
如果一起正常,使用如下命令將Management console開啟: ndb_mgm
輸入: show
ndb_mgm> show
Cluster Configuration
---------------------------------------------------------------------------------------------------------
[ndbd(NDB)] 2 node(s)
id=1 @10.x.0.1 (mysql-5.6.15 ndb-7.3.4, Nodegroup: 0, *)
id=2 @10.x.0.2 (mysql-5.6.15 ndb-7.3.4, Nodegroup: 0)
[ndb_mgmd(MGM)] 1 node(s)
id=60 @10.x.0.1 (mysql-5.6.15 ndb-7.3.4)
[mysqld(API)] 2 node(s)
id=81 @10.x.0.1 (mysql-5.6.15 ndb-7.3.4)
id=82 @10.x.0.2 (mysql-5.6.15 ndb-7.3.4)
---------------------------------------------------------------------------------------------------------
修正密碼:
當mysqld 啟動完畢正常後(可以使用pgrep mysqld來擷取進程ID),我們可以使用如下命令修改:
mysql -u root -p;
隨機密碼(具體請參見/root/.mysql_secret檔案擷取),進入後使用如下指令修改密碼:
SET PASSWORD = PASSWORD('新密碼');
幾台裝有SQL資料節點的伺服器皆需要執行一遍上述命令;
---------------------------------------------------------------------------------------------------------
四、Cluster效果測試:
使用mysql -u root -p 密碼;
輸入對應的密碼後登陸到系統,按照如下命令開始建立database;
create database clustertest;
use clustertest;
CREATE TABLE testtable(Count INT) ENGINE=NDBCLUSTER;
特別注意,只有使用了NDBCluster引擎的表才會執行同步操作,因此特別需要在上述表加入這個尾碼;
---------------------------------------------------------------------------------------------------------
五、關閉Cluster:(需要嚴格按照次序執行)
關閉資料節點:mysqld stop (SQL節點可以用mysqladmin shutdown或別的方式關閉。)
在管理節點上執行:shell> ndb_mgm -e shutdown
將安全的關閉管理節點和資料節點。
關閉後使用如下的進程檢測命令查看一下是否退出來了:
pgrep mysqld
ps aux | grep nbdb
如果沒有,找到對應的pid進行kill 操作即可。
六、再次啟動Cluster方案:
啟動整個cluster的次序:
ndb_mgmd -f /var/lib/mysql-cluster/config.ini
ndbd
mysqld_safe --defaults-file=/etc/my.cnf --explicit_defaults_for_timestamp &
---------------------------------------------------------------------------------------------------------------------
雜記:
防火牆策略調整: iptables -A INPUT -s 192.168.100.0/24 -i eth2 -p tcp -m tcp -j ACCEPT
修改密碼方法一:
mysqladmin -u root password root (更改密碼) (沒有新密碼前執行)
mysqladmin -u root -p 'xxxxxx' password 'NewPassword'; (安裝完畢後啟動mysqld執行)
修改密碼方法二:
UPDATE mysql.user SET Password=PASSWORD('Password01!') WHERE User='root';
FLUSH PRIVILEGES;
修改密碼方法三:
讓mysql以不帶安全控制的方式啟動:
mysqld_safe --user=mysql --skip-grant-tables --skip-networking;
然後再用前面2種方法修改密碼;
------------------------------------------------------------------------------------------------------------