MySQL-Cluster架構圖文詳解

這是我第一次接觸Linux,CentOS, MySQL,用了5天的時間終於將基於CentOS5.0系統下MySQL-Cluster架構成功,下面將我這些經驗分享給你們。若發現有什麼錯誤和疏忽之處,請發郵件給我: stan_home@qq.commysql

(PDF圖文版請下載,地址:http://download.csdn.net/source/3365704) linux

配置以前,先補充一些Linux經常使用命令: sql

ls 瀏覽 數據庫

ls -l     查看文件夾及文件權限 vim

vi 文本編輯器(搜索、編輯) 網絡

   i  狀態爲修改 架構

   退出:「Esc」鍵後,而後輸入":",而後輸入「wq」寫入、退出 dom

   :q! 強制退出 socket

vim -f [文件名] 強制恢復文件 tcp

 

cp    拷貝文件命令

rm    刪除文件

mkdir     建立文件夾

ln    鏈接問價或目錄

 

man [命令]   查看命令參數

ifconfig  網卡信息命令

dig   (域信息搜索器)

df    查看系統文件

vmstat    系統狀態

ps    查看進程(-e顯示所有,-f全格式輸出)

ps -ef|grep mysql 查看全部mysql進程

 

Tips:輸入一個文件或文件名,按一下Tab鍵,會自動完成改文件名(前提是這個文件或文件夾必須存在);

例如:

輸入

[root@localhost tmp]# tar –xzvf mysql-c

按一下Tab鍵自動完成:

[root@localhost tmp]# tar –xzvf mysql-cluster-gpl-7.1.13-linux-i686-glibc23.tar.gz

 

下面,咱們一塊兒來架構吧!

 

1、配置環境:

OS:Linux CentOS 5.0

MySQL: mysql-cluster-gpl-7.1.13-linux-i686-glibc23.tar.gz (注意:需用Cluster版本,可在官網上下載 http://dev.mysql.com/downloads/cluster/#downloads

 

 

節點配置狀況:

MGM:192.168.20.231

NDBD1:192.168.20.232

NDBD2:192.168.20.233

SQL1:192.168.20.234

SQL2:192.168.20.235

 

 

修改CentOS IP地址

(1)打開/etc/sysconfig/network-scripts/ifcfg-eth0文件,作以下修改

# Intel Corporation 82545EM Gigabit Ethernet Controller (Copper)

DEVICE=eth0

BOOTPROTO=static

ONBOOT=yes

HWADDR=00:0c:29:be:b3:53

IPADDR=192.168.20.231

NETMASK=255.255.255.0

GATEWAY=192.168.20.1

 

 

(2)修改/etc/resolv.conf文件, 以下(修改DNS服務)

nameserver 202.101.172.35

search localdomain

(3)重啓網絡服務

[root@localhost ~]# service network restart

 

2、軟件安裝:

(一)管理節點MGM

配置管理節點

首先在合適的位置,建立一個管理節點的配置文件,步驟以下:

[root@localhost ~]# mkdir /var/lib/mysql-cluster

[root@localhost ~]# cd /var/lib/mysql-cluster

[root@localhost mysql-cluster]# vi config.ini

配置文件config.ini內容以下:

[ndbd default]

NoOfReplicas=2

DataMemory=80M

IndexMemory=18M

 

[tcp default]

portnumber=2202

 

[ndb_mgmd]

hostname=192.168.20.231

datadir=/var/lib/mysql-cluster

 

[ndbd]

hostname=192.168.20.232

datadir=/usr/local/mysql/data

 

[ndbd]

hostname=192.168.20.233

datadir=/usr/local/mysql/data

 

[mysqld]

hostname=192.168.20.234

 

[mysqld]

hostname=192.168.20.235

 

 

 

安裝管理節點,不須要mysqld二進制文件,只須要MySQL Cluster服務端程序(ndb_mgmd)和監聽客戶端程序(ndb_mgm)。這兩個文件都在下載的MySQL-cluster文件解壓後的bin 文件夾中。執行以下步驟,在集羣的管理節點上安裝ndb_mgmd 和 ndb_mgm。

一、改變地址到/var/tmp目錄下,解壓MySQL-Cluster壓縮文件,取出ndb_mgm和ndb_mgmd複製到/usr/local/bin 目錄下。

[root@localhost ~]# cd /var/tmp

[root@localhost tmp]# tar –xzvf mysql-cluster-gpl-7.1.13-linux-i686-glibc23.tar.gz

[root@localhost tmp]# cd mysql-cluster-gpl-7.1.13-linux-i686-glibc23

[root@localhost tmp]# cp bin/ndb_mgm* /usr/local/bin

 

二、改變路徑爲拷貝到的目錄下,並確保這兩個文件可執行。

[root@localhost tmp]# cd /usr/local/bin

[root@localhost bin]# chmod +x ndb_mgm*

三、在/usr/local下建立mysql文件夾。

[root@localhost ~]# cd /usr/local

[root@localhost local]# mkdir mysql

 

(二)、數據節點NDBD和SQL節點

配置數據節點NDBD和SQL節點

在每個SQL節點中的/etc目錄下找到my.cnf文件,並作以下配置:

 

[client]

socket=/usr/local/mysql/sock/mysql.sock

 

[mysqld]

ndbcluster

datadir=/usr/local/mysql

socket=/usr/local/mysql/sock/mysql.sock

ndb-connectstring=192.168.20.231

old_passwords=1

 

[mysql_cluster]

ndb-connectstring=192.168.20.231

 

 

在每個數據節點NDBD和SQL節點的機器上,用root用戶執行下面的步驟。

一、檢查/etc/passwd 和 /etc/group 文件,是否存在mysql組和mysql用戶,若是沒有,用下面的命令建立一個mysql組,並在改組中添加mysql用戶。

[root@localhost ~]# groupadd mysql

[root@localhost ~]# useradd –g mysql mysql

 

二、改變文件夾位置到mysql壓縮包的存放位置,解壓文件,準備安裝,步驟以下:

(下載文件能夠從其餘電腦映射, 在/home/下面建立一個download文件夾,若是是在本機Linux下下載的文件,則不須要此映射步驟。)

[root@localhost ~]# mount -t cifs -o username="name",password="password" //192.168.20.210/MySQL /home/download

[root@localhost ~] cp /home/download/ mysql-cluster-gpl-7.1.13-linux-i686-glibc23.tar.gz /var/tmp

[root@localhost ~]# cd /var/tmp

[root@localhost tmp]# tar –C /usr/local –xzvf mysql-cluster-gpl-7.1.13-linux-i686-glibc23.tar.gz

 

 

三、改變位置到local文件夾,改變mysql解壓後的文件夾名稱爲mysql,而後執行提供的腳本,建立系統數據庫。

[root@localhost tmp]# cd /usr/local

[root@localhost local]# mv mysql-cluster-gpl-7.1.13-linux-i686-glibc23/ mysql/

[root@localhost local]# cd mysql

 

[root@localhost mysql]# mkdir sock

[root@localhost mysql]# scripts/mysql_install_db --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql

 

 

四、爲MySQL服務及數據目錄設置必要的服務。

[root@localhost mysql]# chown -R root .

[root@localhost mysql]# chown -R mysql.mysql /usr/local/mysql/data

[root@localhost mysql]# chown -R mysql.mysql /usr/local/mysql/sock

[root@localhost mysql]# chgrp -R mysql .

[root@localhost mysql]# ls -l

 

五、複製MySQL的啓動腳本到以下的文件夾,確保能夠執行。並設置爲當系統啓動時,同時啓動MySQL。

[root@localhost mysql]# cp support-files/mysql.server /etc/rc.d/init.d/

[root@localhost mysql]# chmod +x /etc/rc.d/init.d/mysql.server

[root@localhost mysql]# chkconfig --add mysql.server

 

 

3、Cluster環境啓動

注意啓動順序:首先是管理節點,而後是NDBD節點,最後是SQL節點。

一、[MGM]

[root@localhost ~]# ndb_mgmd -f /var/lib/mysql-cluster/config.ini

使用ndb_mgm來監聽客戶端,以下:

[root@localhost ~]# ndb_mgm

 

 

二、[NDBD]

首次啓動,則須要添加--initial參數,以便進行NDB節點的初始化工做。在之後的啓動過程當中,則是不能添加該參數的,不然ndbd程序會清除在以前創建的全部用於恢復的數據文件和日誌文件。

[root@localhost ~]# /usr/local/mysql/bin/ndbd --initial

若是不是首次啓動,則執行下面的命令。

[root@localhost ~]# /usr/local/mysql/bin/ndbd

 

 

三、[SQLD]

/usr/local/mysql/bin/mysqld_safe --user=mysql &

  

 

有可能出現上圖問題,是系統數據庫建立問題,只需再次建立系統數據庫,方法以下:

[root@localhost mysql]# scripts/mysql_install_db --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql

 

再次啓動

/usr/local/mysql/bin/mysqld_safe --user=mysql &

 

 

 

查看管理節點,啓動成功:

 

 

4、測試

一、常規測試:

在節點4上面:

爲了讓表在cluster中正常複製,建立一個表必須使用ndbcluster引擎(engine=ndb Or engine=ndbcluster)方法以下:

mysql>use test

mysql>create table teacher(t_id int) engine=ndb;

 

 

若是是一個已經存在的表,用alter table修改表的引擎。

mysql>alter table student engine=ndb;

 

插入一條數據:

mysql>insert into teacher values(133);

而後在節點5上:

mysql>select * from teacher;

 

 

兩個節點數據保持一致,恭喜你,測試成功!

 

二、模擬NDB節點Crash:

在節點2上終止掉NDB進程,而後再分別經過兩個SQL節點去訪問teacher表,查看是否能夠正常訪問,數據是否一致。以下:

查看進程

[root@localhost ~]# ps -ef

 

 

[root@localhost ~]# kill 3344

[root@localhost ~]# ps -ef

 

查看管理節點,顯示節點2已關閉。

 

 

節點4上面:

 

在節點5上面:

 

 

再回到節點4上面:

 

測試成功,當有一個NDB節點Crash後,整個MySQL Cluster環境仍能夠正常服務。

 

三、模擬SQL節點Crash:

Kill掉節點4的mysqld進程,而後經過節點5進行訪問,以下:

 

能夠看到節點4 Crash以後,節點5仍然能夠繼續正常服務,測試成功。

相關文章
相關標籤/搜索