【Data Cluster】真機環境下MySQL數據庫集群搭建


 摘要:本年伊始階段,由於實驗室對不同數據庫性能測試需求,才出現MySQL集群搭建。購置主機,交換機,雙絞線等一系列准備工作就緒,也就開始集群搭建。起初筆者對此不甚了解,查閱很多資料,最終都不太完善。故筆者真機環境測試成功后,整理出此搭建文檔,一則防止遺忘知識總結,另則與人共享。前天完成文檔由於文字偏多,給陌生配置者帶來不小壓力。更改文檔版本后,減少文字增加圖片,讓一個大一的對mysql集群不了解者,照此配置。能夠配置成功,故發表。(本文原創/整理,轉載請標注原文出處: 真機環境下MySQL-Cluster搭建文檔 )

相關文章

  1. 【Oracle RAC集群搭建1】 集群概念介紹
  2. 【Oracle RAC集群搭建2】 ORACLE集群概念和原理
  3. 【Oracle RAC集群搭建3】 RAC 工作原理和相關組件
  4. 【Oracle RAC集群搭建4】 緩存融合技術
  5. 【Oracle RAC集群搭建5】 RAC 特殊問題和實戰經驗
  6. 【Oracle RAC集群搭建6】 ORACLE 11 G版本2 RAC在LINUX上使用NFS安裝前准備
  7. 【Oracle RAC集群搭建7】 ORACLE ENTERPRISE LINUX 5.7下DATABASE 11G RAC集群安裝
  8. 【Oracle RAC集群搭建8】 ORACLE ENTERPRISE LINUX 5.7下DATABASE 11G RAC數據庫安裝
  9. 【Oracle RAC集群搭建9】 ORACLE ENTERPRISE LINUX 5.7下DATABASE 11G RAC基本測試與使用
  10. 【MySql集群搭建】   真機環境下MySQL-Cluster搭建文檔

  11. 【Hadoop集群搭建1】Hadoop集群的配置

  12. 【Hadoop集群搭建2】Hadoop集群的配置 

MySQL Cluster簡介

      MySQL cluster 和 Oracle RAC 完全不同,它采用 無共享架構Shared nothing(shared nothing architecture)。整個集群由管理節點(ndb_mgmd),處理節點(mysqld)和存儲節點(ndbd)組 成,不存在一個共享的存儲設備。MySQL cluster 主要利用了 NDB 存儲引擎來實現,NDB 存儲引擎是一個內存式存儲引擎,要求數據必須全部加載到內存之中。數據被自動分布在集群中的不同存 儲節點上,每個存儲節點只保存完整數據的一個分片(fragment)。同時,用戶可以設置同一份數據保存在多個不同的存儲節點上,以保證單點故障不會造 成數據丟失。MySQL cluster 主要由 3 各部分組成:

  • SQL 服務器節點
  • NDB 數據存儲節點
  • 監控和管理節點

這樣的分層也是與 MySQL 本身把 SQL 處理和存儲分開的架構相關系的。MySQL cluster 的優點在於其是一個分布式的數據庫集群,處理節點和存儲節點都可以線性增加,整個集群沒有單點故障,可用性和擴展性都可以做到很高,更適合 OLTP 應用。但是它的問題在於:

  •  NDB(“NDB” 是一種“內存中”的存儲引擎,它具有可用性高和數據一致性好的特點。) 存儲引擎必須要求數據全部加載到內存之中,限制比較大,但是目前 NDB 新版本對此做了改進,允許只在內存中加 載索引數據,數據可以保存在磁盤上。
  •  目前的 MySQL cluster 的性能還不理想,因為數據是按照主鍵 hash 分布到不同的存儲節點上,如果應用不是通過主鍵去獲取數據的話,必須在所有的存儲節點上掃描, 返回結果到處理節點上去處理。而且,寫操作需要同時寫多份數據到不同的存儲節點上, 對 節點間的網絡要求很高。

雖然 MySQL cluster 目前性能還不理想,但是 share nothing 的架構一定是未來的趨勢,Oracle 接手 MySQL之后,也在大力發展 MySQL cluster,我對 MySQL cluster 的前景抱有很大的期待。

mysql-cluster構造

安裝mysql-cluster首先要了解cluster的構造,Cluster大體上是由管理節點(mgmd)、數據節點(ndbd)、sql節點(mysqld)組成的。

                     

虛擬機安裝centos6.6

系統要求:

內存:4G(最少4G)

CPU:需要支持VT

如果你是筆記本用戶那么cpu虛擬化可能是關閉的,請在BIOS下設置virtualization 為enable

 

新建虛擬機,選擇典型安裝,點擊下一步

 

點擊下一步

 

這里用戶名最好是mysql因為后面要用到。設置成其他用戶也可以。

下一步

 

位置就是保存這個虛擬centos系統的位置

下一步

 

選擇如圖所示,下一步

 

選擇自定義硬件,建議最好每個虛擬機分配1G的內存。每個cent最少分配512M內存。

點擊完成就可以了。

虛擬機安裝完成后,用root權限進入。密碼和mysql賬戶的密碼相同。

mysql-cluster下載

www.mysql.com/downloads/cluster  選擇linux-generic下的版本 根據你的cent的系統選擇32or64

centos6.6搭建環境配置

首先進入linux終端,右鍵桌面如圖所示

 

Open in terminal(終端)

安裝mysql-cluster前首先要卸載原有系統自帶的mysql

聯網卸載(終端下執行命令)

#yum remove mysql

手動清理(終端下執行命令)

#rpm –qa|grep mysql* (這條是查詢系統中存在的mysql)

#rpm –e –nodeps mysql-libs-5.1.71-1.el6.x86_64 (不同版本的centos這個版本也不同)

mysql-cluster安裝包導入cent中

首先查詢需要導入的cent的ip地址,終端下輸入

#ifconfig

 

如圖所示其中inet addr:192.168.191.129就是這個cent的ip地址。

 

下載軟件winscp

 

打開軟件

 

新建站點,主機名就是cent 的ip ,用戶名使用root

點擊登錄,輸入密碼,連接成功

 

左邊是windows右邊是cent

Cent下進入目錄/usr/local/src 把你的mysql-cluster安裝文件放在這個目錄下

打開cent終端

添加mysql用戶和組(如果前面安裝虛擬機的時候使用的用戶是mysql則跳過此步驟

添加mysql用戶

1.      # groupadd mysql 

2.      # useradd mysql -g mysql

安裝mysql-cluster 7.4.4-linux

1.      # cd /usr/local/src/(已下載好集群版) 

2.      # tar -xvf mysql-cluster-gpl-7.4.4-linux-glibc2.5-x86_64.tar.gz  

3.      # mv mysql-cluster-gpl-7.4.4-linux-glibc2.5-x86_64 ../mysql 

4.      # cd .. 

5.      # chown -R mysql:mysql mysql/ 

6.      # cd mysql 

7.      # scripts/mysql_install_db --user=mysql  

 

 

當出現這個頁面則mysql-cluster安裝成功

以上步驟是安裝mysql-cluster必須步驟,所有機器都要進行以上的步驟

集群配置

首先進行管理節點的配置(終端輸入)

# vi  /var/lib/mysql-cluster/config.ini (目錄和文件沒有請新建,添加以下內容)

1.      [NDBD DEFAULT] 

2.      NoOfReplicas=2 

3.      [TCP DEFAULT] 

4.      portnumber=3306 

5.       

6.      [NDB_MGMD] 

7.      #設置管理節點服務器  

8.      nodeid=1 

9.      HostName=192.168.191.132 (管理節點服務器ip地址)

10.   DataDir=/var/mysql/data 

11.    

12.   [NDBD] 

13.   nodeid=2 

14.   HostName=192.168.191.130 (ndbd點ip地址)

15.   DataDir=/var/mysql/data 

16.    

17.   [MYSQLD] 

18.   nodeid=3 

19.   HostName=192.168.191.131  (mysqld節點ip地址)

20.   [MYSQLD] 

21.   nodeid=4 

22.   HostName=192.168.191.133  (mysqld節點ip地址)

23.    

24.   #必須有空的mysqld節點,不然數據節點斷開后啟動有報錯 

25.   [MYSQLD] 

26.   nodeid=5 

27.   [mysqld] 

28.   nodeid=6

 

以上內容輸入完畢后,按ESC,輸入:wq即可保存退出

 

拷貝ndb_mgm、ndb_mgmd、config.ini到bin目錄。

# cd /usr/local/mysql/bin 

# cp ./ndb_mgm /usr/local/bin/ 

# cp ./ndb_mgmd /usr/local/bin/

# cp /var/lib/mysql-cluster/config.ini /usr/local/bin/

 

 

數據節點配置(終端輸入)

# vi /etc/my.cnf (添加以下內容)

[mysqld] 

datadir=/var/mysql/data 

socket=/var/mysql/mysql.sock 

user=mysql 

# Disabling symbolic-links is recommended to prevent assorted security risks 

symbolic-links=0 

 

#運行NDB存儲引擎 

ndbcluster  

#指定管理節點 

ndb-connectstring=192.168.191.132  (管理節點ip)

[MYSQL_CLUSTER] 

ndb-connectstring=192.168.191.132   (管理節點ip)

[NDB_MGM] 

connect-string=192.168.191.132   (管理節點ip)

 

[mysqld_safe] 

log-error=/var/mysql/log/mysqld.log 

pid-file=/var/run/mysqld/mysqld.pid

 

Sql節點配置(終端輸入)

# cd /usr/local/mysql/

 

設置mysql服務為開機自啟動

# cp support-files/mysql.server /etc/rc.d/init.d/mysqld 

# chmod +x /etc/rc.d/init.d/mysqld 

# chkconfig --add mysqld

 

# vi /etc/my.cnf (添加以下內容)

[mysqld]    

datadir=/var/mysql/data 

socket=/var/mysql/mysql.sock 

user=mysql 

# Disabling symbolic-links is recommended to prevent assorted security risks 

symbolic-links=0 

log-bin = /var/mysql/log/mysql-bin.log 

max_connections=1000 

 

#以下為mysql 主主模式的配置文件 

# 忽略mysql數據庫復制 

binlog-ignore-db=mysql 

# 每次增長2 

auto-increment-increment=2 

# 設置自動增長的字段的偏移量,即初始值為2 

auto-increment-offset=1 

ndbcluster 

ndb-connectstring=192.168.191.132 (管理節點ip)

 

[MYSQL_CLUSTER] 

ndb-connectstring=192.168.191.132  (管理節點ip)

[NDB_MGM] 

connect-string=192.168.191.132  (管理節點ip)

 

[mysqld_safe] 

log-error=/var/mysql/log/mysqld.log 

pid-file=/var/run/mysqld/mysqld.pid 

 

這里要注意,在var目錄下新建mysql目錄,在新建的mysql目錄下建立log和data目錄

另外要給這兩個目錄授權代碼如下

# cd /var

# chown –R mysql:mysql mysql/

下面兩個命令是對mysql命令的一個link,否則無法使用mysql命令

# Ln –s /usr/local/mysql/bin/mysql /usr/bin

# Ln –s /var/mysql/mysql.sock /tmp/mysql.sock

運行mysql-cluster

mysql集群的啟動順序為:管理節點->數據節點->SQL節點

mysql集群的關閉順序為,管理節點->數據節點->SQL節點

 

打開服務的時候注意防火牆問題

注意把管理節點的防火牆關閉 命令如下:

# /etc/init.d/iptables stop

 

首先打開管理節點服務

# ndb_mgmd -f /var/lib/mysql-cluster/config.ini --initial(注意第一次或者對config文件進行修改后,打開服務一定要加上initial否則新增加的內容不會被使用)

然后打開ndbd節點服務

# /usr/local/mysql/bin/ndbd --initial(此處同上)

出現一下信息表示ndbd節點啟動成功.

 

2012-03-28 02:01:38 [ndbd] INFO -- Angel connected to '10.32.33.120:1186'

2012-03-28 02:01:38 [ndbd] INFO -- Angel allocated nodeid: 36

 

最后打開兩個sql節點131和133

#service mysqld start

出現mysql success表示服務啟動成功

 

打開管理節點,終端輸入

# ndb_mgm

#ndb_mgm> show

顯示以下信息,則mysql-cluster安裝部署成功

Cluster Configuration

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

[ndbd(NDB)] 2 node(s)

id=2 @192.168.191.130 (mysql-5.5.20 ndb-7.4.4, Nodegroup: 0)

[ndb_mgmd(MGM)] 1 node(s)

id=1 @192.168.191.132 (mysql-5.5.20 ndb-7.4.4)

[mysqld(API)] 4 node(s)

id=3 @192.168.191.131 (mysql-5.5.20 ndb-7.4.4)

id=4 @192.168.191.133 (mysql-5.5.20 ndb-7.4.4)

id=5 (not connected, accepting connect from any host)

id=6 (not connected, accepting connect from any host)

可以看到各個節點已經連接上了。

 

以下是關於mgm相關的命令

# ndb_mgm

# ndb_mgm> show 查看各節點情況。  

# ndb_mgm> all report memory 查看各數據節點使用情況  

# ndb_mgm>create nodegroup 3創建數據節點分組   

# mysql> alter online table data_house reorganize partition; 調整分區數據

# ndb_mgm>shutdown關閉節點

# ndb_mgm>exit退出

常見問題

Mysqld端服務無法啟動

[root@localhost Desktop]#service mysqld start

Starting mysql.the service quit without updating PID file (/[FAILED]/var/mysql/log/localhost.localdomain.pid).

先去查看日志

#cd /var/mysql/data

#less localhost.localdomain.err

如果錯誤是

Fatal error:can’t open and lock privilege tables:Table’mysql.user’ doesn’t exist

解決方法:

終端輸入

到mysql目錄下/usr/local/mysql

輸入

Scripts/mysql_install_db –user=mysql(初始化數據庫即可)

其他問題請注意查看問題所在的文件夾權限問題

測試

1、從SQL節點131登錄,創建數據庫和表,進行簡單測試。

mysql> create database tltest ;

mysql> use tltest;

Database changed

mysql> create table test1(id int,name varchar(10)) engine=ndb ;

mysql> insert into test1 values(1,'tl');

mysql> select * from test1 ;

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

| id   | name  |

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

|  1 |    tl   |

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

登陸133節點,查看效果,庫,表和數據已經同步。

從133節點插入一條數據,同樣登陸131,也能看到數據已經同步。


尾注:本系列文檔,筆者真機環境測試無誤得以分享,純屬原創,若有轉載,請注釋出處.:真機環境下MySQL-Cluster搭建文檔


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM