MongoDB主従+php実現

15577 ワード

環境
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を見る
  MongoDB主从+php实现_第1张图片
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主从+php实现_第2张图片
二、MongoDBマスタテスト
1.mongodbコピー集テスト
    1)主に倉庫を建て、集合を建てる
     アメリカmdb
     db.creat Collection('testA')
     show dbs
     show tables
  wKiom1i-ndfhqvAAAAAS4mtdZl8376.png
    2)上から見たら、ライブラリとセットの同期に成功しました.
     s.slaaveOk()
     show dbs
  MongoDB主从+php实现_第3张图片
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
        元ホスト:接続に失敗しました.
   MongoDB主从+php实现_第4张图片
       元のマシン:状態はPRIMARYに変わりました.
   wKioL1i-nkiiGMIwAAAOaCuu-O4510.png  
       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')
  MongoDB主从+php实现_第5张图片
 
4)古いマスターを元に戻すと、自動的にマスター状態に切り替わり、自分がオフラインしたときに新しいマスタで作成したライブラリを同期させます.
      iptables-D INPUT-p tcp--dport 27017-j DROP
  MongoDB主从+php实现_第6张图片
三、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 
      wKiom1i-nv-SmKznAAAltOOeocM236.png
2.phpプロファイルvim/etc/php.iniを編集し、拡張モジュールをロードする
  wKiom1i-nw3R-zBHAAAKL5aTSLI099.png 
  wKioL1i-nxmzRggwAAARBv57UFU659.png
3.試験ファイルvim/usr/local/apphe 2/httdocs/1.phpを編集します.
    内容:
mydb;
echo "Database mydb selected";
?>
4.Crl local host/1.phpをテストします.
  wKiom1i-nyyiIAVDAAAOmD6yFek249.png