標籤:host 32位 install aries glib init.d 啟動順序 sock value
原文:http://lizhenliang.blog.51cto.com/7876557/1290451
Linux最新版本7.3.2
| 檔案 |
大小 |
md5 |
| mysqlcluster-7.3.2-linux-x32.tar.gz |
431.0MB |
03093541b6416fc93935750d614d875b |
| mysqlcluster-7.3.2-linux-x64.tar.gz |
441.8MB |
330c71a87fbf8f0468ec9c5e0ad6e794 |
官方:http://dev.mysql.com/downloads/cluster/
Window最新版本7.3.2
| 檔案 |
大小 |
md5 |
| mysqlcluster-7.3.2-windows-x32.msi |
100.2MB |
9d25735d7e8af1a2e805f9a1fecc3a1f |
| mysqlcluster-7.3.2-windows-x64.msi |
95.5MB |
6fe30e2045f074f471761cb17f0c3d1c |
基本概念:
“NDB” 是一種“記憶體中”的儲存引擎,也是事務型儲存引擎,具備ACID屬性。
管理(MGM)節點:負責管理MySQL Cluster內的其他節點,如提供配置資料、啟動並停止節點、運行備份等。由於這類節點負責管理其他節點的配置,應在啟動其他節點之前首先啟動這類節點。MGM節點是用命令“ndb_mgmd”啟動的。
資料節點:用於儲存 Cluster的資料。資料節點的數目與副本的數目相關,是片段的倍數。資料節點是用命令“ndbd”啟動的。
SQL節點:用來訪問 Cluster資料的節點。也就是Mysql服務,可以使用service mysqld start啟動。
管理伺服器(MGM節點)負責管理 Cluster設定檔和 Cluster日誌。 Cluster中的每個節點從管理伺服器檢索配置資料,並請求確定管理伺服器所在位置的方式。當資料節點內出現新的事件時,節點將關於這類事件的資訊傳輸到管理伺服器,然後,將這類資訊寫入 Cluster日誌。
叢集配置概述:
安裝版本:mysql cluster 7.3.2
作業系統 :centos6.3(X64)
軟體名稱 :mysql-cluster-gpl-7.3.2-linux-glibc2.5-x86_64.tar.gz (通用版)
管理節點IP:192.168.0.202
資料節點-SQL節點IP:192.168.0.203
資料節點-SQL節點IP:192.168.0.204
安裝依賴包:yum install -y glibc perl libaio-devel
x32位系統要安裝相容庫組:yum groupinstall “Compatibility libraries”
一、管理節點安裝配置
1、安裝mysql-cluster
groupadd mysqluseradd -g mysql -s /sbin/nologin mysqltar -zxvf mysql-cluster-gpl-7.3.2-linux-glibc2.5-x86_64.tar.gzmv mysql-cluster-gpl-7.3.2-linux-glibc2.5-x86_64 /usr/local/mysql-clusterchown -R root.mysql /usr/local/mysql/chown -R mysql.mysql /usr/local/mysql/data//usr/local/mysql/scripts/mysql_install_db --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data --user=mysql & #初始化資料庫cp -rf /usr/local/mysql/bin/ndb_mgm* /usr/local/bin/ #複製ndb節點管理命令到本地,方便使用
2、修改mysql主設定檔
vi /etc/my.cnf[MYSQLD] user = mysql socket = /tmp/mysql.sock basedir = /usr/local/mysql #安裝目錄 datadir = /usr/local/mysql/data #資料庫存放目錄 character-set-server=UTF8 ndbcluster #運行NDB儲存引擎 ndb-connectstring=192.168.0.202 lower_case_table_names=1 #表名是否區分大小寫1為不區分,不然linux下表名是區分大小寫[MYSQL_CLUSTER]ndb-connectstring=192.168.0.202 #Mysql Cluster管理節點IP
3、建立mysql叢集設定檔
mkdir /var/lib/mysql-clustervi /var/lib/mysql-cluster/config.ini[ndbd default]NoOfReplicas=2 #定義在Cluster環境中相同資料的份數,最大為4DataMemory=256M #分配的資料記憶體大小,根據本機伺服器記憶體適量來分配IndexMemory=256M #設定用於存放索引(非主鍵)資料的記憶體段大小#一個NDB節點能存放的資料量是會受到DataMemory和IndexMemory兩個參數設定的約束,兩者任何一個達到限制數量後,都無法再增加能儲存的資料量。如果繼續存入資料系統會報錯“table is full”。[ndb_mgmd]nodeid=1hostname=192.168.0.202datadir=/var/lib/mysql-cluster/[ndbd]nodeid=2hostname=192.168.0.203datadir=/usr/local/mysql/data[ndbd]nodeid=3hostname=192.168.0.204datadir=/usr/local/mysql/data[mysqld]nodeid=4hostname=192.168.0.203[mysqld]nodeid=5hostname=192.168.0.204儲存退出!chown mysql.mysql /var/lib/mysql-cluster/config.ini
二、兩台資料節點和SQL節點配置相同
1、安裝mysql-cluster
tar -zxvf mysql-cluster-gpl-7.3.2-linux-glibc2.5-x86_64.tar.gzmv mysql-cluster-gpl-7.3.2-linux-glibc2.5-x86_64 /usr/local/mysqlgroupadd mysqluseradd -g mysql -s /sbin/nologin mysqlchown -R root.mysql /usr/local/mysqlchown -R mysql.mysql /usr/local/mysql/data/usr/local/mysql/scripts/mysql_install_db --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data --user=mysql & #初始化資料庫cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqldcp /usr/local/mysql/support-files/medium.cnf /etc/my.cnfchmod +x/etc/init.d/mysqld
2、修改mysql設定檔
vi /etc/my.cnf[MYSQLD]user=mysqlcharacter_set_server=utf8ndbclusterndb-connectstring=192.168.0.202default-storage-engine=ndbcluster #設定預設是NDB儲存引擎datadir=/usr/local/mysql/databasedir=/usr/local/mysql[MYSQL_CLUSTER]ndb-connectstring=192.168.0.202 #mysql cluster 管理節點IP
三、測試(先關閉三台伺服器的防火牆(IPTABLES)與 Selinux)
1、啟動管理節點
ndb_mgmd -f /var/lib/mysql-cluster/config.ini --initialnetstat -tuplna | grep 1186 #預設串連連接埠1186,啟動成功tcp 0 0 0.0.0.0:1186 0.0.0.0:* LISTEN 1369/ndb_mgmd
#--initial:第一次啟動時加上,其它時候不要加,不然會資料清空,除非是在備份、恢複或配置變化後重啟時。
如果啟動出現報錯:把config.ini裡設定的nodeid都給刪除即可!
2、啟動兩台資料節點和SQL節點
資料節點:/usr/local/mysql/bin/ndbd --initial
SQL節點:bin/mysqld_safe --user=mysql & 或 service mysqld start
3、查看叢集狀態
ndb_mgm -e show #顯示管理節點和資料節點則配置成功
4、建立一個資料庫驗證是否同步
mysql -u root -pMysql>create database test;Mysql>use test;Mysql>create table abc (id int) engine=ndbcluster;#指定資料庫表的引擎為NDB,否則同步失敗Mysql>Insert into abc ()values (1);Mysql>select * from abc;
#此時看兩個資料是否資料一致,如果一致說明叢集已經成功!
注意事項:
1.在建表的時候一定要用ENGINE=NDB或ENGINE=NDBCLUSTER指定使用NDB叢集儲存引擎,或用ALTER TABLE選項更改表的儲存引擎。
2.NDB表必須有一個主鍵,因此建立表的時候必須定義主鍵,否則NDB儲存引擎將自動產生隱含的主鍵。
3.Sql節點的使用者權限表仍然採用MYISAM儲存引擎儲存的,所以在一個Sql節點建立的MySql使用者只能訪問這個節點,如果要用同樣的使用者訪問別的Sql節點,需要在對應的Sql節點追加使用者。
四、管理和維護命令
關閉mysql叢集:ndb_mgm -e shutdown
重啟mysql叢集:ndb_mgmd -f /var/lib/mysql-cluster/config.ini
重啟資料節點:/usr/local/mysql/bin/ndbd
啟動SQL節點:/usr/local/mysql/bin/mysqld_safe --user=mysql & 或 service mysqld restart
查看mysql狀態:ndb_mgm -e show
啟動順序:
管理節點 -> 資料節點 -> SQL節點
關閉順序:
SQL節點 -> 資料節點 -> 管理節點
MySQL Cluster MySQL叢集