程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> MYSQL數據庫 >> MySQL綜合教程 >> MySQL Cluster 7.2.4集群配置

MySQL Cluster 7.2.4集群配置

編輯:MySQL綜合教程

MySQL Cluster 7.2.4集群配置   准備 32位和64位版本  3台服務器  202.38.128.153 dbs2 64位 202.122.32.68 dbs1 64位 192.168.32.22 erpdbtest 32位 管理節點(ndb_mgmd) 192.168.32.22 erpdbtest 32位 數據節點(ndbd)    202.122.32.68 dbs1 64位   202.38.128.153 dbs2 64位 SQL節點(mysqld) 202.122.32.68  dbs1 64位  202.38.128.153 dbs2 64位 wget http://dev.mysql.com/get/Downloads/MySQL-Cluster-7.2/mysql-cluster-gpl-7.2.4-linux2.6-i686.tar.gz/from/http://gd.tuwien.ac.at/db/mysql/    www.2cto.com   卸載Mysql  rpm –qa | grep SQL rpm –e mysql... 刪除/etc/my.cnf   /var/lib/mysql
  關閉防火牆 Iptables是一個包含在絕大多數Linux發行版中的防火牆。在默認安裝的RHEL中,防火牆是打開的,且隨機啟動,如果要關閉防火牆,可以使用以下命令: service iptables stop 以上命令執行完畢之後效果只能保持到下次重啟。重啟後的配置就還原了,如果希望能夠在重啟之後還能夠保持防火牆的關閉狀態,可以使用以下命令: chkconfig –level 35 iptables off
  關閉SELinux SELinux的全稱是Security-EnhancedLinux,是由美國國家安全局NSA開發的訪問控制體制。SELinux可以最大限度地保證Linux系統的安全。 在默認安裝的Linux系統中,SELinux默認是開啟的,配置文件是/etc/selinux/config,一般測試過程中使用“permissive”模式,這樣僅會在違反SELinux規則時發出警告,然後修改規則,最後由用戶覺得是否執行嚴格“enforcing”的策略,禁止違反規則策略的行為。規則決定SELinux的工作行為和方式,策略決定具體的安全細節如文件系統,文件一致性。在安裝過程中,可以選擇“激活”、“警告”或者“關閉”SELinux。默認設置為“激活”。
  為了避免SELinux影響到群集功能,需要關閉SELinux系統的功能 1、    安裝管理節點(192.168.32.22)  解壓文件   www.2cto.com   tar -zvxf mysql-cluster-gpl-7.2.4-linux2.6-i686.tar.gz 創建安裝目錄  mkdir -p /usr/local/mysql/bin  mkdir -p /usr/local/mysql/ndbdata  添加執行文件路徑  vi ~/.bash_profile  PATH=$PATH:$HOME/bin:/usr/local/mysql/bin  拷貝執行文件  cd mysql-cluster-gpl-7.2.4-linux2.6-i686 cp bin/ndb_mgmd /usr/local/mysql/bin cp bin/ndb_mgm /usr/local/mysql/bin 創建日志文件存儲目錄  mkdir /var/lib/mysql-cluster  創建配置文件目錄及文件  mkdir /usr/local/mysql/cluster-conf  vi /usr/local/mysql/cluster-conf/config.ini  編輯配置文件:  ########################以下為配置文件內容#################    [ndbd default]  NoOfReplicas=2 #復制成員個數 DataMemory=80M  #數據存儲可以分配的內存 IndexMemory=18M #索引存儲可以分配的內存    [ndb_mgmd] #定義管理節點的IP地址或主機名 id=1 hostname=192.168.32.22  DataDir=/var/lib/mysql-cluster    [ndbd]  #定義數據節點 id=11  HostName=202.122.32.68  DataDir=/usr/local/mysql/ndbdata   [ndbd]   www.2cto.com   id=12  HostName=202.38.128.153 DataDir=/usr/local/mysql/ndbdata    [mysqld]#定義SQL節點 id=21  HostName=202.122.32.68  [mysqld] id=22  HostName=202.38.128.153   [mysqld] id=23   ########################以上為配置文件內容################# 2、    安裝數據節點 ( 202.122.32.68 dbs1  202.38.128.153 dbs2 )   解壓文件  tar -zxvf mysql-cluster-gpl-7.2.4-linux2.6-x86_64.tar.gz  創建安裝目錄 mkdir -p /usr/local/mysql/bin mkdir -p /usr/local/mysql/ndbdata 拷貝執行文件 cp mysql-cluster-gpl-7.2.4-linux2.6-x86_64/bin/ndbd /usr/local/mysql/bin 添加執行文件路徑 vi ~/.bash_profile PATH=$PATH:$HOME/bin:/usr/local/mysql/bin 創建配置文件: vi /etc/my.cnf 分別在主機添加如下內容: [mysql_cluster] #配置數據節點連接管理節點 ndb-connectstring=192.168.32.22 3、安裝SQL節點(202.122.32.68 dbs1  202.38.128.153 dbs2):   www.2cto.com   解壓文件  tar -zxvf mysql-cluster-gpl-7.2.4-linux2.6-x86_64.tar.gz  拷貝安裝文件 mv mysql-cluster-gpl-7.2.4-linux2.6-x86_64 /usr/local/mysql 添加mysql用戶 groupadd mysql useradd -g mysql mysql 添加權限 chown -R mysql:mysql /usr/local/mysql 拷貝配置文件 cp /usr/local/mysql/support-files/my-large.cnf /etc/my.cnf 初始化數據庫 cd /usr/local/mysql scripts/mysql_install_db --user=mysql 拷貝守護進程所需文件 cp /usr/local/mysql/support-files/mysql.server /etc/rc.d/init.d/mysqld 配置守護進程 chkconfig –add mysqld chkconfig –level 35 mysqld on 添加執行文件路徑 vi ~/.bash_profile PATH=$PATH:$HOME/bin:/usr/local/mysql/bin 更改配置文件 vi /etc/my.cnf 分別編輯如下信息: [mysqld]  #配置SQL節點與管理節點連接 port            = 3306 socket          = /tmp/mysql.sock ndbcluster ndb-connectstring=192.168.32.22 4、啟動及關閉mysql cluster   www.2cto.com   啟動順序:管理服務器->存儲節點->SQL節點 a、啟動管理節點 rm mysql/mysql-cluster/ndb_1_config.bin.1 #不是必須的,如果config.ini有改動則要加上 ndb_mgmd -f /usr/local/mysql/cluster-conf/config.ini b、啟動存儲節點 ndbd –initial #(第一次啟動必須添加選項,另外備份/恢復,修改配置文件也需要執行) ndbd    #不是第一次啟動需要執行的命令 c、啟動SQL節點 /etc/rc.d/init.d/mysqld start 或service mysqld start 啟動後可以用mysql -uroot -p 驗證mysql服務狀態 關閉順序:SQL節點->管理節點 a、關閉SQL節點 /etc/rc.d/init.d/mysqld stop 或service mysqld stop b、關閉管理節點 ndb_mgm〉 shutdown   5、驗證配置的正確性 要先啟動管理節點 再啟動數據節點 等啟動完後 再起sql節點 否則會出錯 1、在管理節點執行:ndb_mgm -> show   ndb_mgm> show Cluster Configuration --------------------- [ndbd(NDB)]     2 node(s) id=11   @202.122.32.68  (mysql-5.5.19 ndb-7.2.4, Nodegroup: 0, Master)   啟動完 id=12   @202.38.128.153  (mysql-5.5.19 ndb-7.2.4, starting, Nodegroup: 0)  正在起   [ndb_mgmd(MGM)] 1 node(s) id=1    @192.168.32.22  (mysql-5.5.19 ndb-7.2.4)   [mysqld(API)]   3 node(s) id=21   @202.122.32.68  (mysql-5.5.19 ndb-7.2.4) id=22   @202.38.128.153  (mysql-5.5.19 ndb-7.2.4) id=23 (not connected, accepting connect from any host)   www.2cto.com   正常狀態   ndb_mgm> show Cluster Configuration --------------------- [ndbd(NDB)]     2 node(s) id=11   @202.122.32.68  (mysql-5.5.19 ndb-7.2.4, Nodegroup: 0, Master) id=12   @202.38.128.153  (mysql-5.5.19 ndb-7.2.4, Nodegroup: 0)   [ndb_mgmd(MGM)] 1 node(s) id=1    @192.168.32.22  (mysql-5.5.19 ndb-7.2.4)   [mysqld(API)]   3 node(s) id=21   @202.122.32.68  (mysql-5.5.19 ndb-7.2.4) id=22   @202.38.128.153  (mysql-5.5.19 ndb-7.2.4) id=23 (not connected, accepting connect from any host)   2、在其中一個SQL節點創建數據庫,添加數據。要等啟動完再操作。   mysql -uroot -p create database ndbtest; use ndbtest; CREATE TABLE `t1` (   `id` int(11) NOT NULL AUTO_INCREMENT,   PRIMARY KEY (`id`) ) ENGINE=ndbcluster  DEFAULT CHARSET=gbk;   NDB: Could not acquire global schema lock (266)Time-out in NDB,   啟動完成前 如果在一個節點執行添加數據庫的操作,不能同步到其他節點。
  3、在另一個SQL節點,如果能夠存在添加的數據庫和數據,則說明配置成功 進入sql節點,在test數據庫創建表 CREATE TABLE `t1` (  www.2cto.com     `id` int(11) NOT NULL AUTO_INCREMENT,   PRIMARY KEY (`id`) ) ENGINE=ndbcluster  DEFAULT CHARSET=gbk 切換到2台數據節點服務器~/mysql/data/ndb_2_fs和~/mysql/data/ndb_3_fs看看, 或者直接去數據庫查,數據已經同步了!  關閉集群服務 關閉sql節點等同於停止mysql服務,此時外界數據不將再進來。然後關閉管理節點 ~/mysql/bin/ndb_mgm -e shutdown rm ~/mysql/mysql-cluster/ndb_1_config.bin.1 #不是必須的,如果config.ini有改動則要加上 這樣操作後,管理節點和數據節點都將停止服務 Notes: 1:如果發現關閉一台機器的ndbd進程,另一台機器的ndbd的進程也關閉,則需要修改參數NoOfReplicas。 2:./ndbd --initial 不能同時在所有數據節點機器上執行,如執行,會刪除所有數據 3:可以像操作非簇類型的數據庫那樣,操作mysqld節點 4:每次修改config.ini文件,重啟ndb_mgmd時,需要刪除mysql-cluster文件下的ndb_1_config.bin.1文件, 因為他默認調用此文件 
  5:NDB 簇不支持自動發現數據庫的功能,這點很重要,一旦在一個數據節點上創建了世界(world)數據庫和它的表,在簇中的每個SQL節點上還需要發出命令 CREATE DATABASE world,後跟FLUSH TABLES。這樣,節點就能識別數據庫並讀取其表定義。(在本版本MySQL Cluster 7.1.5下數據庫也會自動同步的) 6:如果在相關節點服務器啟動時,注意查看~/mysql/mysql-cluster目錄內的相關日志文件以獲取錯誤信息. 7:在管理節點的配置文件裡各[mysqld],[ndbd]和[ndb_mgmd]配置的選項值順序應該如下: [mysqld] Id=4 HostName=192.168.208.3 Id在頂端緊跟其後的是HostName,如果順序錯了,當SQL或數據節點連接管理節點時,管理節點無法正確的定位 到其對應的節點配置上. 因為無法定位到對應的節點配置,當沒有剩余的[空節點]時,客戶端節點啟動時(./mysqld or ./ndbd) 還會報: Configuration error: Error : Could not alloc node id at 192.168.0.231 port 1186: No free   www.2cto.com   node id found for mysqld  (API).Failed to initialize consumers  8:[空節點]是沒有指定HostName選項的節點配置均為空節點,空節點可以用來動態配置一些動態IP的節點, 一般管理節點的 配置文件要預留3個以上的空節點,因為備份時需要連接一個節點,如下: [mysqld] Id=6 # ps -ef|grep mysql root     13882     1  0 15:25 pts/5    00:00:00 /bin/sh /usr/local/mysql/bin/mysqld_safe --datadir=/usr/local/mysql/data --pid-file=/usr/local/mysql/data/dbs1.pid mysql    14185 13882  0 15:25 pts/5    00:00:00 /usr/local/mysql/bin/mysqld --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data --plugin-dir=/usr/local/mysql/lib/plugin --user=mysql --log-error=/usr/local/mysql/data/dbs1.err --pid-file=/usr/local/mysql/data/dbs1.pid --socket=/tmp/mysql.sock --port=3306  
  作者 bigshuai

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved