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