建立mysql集羣

1、準備工做(linux環境的一些配置)
mysql

首先咱們在電腦安裝好5個linux系統的vm-ware虛擬機,我在這裏裝的統一是CentOS-6.4-x86_64。linux

而後劃分後五個節點的ip分佈狀況:web

數據庫管理節點
mysql-mgm 192.168.1.113
數據節點1 mysql-ndbd-1 192.168.1.114
數據節點2 mysql-ndbd-2 192.168.1.115
sql節點1 mysql-sql-1 192.168.1.116
sql節點2 mysql-sql-2 192.168.1.117

因爲安裝後的linux系統全是純淨的系統,因此先去按照上邊更改好ip;sql

修改IP永久生效按如下方法shell

vi /etc/sysconfig/network-scripts/ifcfg-eth0(eth0,第一塊網卡,若是是第二塊則爲eth1)數據庫

按以下修改ip(管理節點虛擬機爲例)dom

DEVICE=eth0(若是是第二塊剛爲eth1)socket

BOOTPROTO=static測試

IPADDR=192.168.1.113(改爲要設置的IP)spa

NETMASK=255.255.255.0 (子網掩碼)

GATEWAY=192.168.1.1(網關)

ONBOO=yes

而後

service network restart

最後能夠用ifconfig -a命令查看下ip的狀況

五個linux系統都修改好ip後,再設置關閉selinux和關閉防火牆,執行以下命令

chkconfig --level 35 iptables off

vi /etc/selinux/config

最後在五臺虛擬機上都裝上一些依賴庫,在運行yum -y install時,由於linux系統全是純淨的系統,要設置一下以下配置才能正確運行yum -y install,以下

/etc目錄下配置resolv.conf加入nameserver IP,如:

nameserver 8.8.8.8
nameserver 8.8.4.4
search localdomain

保存退出。

安裝依賴庫:

yum install -y perl-Module-Install.noarch  

yum install -y libaio  

自此,linux方面的環境已經搞定,需重啓啓動系統,令selinux的配置生效!!


2、MySQL Cluster的安裝和配置

(1)公共配置

下載linux版本的MySQL Cluster到本地中,而後放進linux虛擬機中去。下載地址爲:

http://pan.baidu.com/s/1hqtqJWC

而後,5臺虛擬機作以下的公共操做:

下載獲得的壓縮包拷貝至虛擬機的/root/Downloads目錄,而後在shell中運行如下命令:

cd /root/Downloads
tar -xvzf mysql-cluster-gpl-7.3.4-linux-glibc2.5-x86_64.tar.gz   
mv mysql-cluster-gpl-7.3.4-linux-glibc2.5-x86_64 /usr/local/mysql

(2)配置管理結點(主機:192.168.1.113)

mkdir /var/lib/mysql-cluster

cd /var/lib/mysql-cluster

gedit config.ini

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

[ndbd default]
NoOfReplicas=2
DataMemory=80M
IndexMemory=18M

[ndb_mgmd]
NodeId=1
hostname=192.168.1.113
datadir=/var/lib/mysql-cluster

[ndbd]
NodeId=2
hostname=192.168.1.114
datadir=/usr/local/mysql/data

[ndbd]
NodeId=3
hostname=192.168.1.115
datadir=/usr/local/mysql/data


[mysqld]
NodeId=4
hostname=192.168.1.116


[mysqld]
NodeId=5
hostname=192.168.1.117

安裝管理結點

安裝管理節點,不須要mysqld二進制文件,只須要MySQL Cluster服務端程序(ndb_mgmd)和監聽客戶端程序(ndb_mgm)。在shell中運行如下命令:

cp /usr/local/mysql/bin/ndb_mgm* /usr/local/bin
cd /usr/local/bin
chmod +x ndb_mgm*

(3)配置數據結點(主機:192.168.1.11四、192.168.1.115)

1. 添加mysql組和用戶

在shell中運行如下命令:

groupadd mysql
useradd -g mysql mysql

2. 配置my.cnf配置文件

vi /etc/my.cnf

配置文件my.cnf的內容以下:

[mysqld]
basedir=/usr/local/mysql
datadir=/usr/local/mysql/data
socket=/usr/local/mysql/sock/mysql.sock
user=mysql
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0

[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid

[mysql_cluster]
ndb-connectstring=192.168.1.113

3. 建立系統數據庫

cd /usr/local/mysql
mkdir sock
./scripts/mysql_install_db --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data

4. 設置數據目錄

在shell中運行如下命令:

chown -R root .
chown -R mysql.mysql /usr/local/mysql/data
chown -R mysql.mysql /usr/local/mysql/sock
chgrp -R mysql .

5. 配置MySQL服務

在shell中運行如下命令:

cp support-files/mysql.server /etc/rc.d/init.d/
chmod +x /etc/rc.d/init.d/mysql.server
chkconfig --add mysql.server

(4)配置SQL結點(192.168.1.11六、192.168.1.117)

1. 添加mysql組和用戶

在shell中運行如下命令:

groupadd mysql
useradd -g mysql mysql

2. 配置my.cnf配置文件

在shell中運行如下命令:

vi /etc/my.cnf

配置文件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.113

[mysql_cluster]
ndb-connectstring=192.168.1.113

3. 建立系統數據庫

在shell中運行如下命令:

cd /usr/local/mysql
mkdir sock
./scripts/mysql_install_db --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data

4. 設置數據目錄

在shell中運行如下命令:

chown -R root .
chown -R mysql.mysql /usr/local/mysql/data
chown -R mysql.mysql /usr/local/mysql/sock
chgrp -R mysql .

5. 配置MySQL服務

在shell中運行如下命令:

cp support-files/mysql.server /etc/rc.d/init.d/
chmod +x /etc/rc.d/init.d/mysql.server
chkconfig --add mysql.server

(5)5個節點配置和安裝完畢,啓動測試

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

1. 啓動管理結點

在shell中運行如下命令:

ndb_mgmd -f /var/lib/mysql-cluster/config.ini

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

ndb_mgm

2. 啓動數據結點

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

/usr/local/mysql/bin/ndbd --initial

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

/usr/local/mysql/bin/ndbd

3. 啓動SQL結點

若MySQL服務沒有運行,則在shell中運行如下命令:

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

中止和關閉(開啓,重啓)mysqld服務:

/etc/init.d/mysql.server stop(start,restart)

4. 啓動測試

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


3、集羣測試

1. 測試一

如今咱們在其中一個SQL結點上進行相關數據庫的建立,而後到另一個SQL結點上看看數據是否同步。

在SQL結點1(192.168.1.114)上執行:

shell> /usr/local/mysql/bin/mysql -u root -p
mysql>show databases;
mysql>create database aa;
mysql>use aa;
mysql>CREATE TABLE ctest2 (i INT) ENGINE=NDB; //這裏必須指定數據庫表的引擎爲NDB,不然同步失敗
mysql> INSERT INTO ctest2 () VALUES (1);
mysql> SELECT * FROM ctest2;

而後在SQL結點2上看數據是否同步過來了

通過測試,在非master上建立數據,能夠同步到master上

查看錶的引擎是否是NDB,>show create table 表名;


2. 測試二

關閉一個數據節點 ,在另一個節點寫輸入,開啓關閉的節點,看數據是否同步過來。

首先把數據結點1重啓,而後在結點2上添加數據

在SQL結點2(192.168.1.115)上操做以下:

mysql> create database bb;
mysql> use bb;
mysql> CREATE TABLE ctest3 (i INT) ENGINE=NDB;
mysql> use aa;
mysql> INSERT INTO ctest2 () VALUES (3333);
mysql> SELECT * FROM ctest2;

等數據結點1啓動完畢,啓動數據結點1的服務

#/usr/local/mysql/bin/ndbd --initial#service mysqld start

而後登陸進去查看數據

# /usr/local/mysql/bin/mysql -u root –p

能夠看到數據已經同步過來了,說明數據能夠雙向同步了。

4、關閉集羣

1. 關閉管理節點和數據節點,只須要在管理節點(ClusterMgm--113)裏執行:

shell> /usr/local/mysql/bin/ndb_mgm -e shutdown

2. 而後關閉Sql節點(135,136),分別在2個節點裏運行:

shell> /etc/init.d/mysql.server stop
Shutting down MySQL... SUCCESS!

注意:要再次啓動集羣,就按照第五部分的啓動步驟便可,不過此次啓動數據節點的時候就不要加」-initial」參數了。

相關文章
相關標籤/搜索