虛擬機搭建Mysql Clusterhtml
參考文檔:http://www.cnblogs.com/jackluo/archive/2013/01/19/2868152.htmlmysql
http://www.cnblogs.com/StanBlogs/archive/2011/06/14/2080986.htmllinux
須要三臺服務器。一個管理節點服務器。另外兩個均充當數據節點和sql節點。sql
這裏選用ubuntu64位操做系統。mysql cluster 對應也必須是64位的。去官方站點下載mysql-cluster-gpl-7.4.4-linux-glibc2.5-x86_64。數據庫
(注:當在虛擬機操做時,vmware下,能夠只先操做一個sql節點,而後虛擬機有克隆功能,直接整一份,這樣另外一個sql節點就基本搞定了,只須要更改下ip便可。在虛擬機實驗下,最好整快照或克隆。ubuntu
我這裏,管理節點ip是192.168.1.232vim
另兩個機器,既充當數據節點也是sql節點。ip是192.168.1.210 ; 192.168.1.219 服務器
)網絡
安裝ubuntu操做系統後,更改ip,dns配置。socket
切換用戶 sudo passwd root,而後建立個root用戶密碼。
su root後,輸入root密碼。
如下操做利用root用戶進行。
對每一個機器的ip配置:
vim /etc/network/interfaces
改內容以下:
auto eth0
iface eth0 inet static #這裏沒用dhcp動態,取靜態ip
address 192.168.1.219 #ip地址
gateway 192.168.1.1 #網關地址
netmask 255.255.255.0 #子網掩碼
dns-nameservers 192.168.1.1 #dns解析
重啓網絡設置:
sudo /etc/init.d/networking restart
一. 對數據節點和sql節點的操做
1. 建立組,用戶
groupadd mysql
useradd -g mysql mysql
2. 下載mysql cluster64。傳這個文件到某個目錄下。這裏直接上傳到/usr/local(若是利用文件上傳服務器,則須要賦給權限如chmod 766 /usr/local)
解壓: tar -xvf mysql.tar.gz
更名: mv mysql-cluster-gpl-7.4.4-linux-glibc2.5-x86_64 mysql
3. 修改mysql目錄權限
cd mysql
chown -R root .
chown -R mysql data
chgrp -R mysql .
4. 安裝mysql初始庫
在mysql目錄下:
scripts/mysql_install_db --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql
5. 把mysql設置爲開機自啓
能夠把mysql服務開機自啓。不整也行。
6.這裏設置mysql配置文件,這裏缺省了mysql配置的性能方面參數。
vim /etc/my.cnf
[client]
socket=/usr/local/mysql/sock/mysql.sock
[mysqld]
ndbcluster
datadir=/usr/local/mysql/data
socket=/usr/local/mysql/sock/mysql.sock
ndb-connectstring=192.168.1.232 #這個是管理節點的ip
old_passwords=1
default-storage-engine=ndbcluster #能夠省略建表的引擎語句(只有引擎是ndb的才能夠起到集羣的做用)
[mysql_cluster]
ndb-connectstring=192.168.1.232 #這裏配置的是管理節點服務器地址
7. 此時沒必要啓動mysql服務。
以上的操做,須要在多臺數據節點和sql節點機器上進行(要是虛擬機,就克隆就行了,而後改下ip)。
二. 對管理節點的操做
管理節點不須要安裝mysql服務。只須要mysql-cluster解壓後的兩個文件,分別是
sql節點服務器上:/usr/local/mysql/bin/ndb_mgmd 和 /usr/local/mysql/bin/ndb_mgm
ndb_mgmd 是管理節點的服務
ndb_mgm 是管理節點的客戶端查看用
1. 把sql節點上的這兩個文件拷貝到管理節點的/usr/local/bin目錄下。(我使用filezilla傳過去的)
2. 在管理節點上,確保這兩個文件可執行。
cd /usr/local/bin
chmod +x ndb_mgm*
3. 在/usr/local下建立mysql文件夾,確保數據節點打開服務時,能夠生成log文件
mkdir /usr/local/mysql
4. 建立一個管理節點的配置文件
mkdir /var/lib/mysql-cluster
cd /var/lib/mysql-cluster
vim config.ini
[NDBD DEFAULT]
NoOfReplicas=2
MaxNoOfTables = 1024 #全部ndbcluster引擎的表數量最大數
MaxNoOfAttributes = 7000 #全部ndbcluster引擎的表的全部字段數量最大數
MaxNoOfOrderedIndexes = 10000
[TCP DEFAULT]
portnumber=22202
[NDB_MGMD]
hostname=192.168.1.232 #管理節點
datadir=/var/lib/mysql-cluster/
[NDBD]
hostname=192.168.1.210 #數據節點
datadir=/usr/local/mysql/data/
[NDBD]
hostname=192.168.1.219 #數據節點
datadir=/usr/local/mysql/data/
[MYSQLD]
# 這裏配置sql節點,最好留空。
[MYSQLD]
3、啓動mysql cluster
注意啓動順序:首先是管理節點,而後是數據節點,最後是SQL節點,這裏數據節點和sql節點是同一個機器。
1. ndb_mgmd -f /var/lib/mysql-cluster/config.ini --initial
第一次啓動時,再加--initial參數,或者在更改config.ini節點時加
(啓動時可能會報個WARNING,如WARNING -- at line 7: [TCP] portnumber is deprecated,這個不用管就是端口號不建議使用了,warning的級別不如error。能夠正常工做的。)
此時使用ndb_mgm來監聽客戶端
2. 數據節點
/usr/local/mysql/bin/ndbd
首次啓動,則須要添加--initial參數,以便進行NDB節點的初始化工做。在之後的啓動過程當中,則是不能添加該參數的,不然ndbd程序會清除在以前創建的全部用於恢復的數據文件和日誌文件。(若是報錯:日誌文件不能生成,則手動建立這個目錄)
此時,在管理節點上,ndb_mgm,使用show命令時,能夠看到數據節點鏈接上了(多臺數據節點都須要這樣操做)
3. sql節點
/usr/local/mysql/bin/mysqld_safe --user=mysql &
若是報錯說某套接字連不上mysql,那麼嘗試下再次建立系統數據庫,方法以下:
在mysql目錄下
scripts/mysql_install_db --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql
再次啓動
/usr/local/mysql/bin/mysqld_safe --user=mysql &
查看管理節點。此時sql節點也應該鏈接上了。
4、測試
1、常規測試:
在一個節點好比A節點,上面:
爲了讓表在cluster中正常複製,建立一個表必須使用ndbcluster引擎(engine=ndb Or engine=ndbcluster)方法以下:
mysql>use test
mysql>create table teacher(t_id int) engine=ndb;(這裏引擎需要是ndb,而不是innodb或其餘)
若是是一個已經存在的表,用alter table修改表的引擎。
mysql>alter table teacher engine=ndb;
插入一條數據:
mysql>insert into teacher values(133);
而後在B節點上查看:
mysql>select * from teacher;
A、B兩個節點數據保持一致,那就測試成功了哈哈,遇到什麼問題網上查一下資料什麼的!
模擬NDB節點Crash:
這個測試,基本參照文檔:
http://www.cnblogs.com/StanBlogs/archive/2011/06/14/2080986.html
=================================================================================
備註給須要的童鞋:
1 查看某機器下,該系統支持的存儲引擎
show engines;
2 查看錶使用的存儲引擎
show table status from db_name where name='table_name';
3. 更改表引擎
alter table student engine=ndb;
=================================================================================
若是你想鏈接你的mysql的時候發生這個錯誤:
ERROR 1130: Host '192.168.1.3' is not allowed to connect to this MySQL server
解決方法:
1. 受權法。
若是你想容許用戶myuser從ip爲192.168.1.3的主機鏈接到mysql服務器,並使用mypassword做爲密碼
GRANT ALL PRIVILEGES ON *.* TO 'root'@'192.168.1.3' IDENTIFIED BY 'mypassword' WITH GRANT OPTION;
FLUSH PRIVILEGES;
=================================================================================
當須要關閉數據節點或sql節點下的某服務,如關閉ndbd服務或mysql服務
能夠這樣
ps aux | grep mysql
ps aux | grep ndbd
而後找到進程號,
利用 kill -9 pid(進程號)