arinux

Linux サーバー設定備忘録
<< MySQL (6) - virtual_alias_maps, virtual_alias_domains | main | MySQL (8) - MySQL Cluster (2) >>
MySQL (7) - MySQL Cluster (1)


メモ サーバー構築環境


用途管理ノードデータノード/SQLノード
機種DELL PE650IBM x336、NEC Express5800
メモリー512MB2GB/台
OSCentOS 5.2
kernel2.6.18-92.el5
glibc2.5-24
mysql5.1.30
mysql-cluster6.3.20



メモ MySQL Cluster の構成


ここでは、以下のように MySQL Cluster を構成します。
MySQL Cluster の構成


  • 点線の部分が、物理的な一台のサーバーを指し、以下の 3台構成にしています。
    • 【10.1.1.11】 管理ノード
    • 【10.1.1.21】 データノードと SQLノード
    • 【10.1.1.22】 データノードと SQLノード
  • 各ノードは、それぞれユニークな id を持ちます。
  • 以下は、各ノードの説明です。


管理ノードクラスターの設定、管理作業を行います。データノードの構成情報も持ちます。クラスターを構築するには、まず最初に管理ノードを起動し、データノード、SQLノードの順に起動します。各データノードや SQLノードのは、自身の起動時に、この管理ノードに対して定義情報を問い合わます。管理ノードの実体は ndb_mgmd というデーモンです。
データノード実態は ndbd です。ndb とは、MySQL のストレージエンジン(MyISAM、InnoDB など)の一つです。ndb が複数のサーバ上で起動している場合、お互いを認識して同期します。クライアントからは、単一ノードとして見えます(つまり、クラスターとして動きます)。テーブルは、このデータノードに格納されます。
SQLノードndb ストレージエンジンを使用した MySQL サーバー。クラスター化されたデータノードにアクセスします。SQL ノードは、実際は単にクラスターデータにアクセスするアプリケーションを意味します。接続方法は、他のストレージエンジンを使用する場合と同じで、クライアントからの接続ポートはデフォルト 3306 を使用します。mysqld を起動する際は、「--ndbcluster」 オプションが必要、また table 作成の際も 「engine=ndbcluster」 を付加する必要があります。



メモ 管理ノード設定


  1. 「mysql-cluster」 をインストールします。
    http://download.softagency.net/MySQL/Downloads/MySQL-Cluster-6.3/ から、
    「mysql-cluster-gpl-6.3.20-linux-i686-glibc23.tar.gz」 をダウンロードして、「/usr/local/src」 に置きます。

  2. 「/usr/local」 に解凍します。
  3.  管理ノード
    [root]# cd /usr/local/src
    [root]# tar zxvf mysql-cluster-gpl-6.3.20-linux-i686-glibc23.tar.gz -C /usr/local
    


  4. シンボリックリンクを張ります。
  5.  管理ノード
    [root]# cd /usr/local
    [root]# ln -s mysql-cluster-gpl-6.3.20-linux-i686-glibc23 mysql
    


  6. クラスターのコンフィグ・ファイルを作成します。
  7.  管理ノード
    [root]# mkdir /usr/local/mysql-cluster
    [root]# cp /usr/local/mysql/support-files/ndb-config-2-node.ini /usr/local/mysql-cluster/config.ini
    [root]# vi /usr/local/mysql-cluster/config.ini
    
    [ndbd default]         #データノード(ndb)が参照する値です。
    NoOfReplicas= 2
    MaxNoOfConcurrentOperations= 10000
    DataMemory= 80M
    IndexMemory= 24M
    TimeBetweenWatchDogCheck= 30000
    DataDir= /usr/local/mysql-cluster
    MaxNoOfOrderedIndexes= 512
    
    [ndb_mgmd default]     #管理ノード(ndb_mgmd)が参照する値です。
    DataDir= /usr/local/mysql-cluster
    
    [ndb_mgmd]
    Id=1
    HostName= 10.1.1.11
    
    [ndbd]
    Id= 2
    HostName= 10.1.1.21
    
    [ndbd]
    Id= 3
    HostName= 10.1.1.22
    
    # TCP/IP Connections     #データノード同士を private LAN で直結する場合に追加。
    [TCP]
    NodeId1=2
    NodeId2=3
    HostName1=192.168.1.2
    HostName2=192.168.1.3
    
    [mysqld]
    Id= 4
    HostName= 10.1.1.21
    
    [mysqld]
    Id= 5
    HostName= 10.1.1.22
    
    [mysqld]
    Id= 6
    
    [mysqld]
    Id= 7
    
    # choose an unused port number
    # in this configuration 63132, 63133, and 63134
    # will be used
    [tcp default]
    PortNumber= 63132
    
    • NoOfReplicas
      • レプリケーション(複製)の数。1〜4 のいずれかを指定します。通常は 「2」 を指定します。「1」 を指定すると複製なしとなり、冗長性がなくなります。データノードは、お互いの複製を持ち合うためにノードグループを形成します。

      • ノードグループに属するデータノードの数は、NoOfReplicas の値と同じです。NoOfReplicas が 2、データノードが 2つの場合は、ノードグループは 1つになります。

      • MySQL Cluster データノードのレプリケーション


      • NoOfReplicas が 2、データノードの id が 2,3,4,5 の 4つの場合は、ノードグループ0 に id 2,3、ノードグループ1 に 4,5 のように、id の小さいものから順にノードグループを形成します。

      • MySQL Cluster データノードのレプリケーション


    • id
      • ノードのアドレスとして使用されるユニークな ID です。1〜63 までの整数で指定します。
    • [TCP]
      • データノード間をプライベートLAN で直結する場合に、各データノードの ID と IPアドレスを指定します。
      • 「NodeIdN」 と 「HostNameN」 の 「N」 の値は、同じ番号であれば、同じデータノードを指します。
      • 「NodeId」 には、該当のデータノードに指定した 「Id」 と同じ番号を指定します。
      • 「HostName」 には、該当のデータノードの IPアドレスを指定します。


  8. ポート番号 1186 を使用しますので、iptables などで制限している場合には、そのポートを開けます。

  9. ndb_mgmd
  10. のスタートアップ・スクリプトを作成します。
     管理ノード
    [root]# vi /etc/rc.d/init.d/ndb_mgmd
    
    #! /bin/bash
    
    # Source function library.
        . /etc/init.d/functions
    RETVAL=0
    
    prog=ndb_mgmd
    path=/usr/local/mysql/bin/ndb_mgmd
    conf=/usr/local/mysql-cluster/config.ini
    
    start() {
            echo -n $"Starting $prog: "
            $path -d -f $conf
            RETVAL=$?
            echo
            [ $RETVAL -eq 0 ] && touch /var/lock/subsys/$prog
            return $RETVAL
    }
    
    stop() {
            echo -n $"Stopping $prog: "
            killproc $path
            RETVAL=$?
            echo
            [ $RETVAL -eq 0 ] && rm -f /var/lock/subsys/$prog
            return $RETVAL
    }
    
    restart() {
            stop
            sleep 2
            start
    }
    
    case "$1" in
      start)
            start
            ;;
      stop)
            stop
            ;;
      restart)
            restart
            ;;
      status)
            status $path
            ;;
      condrestart)
            [ -f /var/lock/subsys/$prog ] && restart || :
            ;;
      *)
            echo $"Usage: $0 {start|stop|status|reload|restart|condrestart}"
            exit 1
    esac
    
    exit $?
    


  11. ndb_mgmd を起動します。
  12.  管理ノード
    [root]# /etc/rc.d/init.d/ndb_mgmd start
    ndb_mgmd を起動中:
    


  13. 管理コンソールを起動します。
  14.  管理ノード
    [root]# /usr/local/mysql/bin/ndb_mgm
    -- NDB Cluster -- Management Client --
    ndb_mgm>
    


  15. 現在のクラスターの情報を表示します。
     管理ノード
    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.1.1.21)
    id=3 (not connected, accepting connect from 10.1.1.22)
    
    [ndb_mgmd(MGM)] 1 node(s)
    id=1    @10.1.1.11  (mysql-5.1.30 ndb-6.3.20)
    
    [mysqld(API)]   4 node(s)
    id=4 (not connected, accepting connect from 10.1.1.21)
    id=5 (not connected, accepting connect from 10.1.1.22)
    id=6 (not connected, accepting connect from any host)
    id=7 (not connected, accepting connect from any host)
    



つづく

| arinux | MySQL | 10:17 | comments(1) | trackbacks(0) | pookmark |
MySQL Cluster構築にあたり、とてもわかりやすかったです。
| さにー | 2015/04/30 5:40 PM |









http://arinux.net/trackback/94
     12
3456789
10111213141516
17181920212223
24252627282930
31      
<< December 2017 >>
+ SELECTED ENTRIES
+ RECENT COMMENTS
+ RECENT TRACKBACK
+ CATEGORIES
+ ARCHIVES
+ 掲載予定のタイトル
  • Wordpress
  • Pukiwiki
  • SMTPs/POPs/IMAPs
  • fml
  • Tips
+ CSS Nite
+ MOBILE
qrcode
+ LINKS
+ RECOMMEND
+ PROFILE