Linux下構建MySQL叢集
一、目標
1.安裝MySQL-Cluster相關軟體包。
2.依次組態管理/資料/SQL節點。
3.啟動並測試MySQL-Cluster叢集架構。
二、方案
使用6台RHEL 6.5虛擬機器,。其中sql1和sql2作為SQL節點,ndb1和ndb2作為資料節點,mgmsvr作為管理節點,這5個構成MySQL叢集體系的5個節點應安裝Cluster版的MySQL相關軟體包;測試用的Linux客戶機只需安裝普通版的MySQL-client即可。
--------------------------------------分割線 --------------------------------------
Ubuntu 14.04下安裝MySQL
《MySQL權威指南(原書第2版)》清晰中文掃描版 PDF
Ubuntu 14.04 LTS 安裝 LNMP Nginx\PHP5 (PHP-FPM)\MySQL
Ubuntu 14.04下搭建MySQL主從伺服器
Ubuntu 12.04 LTS 構建高可用分布式 MySQL 叢集
Ubuntu 12.04下原始碼安裝MySQL5.6以及Python-MySQLdb
MySQL-5.5.38通用二進位安裝
--------------------------------------分割線 --------------------------------------
三、實現
1、準備工作
1)確認各節點伺服器的IP地址,使各節點能互連,防火牆和selinux處於關閉狀態。
關閉防火牆:
# iptables -F //清空防火牆條目
# service iptables stop //關閉防火牆
# chkconfig iptables off //開機不自啟
關閉selinux:
vim開啟 /etc/selinux/config修改SELINUX=disabled
# getenforce 0
2)卸載所有節點上的衝突包
官方提供的MySQL-Cluster相關軟體包(可在這裡獲得 http://pan.baidu.com/s/1pJv46j5 )已整合資料庫服務端/用戶端程式,因此可直接用來替換普通的MySQL服務端/用戶端程式。如果已安裝有普通版的mysql-server、mysql、MySQL-server、MySQL-client包,先將其卸載(若沒有則忽略):
# rpm -qa | grep -i mysql //檢查有沒有安裝普通版的mysql軟體
對於RHEL內建的mysql-libs暫時保留(如果直接卸載會因為依賴關係刪除許多重要的包,比如crontab、postfix等),但在安裝MySQl-Cluster相關包的時候採用“-U”升級的方式執行替換。
# rpm -e --nodeps MySQL-client
如果有殘留的/etc/my.cnf檔案,確保已轉移備用或直接刪除。
# mv /etc/my.cnf /etc/my.cnf.bak
3)在所有節點上,解壓下載的MySQL-Cluster集合包
# tar xvf MySQL-Cluster-gpl-7.3.3-1.el6.x86_64.rpm-bundle.tar
MySQL-Cluster-shared-gpl-7.3.3-1.el6.x86_64.rpm
MySQL-Cluster-shared-compat-gpl-7.3.3-1.el6.x86_64.rpm //安裝共用庫和相容包
MySQL-Cluster-server-gpl-7.3.3-1.el6.x86_64.rpm //安裝服務端程式
MySQL-Cluster-client-gpl-7.3.3-1.el6.x86_64.rpm //安裝用戶端程式
MySQL-Cluster-test-gpl-7.3.3-1.el6.x86_64.rpm
MySQL-Cluster-devel-gpl-7.3.3-1.el6.x86_64.rpm
MySQL-Cluster-embedded-gpl-7.3.3-1.el6.x86_64.rpm
在SQL節點(sql1、sql2)伺服器上,修改MySQL資料庫的root密碼:
[root@sql1 ~]# service mysql start //啟動MySQL服務程式
Starting MySQL... [確定]
[root@sql2 ~]# cat /root/.mysql_secret
# The random password set for the root user at Wed Sep 3 21:04:20 2014 (local time): msA7Bq2B
[root@sql1 ~]# mysql –u root –pmsA7Bq2B //以上述預設密碼登入
mysql> set password=password("123456");
Query OK, 0 rows affected (0.17 sec)
在資料節點(ndb1、ndb2)和管理節點(mgmsvr)上,實際上並不需要啟動MySQL服務程式,因此建議將mysql服務的自啟狀態設為關閉
[root@ndb1 ~]# chkconfig mysql off
4)在sql節點添加授權資料庫使用者
在SQL節點(sql1、sql2)伺服器上,添加相應的授權資料庫使用者,以方便用戶端使用資料庫服務。以使用者user為例,允許其從192.168.4.0/24網段訪問:
mysql> grant all on *.* to user@'192.168.4.%' identified by "123456";
Query OK, 0 rows affected (0.03 sec)
2、組態管理節點mgmsvr(192.168.4.3)
1)建立工作資料夾
為管理節點提供一個工作目錄,方便記錄mysql叢集相關的日誌訊息:
[root@mgmsvr ~]# mkdir /var/log/mysql-cluster
2)建立設定檔
在管理節點的設定檔中,應涵蓋所有節點的設定,主要包括各節點的ID號、主機名稱或IP地址、工作目錄等資訊。
針對本實驗,管理節點的配置參考如下:
[root@mgmsvr ~]# cat /etc/config.ini //檔案名稱可以隨意
[ndbd default] //為所有的節點指定預設配置
NoOfReplicas=2//保留2份資料拷貝
DataMemory=80M//資料緩衝大小
IndexMemory=18M//索引緩衝大小
[ndb_mgmd]//指定一個管理節點的配置,可以有多個管理節點
nodeid=3//節點的id號,作為節點的唯一識別碼,不可以與其他節點相同
hostname=192.168.4.3 //節點的ip地址
datadir=/var/log/mysql-cluster //該管理節點的工作目錄
[ndbd]//指定資料節點的配置,每個資料節點對應一個ndbd配置
nodeid=4
hostname=192.168.4.4
datadir=/var/log/mysql-cluster/data
[ndbd]
nodeid=5
hostname=192.168.4.5
datadir=/var/log/mysql-cluster/data
[mysqld]//指定SQL節點的配置,每個SQL節點對應一個配mysqld置
nodeid=6
hostname=192.168.4.6
[mysqld]
nodeid=7
hostname=192.168.4.7
更多詳情見請繼續閱讀下一頁的精彩內容: