敬的世界

          常用鏈接

          統計

          最新評論

          mysql cluster雙機集群

          一、介紹

          如何安裝配置基于2臺服務器的MySQL集群。并且實現任意一臺服務器出現問題或宕機時MySql集群依然能夠繼續運行。加下后續的(keepalived+lvs+mysql cluster文檔),可以實現Mysql雙機的高可用及負載均衡。
          安裝環境及軟件包:
          vmware workstation 5.5.3
          mysql-5.2.3-falcon-alpha.tar.gz
          gentoo 2006.1
          Server1: 192.168.1.111
          Server2:?? 192.168.1.110


          二、在Server1和Server2上安裝MySQL
          以下步驟需要在Server1和Server2上各做一次
          # mv mysql-5.2.3-falcon-alpha.tar.gz?? /tmp/package
          # cd /tmp/package
          # groupadd mysql
          # useradd -g mysql mysql
          # tar -zxvf mysql-5.2.3-falcon-alpha.tar.gz
          # rm -f mysql-5.2.3-falcon-alpha.tar.gz
          # mv mysql-5.2.3-falcon-alpha mysql
          # cd mysql
          # ./configure --prefix=/usr --with-extra-charsets=complex --with-plugin-ndbcluster --with-plugin-partition --with-plugin-innobase
          # make && make install
          #ln -s /usr/libexec/ndbd /usr/bin
          #ln -s /usr/libexec/ndb_mgmd /usr/bin
          #ln -s /usr/libexec/ndb_cpcd /usr/bin
          #ln -s /usr/libexec/mysqld /usr/bin
          #ln -s /usr/libexec/mysqlmanager /usr/bin
          #mysql_install_db --user=mysql

          三、安裝并配置節點
          以下步驟需要在Server1和Server2上各做一次
          1.配置管理節點配置文件:
          # mkdir /var/lib/mysql-cluster
          # cd /var/lib/mysql-cluster
          # vi config.ini
          在config.ini中添加如下內容:
          [ndbd default]
          NoOfReplicas= 2
          MaxNoOfConcurrentOperations= 10000
          DataMemory= 80M
          IndexMemory= 24M
          TimeBetweenWatchDogCheck= 30000
          DataDir= /var/lib/mysql-cluster
          MaxNoOfOrderedIndexes= 512
          StartPartialTimeout=100
          StartPartitionedTimeout=100
          ArbitrationTimeout=5000
          TransactionDeadlockDetectionTimeout=5000
          HeartbeatIntervalDbDb=5000
          StopOnError=0

          [ndb_mgmd default]
          DataDir= /var/lib/mysql-cluster
          [ndb_mgmd]
          Id=1
          HostName= 192.168.1.111
          [ndb_mgmd]
          Id=2
          HostName= 192.168.1.110
          [ndbd]
          Id= 3
          HostName= 192.168.1.111
          [ndbd]
          Id= 4
          HostName= 192.168.1.110
          [mysqld]
          ArbitrationRank=2 (非常重要,全靠有它,才可以形成仲裁競爭,從而當另一個機子當了時,此機還可以有知道partion完整的節點)
          [mysqld]
          ArbitrationRank=2
          [tcp default]
          PortNumber= 63132

          2.配置通用my.cnf文件,mysqld及ndbd,ndb_mgmd均使用此文件.
          # vi /etc/my.cnf
          在my.cnf中添加如下內容:
          [mysqld]
          default-storage-engine=ndbcluster?? 避免在sql語句中還要加入ENGINE=NDBCLUSTER。
          ndbcluster
          ndb-connectstring=192.168.1.111,192.168.1.110
          [ndbd]
          connect-string=192.168.1.111,192.168.1.110
          [ndb_mgm]
          connect-string=192.168.1.111,192.168.1.110
          [ndb_mgmd]
          config-file=/var/lib/mysql-cluster/config.ini
          [mysql_cluster]
          ndb-connectstring= 192.168.1.111,192.168.1.110

          保存退出后,啟動管理節點Server1為:
          # ndb_mgmd --ndb_nodeid=1
          啟動管理節點Server2為:
          # ndb_mgmd --ndb_nodeid=2

          注:在啟動時有一個警告提示
          Cluster configuration warning:
          ?? arbitrator with id 1 and db node with id 3 on same host 192.168.1.111
          ?? arbitrator with id 2 and db node with id 4 on same host 192.168.1.110
          ?? Running arbitrator on the same host as a database node may
          ?? cause complete cluster shutdown in case of host failure.
          說節點1和3,2和4的arbitrator一樣,可能引起整個集群失敗。(可以不用放在心上)

          四、初始化集群
          在Server1中
          # ndbd --nodeid=3 --initial
          在Server2中
          # ndbd --nodeid=4 --iniitial
          注:只有在第一次啟動ndbd時或者對config.ini進行改動后才需要使用--initial參數!

          五、檢查工作狀態
          在任意一臺機子上啟動管理終端:
          # ndb_mgm
          鍵入show命令查看當前工作狀態:(下面是一個狀態輸出示例)
          -- NDB Cluster -- Management Client --
          ndb_mgm> show
          Connected to Management Server at: 192.168.1.111:1186
          Cluster Configuration
          ---------------------
          [ndbd(NDB)]????? 2 node(s)
          id=3???? @192.168.1.111?? (Version: 5.2.3, Nodegroup: 0, Master)
          id=4???? @192.168.1.110?? (Version: 5.2.3, Nodegroup: 0)
          [ndb_mgmd(MGM)] 2 node(s)
          id=1???? @192.168.1.111?? (Version: 5.2.3)
          id=2???? @192.168.1.110?? (Version: 5.2.3)
          [mysqld(API)]??? 2 node(s)
          id=5 (not connected, accepting connect from any host)
          id=6 (not connected, accepting connect from any host)
          ndb_mgm>

          如果上面沒有問題,現在開始加入mysqld(API):
          注意,這篇文檔對于MySQL并沒有設置root密碼,推薦你自己設置Server1和Server2的MySQL root密碼。
          在Server1 中:
          #mysqld_safe --ndb_nodeid=5 --user=mysql &
          在Server2 中:
          #mysqld_safe --ndb_nodeid=6 --user=mysql &
          # ndb_mgm -e show
          信息如下:
          Connected to Management Server at: 192.168.1.111:1186
          Cluster Configuration
          ---------------------
          [ndbd(NDB)]????? 2 node(s)
          id=3???? @192.168.1.111?? (Version: 5.2.3, Nodegroup: 0, Master)
          id=4???? @192.168.1.110?? (Version: 5.2.3, Nodegroup: 0)
          [ndb_mgmd(MGM)] 2 node(s)
          id=1???? @192.168.1.111?? (Version: 5.2.3)
          id=2???? @192.168.1.110?? (Version: 5.2.3)
          [mysqld(API)]??? 4 node(s)
          id=5???? @192.168.1.111?? (Version: 5.2.3)
          id=6???? @192.168.1.110?? (Version: 5.2.3)

          ok,可以測試了:
          在Server1 中
          # /usr/local/mysql/bin/mysql -u root -p
          >create database aa;
          > use aa;
          > CREATE TABLE ctest (i INT) ;
          > INSERT INTO ctest () VALUES (1);
          > SELECT * FROM ctest;
          應該可以看到1 row returned信息(返回數值1)。
          如果上述正常,則換到Server2,觀察效果。如果成功,則在Server2中執行INSERT再換回到Server1觀察是否工作正常。
          如果都沒有問題,那么恭喜成功!

          六、破壞性測試
          將Server1或Server2的網線拔掉(即ifconfig eth0 down),觀察另外一臺集群服務器工作是否正常(可以使用SELECT查詢測試)。測試完畢后,重新插入網線即可。
          注意:在未對集群做任何讀寫操作前,此測試結果無效,因為,集群初始后只在/var/lib/mysql-cluster/下建了幾個空目錄,還沒有正常協同工作,會出現整個所有存儲(ndbd)節點關閉.
          也可以這樣測試:在Server1或Server2上:
          # ps aux | grep ndbd
          將會看到所有ndbd進程信息:
          root?????? 5578?? 0.0?? 0.3?? 6220 1964 ????????? S???? 03:14??? 0:00 ndbd
          root?????? 5579?? 0.0 20.4 492072 102828 ?????? R???? 03:14??? 0:04 ndbd
          root????? 23532?? 0.0?? 0.1?? 3680?? 684 pts/1???? S???? 07:59??? 0:00 grep ndbd
          然后殺掉一個ndbd進程以達到破壞MySQL集群服務器的目的:
          # kill -9 5578 5579
          之后在另一臺集群服務器上使用SELECT查詢測試。并且在管理節點服務器的管理終端中執行show命令會看到被破壞的那臺服務器的狀態。
          測試完成后,只需要重新啟動被破壞服務器的ndbd進程即可:
          # ndbd --ndb_nodeid=此存儲節點的id
          注意!前面說過了,此時是不用加--inital參數的!
          至此,MySQL雙機集群就配置完成了!


          posted on 2008-10-17 16:11 picture talk 閱讀(154) 評論(0)  編輯  收藏


          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
          主站蜘蛛池模板: 鄂温| 昔阳县| 宣武区| 商都县| 古田县| 琼结县| 志丹县| 密山市| 蒙城县| 道孚县| 凤城市| 深圳市| 志丹县| 阜城县| 聊城市| 会昌县| 营山县| 桂阳县| 沁阳市| 哈尔滨市| 西充县| 巩义市| 绥化市| 莎车县| 稻城县| 盖州市| 平安县| 吉安市| 南投县| 桃江县| 法库县| 息烽县| 姜堰市| 黄平县| 巍山| 安化县| 大荔县| 新民市| 伊川县| 湛江市| 娄底市|