MongoDB(3台のレプリケーション)

OSSのデータベースの有名なものとしては、MySQLやPostgreSQLがあります。
今回は、MongoDBというデータベースを扱ってみます。設定は比較的簡単でしたが、まだ暗記をしたわけではないので、メモメモ〆(.. )

MySQLのレプリケーションは意外と大変なんですよね。慣れた人には簡単なのかもしれませんが。。。
MongoDBはかなり簡単にできました。自動フェールオーバーもしますし、やっていて面白かったです。
では早速以下にまとめます。

ソースから入れてもいいのですが、せっかくパッケージが存在しているので、yumからインストール♪

# yum install mongodb-server

 
とりあえず起動をします。そのまま起動できると思いますが、、、ちなみに管理人は問題なくできました。

# /etc/init.d/mongod start
~
mongod を起動中:                                           [  OK  ]
~

 
プロセスを見てみると、起動していることが分かるはずです。これで使えるようになります。
すんなりいけば5分もかかりませんよねf(^^;)

# ps -ef | grep mongod
~
mongodb   7375     1  0 10:08 ?        00:00:00 /usr/bin/mongod --quiet -f /etc/mongodb.conf run
~

 

これで下準備はOK☆ここからが、レプリケーションの設定となります。順番にやっていけばできると思います!
1, それぞれの設定を変更
※ bind_ipはリッスンするIPアドレス、replSetはレプリケーションする際に設定するグループの名前のようなものです。

# vi /etc/mongodb.conf
~
bind_ip = 192.168.0.10
replSet=rep
~

 

2, 設定を反映

# /etc/init.d/mongod restart

 

3, リッスンの確認
※ ちなみに今回は3台のレプリケーションをしたので、3台設定をしました。

# netstat -ant
~
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address               Foreign Address             State
tcp        0      0 192.168.0.10:27017         0.0.0.0:*                   LISTEN
~

 

4, レプリケーションの設定
※ –hostで指定すると、そのサーバのMongoDBにログインできます。

# mongo --host 192.168.0.10
> config = {_id: "rep", members: [
  {_id: 0, host: '192.168.0.10:27017' },
  {_id: 1, host: '192.168.0.20:27017' },
  {_id: 2, host: '192.168.0.30:27017' }]
}

 
5, 設定を書き込み

> rs.initiate(config);
{
  "info" : "Config now saved locally.  Should come online in about a minute.",
  "ok" : 1
}

 

6, 最後に設定を確認
※ プライマリとセカンダリになっていることが分かると思います。

# mongo --host 192.168.0.10
rep:PRIMARY> rs.status()
{
  "set" : "rep",
  "date" : ISODate("2013-04-26T02:43:07Z"),
  "myState" : 1,
  "members" : [
  {
    "_id" : 0,
    "name" : "192.168.0.10:27017",
    "health" : 1,
    "state" : 1,
    "stateStr" : "PRIMARY",
    "uptime" : 169,
    "optime" : {
      "t" : 1366944049000,
      "i" : 1
    },
    "optimeDate" : ISODate("2013-04-26T02:40:49Z"),
    "self" : true
  },
  {
    "_id" : 1,
    "name" : "192.168.0.20:27017",
    "health" : 1,
    "state" : 2,
    "stateStr" : "SECONDARY",
    "uptime" : 128,
    "optime" : {
      "t" : 1366944049000,
      "i" : 1
    },
    "optimeDate" : ISODate("2013-04-26T02:40:49Z"),
    "lastHeartbeat" : ISODate("2013-04-26T02:43:07Z"),
    "pingMs" : 0
  },
  {
    "_id" : 2,
    "name" : "192.168.0.30:27017",
    "health" : 1,
    "state" : 2,
    "stateStr" : "SECONDARY",
    "uptime" : 126,
    "optime" : {
      "t" : 1366944049000,
      "i" : 1
    },
    "optimeDate" : ISODate("2013-04-26T02:40:49Z"),
    "lastHeartbeat" : ISODate("2013-04-26T02:43:07Z"),
    "pingMs" : 0
    }
  ],
  "ok" : 1
}

 

プライマリのMongoDBを停止したら他のサーバが自動的にプライマリになりましたw( ̄o ̄)w オオー!
まだ全然さわってないのでいろいろやってみたいですね。


コメントを残す

メールアドレスが公開されることはありません。