MongoDB主従+php実現
環境
172.6.115.5.202 プリマル
172.6.111.171 secondary
172.6.115.157 secondary
一、MongoDB取付
1.yumダウンロードでmongodbをインストールする
拡張元http://repo.mongodb.org/yum/redhat/mongodb-org-3.0.repo
mongodb-org-3.7-1.el 6.6 x 86_64. rpm嗳メタデータパッケージは、下の4つのコンポーネントを自動的にインストールすることができます.
mongodb-org-mongos-3.7-1.el6.x 86_64.rpm菵 mongod守護プログラムおよび関連する設定と初期化スクリプト
mongodb-org-server-3.7-1.el6.x 86_64.rpm菵 モンゴスデーモン
mongodb-org-shell-3.7-1.el6.x 86_64.rpm菵 ongo shell環境
mongodb-org-tools-3.7-1.el6.x 86_64.rpm菵 モングDBツール
2.プロファイルvimを編集する /etc/mongod.com nf
1)次の2行の注釈を削除して、再起動エラーを防ぐ.
fork:true
ピdFilePath:/var/mongodb/mongod.pid
2)bind_ipは複数のIPをバインドして、コンマで仕切って、すべてを傍受するようです.
3.設定パラメータを変更して、モノグラムを起動する
echo never>/sys/ケネル/mm/tranparent_hugepage/enaboled
echo never>/sys/ケネル/mm/tranparent_hugepage/defrage
vim/etc/security/limits.com nfを編集し、内容を追加します.
monofile 6400
monofile 6400
monogod soft nproc 32000
monogod hard nproc 32000
service mogd start
注:起動が遅いです.これはデータを書いています./var/lib/monto、起動できないなら、mongod-f/etc/mongod.com方式で、エラーが表示されます.
4.3台のマシンのMongoDB配置ファイルvim/etc/mongod.comを編集し、再起動する
内容:
##1)replicationのコメントを削除する
##2)下記のパラメータを追加します.
## バイナリログに似ています.
oplogSizMB:20
## コピーセットの名前
replSet Name:huang gzhenping
5.ログファイルtail/var/log/mongodb/mongod.logを見る
6.主上配置、複製セットを構築する
use admin嗳主上进入admin庫
config={u id:「hungzhenping」、members:「{u id:0,host:"172.6.115.02:27017]」、{u id:1,host:"172.6.115.157:27017]、{u id:2,host:"172.16 6.111.171:27017]] #機械を配置する
RS.initiate(config) #更新
s.status() #状態を表示
3台のマシンの情報が表示され、メインの状態がPRIMARYに変わりました.
1)RS.status()コマンドを実行すると、3台のマシンが見つからないので、手動で追加を実行する必要があります.
RS.add(「172.16.115.157」)
RS.add(「172.6.111.171」)
2)スレーブの状態が「stateStr」:「START UP」の場合、実行が必要です.
var config={u id:「hungzhenping」、members:「{u id:0,host:"172.6.115.02:27017]」、{u id:1,host:"172.6.115.157:27017]、{u id:2,host:2,host:"172.6.111.171:27017]]
RS.initiate(config)
7.上から登録して、状態はもう「SECONDARY」になりました.
二、MongoDBマスタテスト
1.mongodbコピー集テスト
1)主に倉庫を建て、集合を建てる
アメリカmdb
db.creat Collection('testA')
show dbs
show tables
2)上から見たら、ライブラリとセットの同期に成功しました.
s.slaaveOk()
show dbs
2.副本集は重みを変更し、メインマシンをシミュレートする.
1)主に異なる重みを設定し、表示する
cfg=rs.co nf()
cfg.members[0].prority=3
cfg.members[1].prority=2
cfg.members[2].prority=1
rs.reconfig(cfg)
rs.co nfig()
有効な重みを表示:
iptables-I INPUT-p tcp--dport 27017-j DROP
元ホスト:接続に失敗しました.
元のマシン:状態はPRIMARYに変わりました.
RS.status()表示状態:
use mydb 2
db.reat Collection('testB')
4)古いマスターを元に戻すと、自動的にマスター状態に切り替わり、自分がオフラインしたときに新しいマスタで作成したライブラリを同期させます.
iptables-D INPUT-p tcp--dport 27017-j DROP
三、MongoDB結合php
1.ダウンロードしてmono拡張モジュールをインストールする
wgethttps://github.com/mongodb/mongo-php-driver-legacy/archive/master.zip
unzip mono-php-driver-legacy-master.zip
cd mono-php-driver-legacy-master
/usr/bin/phpize
./configre--with-php-config=/usr/bin/php-config
メークmake install
2.phpプロファイルvim/etc/php.iniを編集し、拡張モジュールをロードする
3.試験ファイルvim/usr/local/apphe 2/httdocs/1.phpを編集します.
内容:
172.6.115.5.202 プリマル
172.6.111.171 secondary
172.6.115.157 secondary
一、MongoDB取付
1.yumダウンロードでmongodbをインストールする
拡張元http://repo.mongodb.org/yum/redhat/mongodb-org-3.0.repo
mongodb-org-3.7-1.el 6.6 x 86_64. rpm嗳メタデータパッケージは、下の4つのコンポーネントを自動的にインストールすることができます.
mongodb-org-mongos-3.7-1.el6.x 86_64.rpm菵 mongod守護プログラムおよび関連する設定と初期化スクリプト
mongodb-org-server-3.7-1.el6.x 86_64.rpm菵 モンゴスデーモン
mongodb-org-shell-3.7-1.el6.x 86_64.rpm菵 ongo shell環境
mongodb-org-tools-3.7-1.el6.x 86_64.rpm菵 モングDBツール
2.プロファイルvimを編集する /etc/mongod.com nf
1)次の2行の注釈を削除して、再起動エラーを防ぐ.
fork:true
ピdFilePath:/var/mongodb/mongod.pid
2)bind_ipは複数のIPをバインドして、コンマで仕切って、すべてを傍受するようです.
3.設定パラメータを変更して、モノグラムを起動する
echo never>/sys/ケネル/mm/tranparent_hugepage/enaboled
echo never>/sys/ケネル/mm/tranparent_hugepage/defrage
vim/etc/security/limits.com nfを編集し、内容を追加します.
monofile 6400
monofile 6400
monogod soft nproc 32000
monogod hard nproc 32000
service mogd start
注:起動が遅いです.これはデータを書いています./var/lib/monto、起動できないなら、mongod-f/etc/mongod.com方式で、エラーが表示されます.
4.3台のマシンのMongoDB配置ファイルvim/etc/mongod.comを編集し、再起動する
内容:
##1)replicationのコメントを削除する
##2)下記のパラメータを追加します.
## バイナリログに似ています.
oplogSizMB:20
## コピーセットの名前
replSet Name:huang gzhenping
5.ログファイルtail/var/log/mongodb/mongod.logを見る
6.主上配置、複製セットを構築する
use admin嗳主上进入admin庫
config={u id:「hungzhenping」、members:「{u id:0,host:"172.6.115.02:27017]」、{u id:1,host:"172.6.115.157:27017]、{u id:2,host:"172.16 6.111.171:27017]] #機械を配置する
RS.initiate(config) #更新
s.status() #状態を表示
3台のマシンの情報が表示され、メインの状態がPRIMARYに変わりました.
> rs.initiate(config)
{ "ok" : 1 }
huangzhenping:OTHER> rs.status()
{
"set" : "huangzhenping",
"date" : ISODate("2017-01-14T20:24:59.490Z"),
"myState" : 1,
"members" : [
{
"_id" : 0,
"name" : "172.16.115.202:27017",
"health" : 1,
"state" : 1,
"stateStr" : "PRIMARY",
"uptime" : 297,
"optime" : Timestamp(1484425453, 1),
"optimeDate" : ISODate("2017-01-14T20:24:13Z"),
"electionTime" : Timestamp(1484425455, 1),
"electionDate" : ISODate("2017-01-14T20:24:15Z"),
"configVersion" : 1,
"self" : true
},
{
"_id" : 1,
"name" : "172.16.115.157:27017",
"health" : 1,
"state" : 2,
"stateStr" : "SECONDARY",
"uptime" : 45,
"optime" : Timestamp(1484425453, 1),
"optimeDate" : ISODate("2017-01-14T20:24:13Z"),
"lastHeartbeat" : ISODate("2017-01-14T20:24:57.851Z"),
"lastHeartbeatRecv" : ISODate("2017-01-14T20:24:58.343Z") ,
"pingMs" : 0,
"configVersion" : 1
},
{
"_id" : 2,
"name" : "172.16.111.171:27017",
"health" : 1,
"state" : 2,
"stateStr" : "SECONDARY",
"uptime" : 45,
"optime" : Timestamp(1484425453, 1),
"optimeDate" : ISODate("2017-01-14T20:24:13Z"),
"lastHeartbeat" : ISODate("2017-01-14T20:24:57.863Z"),
"lastHeartbeatRecv" : ISODate("2017-01-14T20:24:58.262Z") ,
"pingMs" : 1,
"configVersion" : 1
}
],
"ok" : 1
}
huangzhenping:PRIMARY>
注:1)RS.status()コマンドを実行すると、3台のマシンが見つからないので、手動で追加を実行する必要があります.
RS.add(「172.16.115.157」)
RS.add(「172.6.111.171」)
2)スレーブの状態が「stateStr」:「START UP」の場合、実行が必要です.
var config={u id:「hungzhenping」、members:「{u id:0,host:"172.6.115.02:27017]」、{u id:1,host:"172.6.115.157:27017]、{u id:2,host:2,host:"172.6.111.171:27017]]
RS.initiate(config)
7.上から登録して、状態はもう「SECONDARY」になりました.
二、MongoDBマスタテスト
1.mongodbコピー集テスト
1)主に倉庫を建て、集合を建てる
アメリカmdb
db.creat Collection('testA')
show dbs
show tables
2)上から見たら、ライブラリとセットの同期に成功しました.
s.slaaveOk()
show dbs
2.副本集は重みを変更し、メインマシンをシミュレートする.
1)主に異なる重みを設定し、表示する
cfg=rs.co nf()
cfg.members[0].prority=3
cfg.members[1].prority=2
cfg.members[2].prority=1
rs.reconfig(cfg)
rs.co nfig()
有効な重みを表示:
huangzhenping:PRIMARY> rs.config()
{
"_id" : "huangzhenping",
"version" : 2,
"members" : [
{
"_id" : 0,
"host" : "172.16.115.202:27017",
"arbiterOnly" : false,
"buildIndexes" : true,
"hidden" : false,
"priority" : 3,
"tags" : {
},
"slaveDelay" : 0,
"votes" : 1
},
{
"_id" : 1,
"host" : "172.16.115.157:27017",
"arbiterOnly" : false,
"buildIndexes" : true,
"hidden" : false,
"priority" : 2,
"tags" : {
},
"slaveDelay" : 0,
"votes" : 1
},
{
"_id" : 2,
"host" : "172.16.111.171:27017",
"arbiterOnly" : false,
"buildIndexes" : true,
"hidden" : false,
"priority" : 1,
"tags" : {
},
"slaveDelay" : 0,
"votes" : 1
}
],
"settings" : {
"chainingAllowed" : true,
"heartbeatTimeoutSecs" : 10,
"getLastErrorModes" : {
},
"getLastErrorDefaults" : {
"w" : 1,
"wtimeout" : 0
}
}
}
2)メインは27017ポートを無効にし、メインマシンをシミュレートする.iptables-I INPUT-p tcp--dport 27017-j DROP
元ホスト:接続に失敗しました.
元のマシン:状態はPRIMARYに変わりました.
RS.status()表示状態:
huangzhenping:PRIMARY> rs.status()
{
"set" : "huangzhenping",
"date" : ISODate("2017-01-22T15:48:15.453Z"),
"myState" : 1,
"members" : [
{
"_id" : 0,
"name" : "172.16.115.202:27017",
"health" : 0,
"state" : 8,
"stateStr" : "(not reachable/healthy)",
"uptime" : 0,
"optime" : Timestamp(0, 0),
"optimeDate" : ISODate("1970-01-01T00:00:00Z"),
"lastHeartbeat" : ISODate("2017-01-22T15:48:14.551Z"),
"lastHeartbeatRecv" : ISODate("2017-01-22T15:48:14.632Z"),
"pingMs" : 0,
"lastHeartbeatMessage" : "Failed attempt to connect to 172.16.115.202:27017; couldn't connect to server 172.16.115.202:27017 (172.16.115.202), connection attempt failed",
"configVersion" : -1
},
{
"_id" : 1,
"name" : "172.16.115.157:27017",
"health" : 1,
"state" : 1,
"stateStr" : "PRIMARY",
"uptime" : 16333,
"optime" : Timestamp(1484429320, 1),
"optimeDate" : ISODate("2017-01-14T21:28:40Z"),
"electionTime" : Timestamp(1485100022, 1),
"electionDate" : ISODate("2017-01-22T15:47:02Z"),
"configVersion" : 2,
"self" : true
},
{
"_id" : 2,
"name" : "172.16.111.171:27017",
"health" : 1,
"state" : 2,
"stateStr" : "SECONDARY",
"uptime" : 5989,
"optime" : Timestamp(1484429320, 1),
"optimeDate" : ISODate("2017-01-14T21:28:40Z"),
"lastHeartbeat" : ISODate("2017-01-22T15:48:14.751Z"),
"lastHeartbeatRecv" : ISODate("2017-01-22T15:48:14.749Z"),
"pingMs" : 0,
"lastHeartbeatMessage" : "could not find member to sync from",
"configVersion" : 2
}
],
"ok" : 1
}
3)新しいマスタで、ライブラリと集合を作成します.use mydb 2
db.reat Collection('testB')
4)古いマスターを元に戻すと、自動的にマスター状態に切り替わり、自分がオフラインしたときに新しいマスタで作成したライブラリを同期させます.
iptables-D INPUT-p tcp--dport 27017-j DROP
三、MongoDB結合php
1.ダウンロードしてmono拡張モジュールをインストールする
wgethttps://github.com/mongodb/mongo-php-driver-legacy/archive/master.zip
unzip mono-php-driver-legacy-master.zip
cd mono-php-driver-legacy-master
/usr/bin/phpize
./configre--with-php-config=/usr/bin/php-config
メークmake install
2.phpプロファイルvim/etc/php.iniを編集し、拡張モジュールをロードする
3.試験ファイルvim/usr/local/apphe 2/httdocs/1.phpを編集します.
内容:
mydb;
echo "Database mydb selected";
?>
4.Crl local host/1.phpをテストします.