搭建高可用mongodb集羣

【mongo基礎】php

MongoDB 是一個基於分佈式文件存儲的數據庫。由 C++ 語言編寫。sql

SQL術語/概念 MongoDB術語/概念 解釋/說明
database database 數據庫
table collection 數據庫表/集合
row document 數據記錄行/文檔
column field 數據字段/域
index index 索引
table joins   錶鏈接,MongoDB不支持
primary key primary key 主鍵,MongoDB自動將_id字段設置爲主鍵

 

【mongo搭建--副本集】mongodb

一、建立mongo數據存放路徑:~/mongo_data/replset/data數據庫

二、編寫配置文件~/mongo_data/replset/mongo.confapp


dbpath=/home/XX/mongo_data/replset/data
logpath=/home/XX/mongo_data/replset/replset.log
pidfilepath=/home/XX/mongo_data/replset/replset.pid
directoryperdb=true
logappend=true
replSet=testrs
bind_ip=10.10.148.130
port=27017
oplogSize=10000
fork=true
noprealloc=true分佈式

參數解釋:測試

dbpath:數據存放目錄日誌

logpath:日誌存放路徑code

pidfilepath:進程文件,方便中止mongodbserver

directoryperdb:爲每個數據庫按照數據庫名創建文件夾存放

logappend:以追加的方式記錄日誌

replSet:replica set的名字

bind_ip:mongodb所綁定的ip地址

port:mongodb進程所使用的端口號,默認爲27017

oplogSize:mongodb操做日誌文件的最大大小。單位爲Mb,默認爲硬盤剩餘空間的5%

fork:之後臺方式運行進程

noprealloc:不預先分配存儲

 

三、啓動 mongo服務:mongod -f  mongo.conf

about to fork child process, waiting until server is ready for connections.
forked process: 29583
child process started successfully, parent exiting

四、初始化副本集

在三臺機器上任意一臺機器登錄mongo

mongo
#使用admin數據庫
> use admin
switched to db admin
#定義副本集配置變量,這裏的 _id:」repset」 和上面命令參數「 –replSet repset」 要保持同樣。
>config = { _id:"repset", members:[
... {_id:0,host:"192.168.1.136:27017"},
... {_id:1,host:"192.168.1.137:27017"},
... {_id:2,host:"192.168.1.138:27017"}]
... }
#輸出(省略)
#初始化副本集配置
>rs.initiate(config);
#輸出成功,幾十秒至1~2分鐘
{
        "info" : "Config now saved locally.  Should come online in about a minute.",
        "ok" : 1
}
#查看日誌,副本集啓動成功後,138爲主節點PRIMARY,13六、137爲副本節點SECONDARY。
#或者客戶端鏈接 mongo查看

#mongodb默認是從主節點讀寫數據的,副本節點上不容許讀,須要設置副本節點能夠讀。
repset:SECONDARY> db.getMongo().setSlaveOk();

測試

 

PHP 鏈接 mongo副本集

<?php

$conn = new Mongo("mongodb://《id1》:27017,<id2>:27017,<id3>:27027",array('replicaSet'=>'replset'));
$db = $conn->selectDB('test');
$data=array('name'=>'summer','time'=>time());
$collection=$db->selectCollection('message');
try{
      $collection->insert($data);
}catch(MongoCursorException $e){
    echo $e->getMessage();
}
相關文章
相關標籤/搜索