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 オオー!
まだ全然さわってないのでいろいろやってみたいですね。