mysql cluster (mysql 叢集)安裝配置方案

來源:互聯網
上載者:User

標籤:

一、說明

本文參考:http://www.cnblogs.com/jackluo/archive/2013/01/19/2868152.html

1.準備伺服器

計劃建立有5個節點的MySQL CLuster體系,需要用到5台伺服器,但是我們做實驗時沒有這麼多機器,可以只用3台,提供5個節點的MySQL CLuster體系,將SQL節點和資料節點共用一台機器,具體如下。

主機名稱

節點

對應的IP和連接埠

DB-mgm

管理節點

10.10.6.201:1186

DB-node1

資料節點

10.10.6.211:2202

DB-node1

SQL節點

10.10.6.211:3306

DB-node2

資料節點

10.10.6.212:2202

DB-node2

SQL節點

10.10.6.212:3306

2.準備軟體包

現在的mysql提供了一個專門作叢集的安裝包,這樣就不用一個個的下載所需要的工具了。從官網下載。

http://cdn.mysql.com/Downloads/MySQL-Cluster-7.4/mysql-cluster-gpl-7.4.5-linux-glibc2.5-x86_64.tar.gz

二、安裝 (一)資料節點和SQL節點(各兩台) 1.添加mysql使用者和組,這是必需的。

[[email protected] ~]# groupadd mysql

[[email protected] ~]# useradd -g mysql mysql

[[email protected] ~]# 

2.開始安裝,下載的版本是免編譯的,複製過來就可以用了。

[[email protected] ~]# http://cdn.mysql.com/Downloads/MySQL-Cluster-7.4/mysql-cluster-gpl-7.4.5-linux-glibc2.5-x86_64.tar.gz
[[email protected] ~]# tar -zxvf mysql-cluster-gpl-7.4.5-linux-glibc2.5-x86_64.tar.gz -C /usr/local/

[[email protected] ~]# ln -sv /usr/local/mysql-cluster-gpl-7.4.5-linux-glibc2.5-x86_64/ /usr/local/mysql

[[email protected] ~]#

3.修改目錄許可權,這也是必需的,不然第四步會報錯的。

[[email protected] ~]# chown -R mysql.root /usr/local/mysql

[[email protected] ~]# chown -R mysql.root /usr/local/mysql/

[[email protected] ~]# 

4.安裝初始的資料庫表

[ro[email protected] ~]# /usr/local/mysql/scripts/mysql_install_db --user=mysql

FATAL ERROR: Could not find ./bin/my_print_defaults

If you compiled from source, you need to run ‘make install‘ to

copy the software into the correct location ready for operation.

If you are using a binary release, you must either be at the top

level of the extracted archive, or pass the --basedir option

pointing to that location.

如果出現上面錯誤,說明沒有指定mysql目錄,需手工指定。

解決方案

[[email protected] ~]# /usr/local/mysql/scripts/mysql_install_db --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data/

5.設定mysql服務為開機自啟動並啟動

[[email protected] ~]# cp /usr/local/mysql/support-files/mysql.server /etc/rc.d/init.d/mysqld

[[email protected] ~]# chmod +x /etc/rc.d/init.d/mysqld 

[[email protected] ~]# chkconfig --add mysqld 

[[email protected] ~]# chkconfig --list mysqld        

mysqld          0:off   1:off   2:on    3:on    4:on    5:on    6:off

[[email protected] ~]#

[[email protected] ~]# service mysqld start

到這一步,在資料節點和SQL節點上就算安裝好了。

(二)管理節點

管理節點的安裝更簡單,只要在資料節點和SQL節點伺服器上複製些檔案出來就行了,雖然只有一步,[[email protected] ~]# scp 10.10.6.211:/usr/local/mysql/bin/ndb_mgm* /usr/local/bin/

[[email protected] ~]# ll /usr/local/bin/ndb*

-rwxr-xr-x 1 root root  7137184 Apr 13 09:45 /usr/local/bin/ndb_mgm

-rwxr-xr-x 1 root root 16336025 Apr 13 09:45 /usr/local/bin/ndb_mgmd

[[email protected] ~]# 

管理節點只要ndb_mgm和ndb_mgmd兩個檔案和一個設定檔即可,因此把這三個檔案複製到那裡,那裡就是管理節點了。ndb_mgmd是mysql cluster管理伺服器,ndb_mgm是用戶端管理工具,等一下會用到它們的。到目前為止兩個SQL節點兩個資料節點和一個管理節點都安裝完成了,但是還不能工作,得進行配置,把這幾個節點聯絡在一起協同工作。

三、配置 (一)資料節點和SQL節點(各兩台)

mysql服務啟動時會預設載入/etc/my.cnf作為其設定檔,要將一個mysql伺服器配置成一個資料節點和SQL節點也非常的簡單:

只要在內容結尾加上下面4行就將這個mysql伺服器變成了一個資料節點和SQL節點。

ndbcluster                             \\運行NDB儲存引擎

ndb-connectstring=10.10.6.201          \\指定管理節點  這兩行聲明其為SQL節點

[mysql_cluster]

ndb-connectstring=10.10.6.201          \\指定管理節點  這兩行聲明其為資料節點

建立mysql的設定檔

[[email protected] ~]# vi /etc/my.cnf

[[email protected] ~]# more /etc/my.cnf 

[client]

port=3306

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

[mysqld]

basedir=/usr/local/mysql/

datadir=/usr/local/mysql/data

user= mysql

pid-file=/usr/local/mysql/mysqld.pid

log-error=/usr/local/mysql/mysqld.err

以下四行為新增加內容

ndbcluster                             \\運行NDB儲存引擎

ndb-connectstring=10.10.6.201          \\指定管理節點  這兩行聲明其為SQL節點

[mysql_cluster]

ndb-connectstring=10.10.6.201          \\指定管理節點  這兩行聲明其資料節點

[[email protected] ~]#

注意兩台伺服器都得這樣配置。

(二)管理節點

管理節點的配置複雜一點,在管理伺服器/usr/local/mysql/目錄中建立config.ini檔案。

網上說 使用mysql-cluster,但是啟動時 總時有如下提示:

[[email protected] ~]# ndb_mgmd -f /usr/local/mysql-cluster/config.ini 

MySQL Cluster Management Server mysql-5.6.23 ndb-7.4.5

2015-04-13 14:13:28 [MgmtSrvr] INFO     -- The default config directory ‘/usr/local/mysql/mysql-cluster‘ does not exist. Trying to create it...

Failed to create directory ‘/usr/local/mysql/mysql-cluster‘, error: 2

2015-04-13 14:13:28 [MgmtSrvr] ERROR    -- Could not create directory ‘/usr/local/mysql/mysql-cluster‘. Either create it manually or specify a different directory with --configdir=<path>

[[email protected] ~]# 

最後改成了/usr/local/mysql,就可以了

[[email protected] ~]# mkdir /usr/local/mysql

[[email protected] ~]# vi /usr/local/mysql/config.ini

[[email protected] ~]# more /usr/local/mysql/config.ini 

[NDBD DEFAULT]

NoOfReplicas=1           \\每個資料節點的鏡像數量

DataMemory=500M          \\每個資料節點中給資料分配的記憶體

IndexMemory=300M         \\每個資料節點中給索引分配的記憶體

[TCP DEFAULT]

portnumber=2202          \\資料節點的預設串連連接埠

[NDB_MGMD]               \\組態管理節點

hostname=10.10.6.201

datadir=/usr/local/mysql/            \\管理節點資料(日誌)目錄

[NDBD]

hostname=10.10.6.211                  \\資料節點配置

datadir=/usr/local/mysql/data/        \\資料節點目錄

[NDBD]

hostname=10.10.6.212

datadir=/usr/local/mysql/data/

[MYSQLD]                             \\SQL節點目錄

hostname=10.10.6.211

[MYSQLD]

hostname=10.10.6.212

[[email protected] ~]#

[NDBD DEFAULT]:表示每個資料節點的預設配置在每個節點的[NDBD]中不用再寫這些選項,只能有一個。
[NDB_MGMD]:表示管理節點的配置,只有一個。
[NDBD]:表示每個資料節點的配置,可以有多個。
[MYSQLD]:表示SQL節點的配置,可以有多個,分別寫上不同SQL節點的IP地址,也可以什麼都不寫,只保留一個空節點,表示任意一個IP地址都可以進行訪問,此節點的個數表明了可以用來串連資料節點的SQL節點總數。

四、啟動 (一)管理節點 1.啟動管理節點

mysql cluster 需要各個節點都 進行啟動後才可以工作,節點的啟動順序為管理節點->資料節點->SQL節點。首先啟動管理節點

[[email protected] ~]# ndb_mgmd -f /usr/local/mysql/config.ini         

MySQL Cluster Management Server mysql-5.6.23 ndb-7.4.5

2015-04-13 14:14:14 [MgmtSrvr] INFO     -- The default config directory ‘/usr/local/mysql/mysql-cluster‘ does not exist. Trying to create it...

2015-04-13 14:14:14 [MgmtSrvr] INFO     -- Sucessfully created config directory

2015-04-13 14:14:14 [MgmtSrvr] WARNING  -- at line 7: [TCP] portnumber is deprecated

[[email protected] ~]#

[[email protected] ~]# echo "/usr/local/bin/ndb_mgmd -f /usr/local/mysql/config.ini "  >>/etc/rc.local

[[email protected] ~]#

命令列中的ndb_mgmd是mysql cluster的管理伺服器,後面的-f表示後面的參數是啟動的參數設定檔。如果在啟動後過了幾天又添加了一個資料節點,這時修改了設定檔啟動時就必須加上--initial參數,不然添加的節點不會作用在mysql cluster中。

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

啟動時可能會報個WARNING,如WARNING  -- at line 7: [TCP] portnumber is deprecated,這個不用管。可以正常工作的。

2.查看有無啟動成功

[[email protected] ~]# ls /usr/local/mysql/

config.ini  mysql-cluster  ndb_1_cluster.log  ndb_1_out.log  ndb_1.pid

[[email protected] ~]# 

[[email protected] ~]# netstat -tlnp | grep 1186

tcp        0      0 0.0.0.0:1186                0.0.0.0:*                   LISTEN      3075/ndb_mgmd       

[[email protected] ~]# ndb_mgm

-- NDB Cluster -- Management Client --

ndb_mgm> show

Connected to Management Server at: localhost:1186

Cluster Configuration

---------------------

[ndbd(NDB)]     2 node(s)

id=2 (not connected, accepting connect from 10.10.6.211)

id=3 (not connected, accepting connect from 10.10.6.212)

[ndb_mgmd(MGM)] 1 node(s)

id=1    @10.10.6.201  (mysql-5.6.23 ndb-7.4.5)

[mysqld(API)]   2 node(s)

id=4 (not connected, accepting connect from 10.10.6.211)

id=5 (not connected, accepting connect from 10.10.6.212)

ndb_mgm> exit

[[email protected] ~]#

(二)資料節點(兩台)

安裝後第一次啟動資料節點時要加上--initial參數,其它時候不要加,除非是在備份、恢複或配置變化後重啟時。

[[email protected] ~]# /usr/local/mysql/bin/ndbd --initial

2015-04-13 14:49:59 [ndbd] INFO     -- Angel connected to ‘10.10.6.201:1186‘

2015-04-13 14:49:59 [ndbd] INFO     -- Angel allocated nodeid: 2

[[email protected] ~]# netstat -tlnp |grep 2202

tcp        0      0 10.10.6.211:2202            0.0.0.0:*                   LISTEN      14780/ndbd          

[[email protected] ~]#    

[[email protected] ~]# echo /usr/local/mysql/bin/ndbd >>/etc/rc.local

[[email protected] ~]# 

(三)SQL節點(兩台)

[[email protected] ~]# service  mysqld start

Starting MySQL SUCCESS! 

[[email protected] ~]# 

(四)用戶端管理

這時就進入到用戶端或管理節點,可以對mysql cluster進行各項操作,進入後會有ndb_mgm > 提示符出現,首先來查看各節點的串連情況,在ndb_mgm> 提示符下輸入show:

[[email protected] ~]# ndb_mgm

-- NDB Cluster -- Management Client --

ndb_mgm> show

Connected to Management Server at: localhost:1186

Cluster Configuration

---------------------

[ndbd(NDB)]     2 node(s)

id=2    @10.10.6.211  (mysql-5.6.23 ndb-7.4.5, Nodegroup: 0, *)

id=3    @10.10.6.212  (mysql-5.6.23 ndb-7.4.5, Nodegroup: 1)

[ndb_mgmd(MGM)] 1 node(s)

id=1    @10.10.6.201  (mysql-5.6.23 ndb-7.4.5)

[mysqld(API)]   2 node(s)

id=4    @10.10.6.211  (mysql-5.6.23 ndb-7.4.5)

id=5    @10.10.6.212  (mysql-5.6.23 ndb-7.4.5)

ndb_mgm> exit

可以看到各個節點已經串連上了,至此,mysql cluster配置完成。

(五)關閉

mysql cluster的關閉也很簡單,只需在ndb_mgm> 提示符下輸入 shutdown即可,這時會顯示各節點的關閉資訊,再輸入exit即可退出ndb_mgm管理,回到shell中。雖然mysql cluster 關閉了,但是SQL節點的mysql服務並不會停止的。接下來就可以做各種實驗了。

五、測試 (一)在一個SQL節點建立一個測試資料庫,jedy_db

[[email protected] mysql]# /usr/local/mysql/bin/mysql

mysql> create database jedy_db;

Query OK, 1 row affected (0.10 sec)

mysql> show databases;

+--------------------+

| Database           |

+--------------------+

| information_schema |

| jedy_db            |

| mysql              |

| ndb_2_fs           |

| ndbinfo            |

| performance_schema |

| test               |

+--------------------+

7 rows in set (0.05 sec)

mysql> \q

Bye

[[email protected] mysql]# 

(二)在另一個SQL節點查看

[[email protected] mysql]# /usr/local/mysql/bin/mysql

mysql> show databases;

+--------------------+

| Database           |

+--------------------+

| information_schema |

| jedy_db            |

| mysql              |

| ndb_3_fs           |

| ndbinfo            |

| performance_schema |

| test               |

+--------------------+

7 rows in set (0.06 sec)

mysql> \q

Bye

[[email protected] mysql]#

所有配置完成

mysql cluster (mysql 叢集)安裝配置方案

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.