Mongodb的安裝、主從配置、replicaSet配置

來源:互聯網
上載者:User

一.Mongodb的安裝

 

環境:linux 64bit

版本:2.0.1

位置:/opt/mongodb

安裝步驟:

tar –zxvf mongodb-linux-x86_64-2.0.1.tar –C /opt/mongodb

mkdir /opt/mongodb/data

touch /opt/mongodb/logs

 

安裝是很簡單的,關鍵是下面的啟動的配置。啟動配置有三種情況,分別是正常的單主機啟動,主從啟動,複本集啟動三種方式。

1.       單主機啟動方式

啟動

cd /opt/mongodb/bin

/opt/mongodb/bin/mongod –f mongodb.conf

#mongodb.conf是自訂的啟動設定檔,其中參數auth表明需要認證才能登入,內容如下:

#start as daemon and need authentication

port=27017

fork=true

dbpath=/opt/mongodb/data/

logpath=/opt/mongodb/logs

auth=true

 

設定開機自動啟動(可選)

echo "/opt/mongodb/bin/mongod –f /opt/mongodb/bin/mongodb.conf" >> /etc/rc.local

 

設定密碼

#串連mongodb

cd /opt/mongodb/bin

./mongo

#預設進入到mongodb預設的test庫

#為資料庫設定使用者名稱密碼

#首先切換到admin庫,先建立一個管理員帳號

> use admin

> db.addUser("root","root");

#切換到test庫

use test

#為test庫添加使用者名稱和密碼

> db.addUser("testUser","123456");

#註:若此時顯示

Tue May 22 16:16:29 uncaught exception: error {

        "$err" : "unauthorized db:test lock type:-1 client:127.0.0.1",

        "code" : 10057

}

說明設定密碼已生效,此時要先轉到admin庫,輸入認證再轉回到test庫設定使用者名稱密碼,如下:

use admin

db.auth(“root”,”root”);

use test

#下次再串連mongodb時需要使用如下方式:

./mongo –u testUser –p 123456

#刪除使用者

Db.system.users.remove({“user”:”testUser”});

#註:mongodb的使用者名稱和密碼都是針對每一個庫的,所以不同的庫可以設定不同的使用者名稱和密碼。

2.       主從方式啟動

實際上現在這種方式已經不推薦使用了,推薦使用的是replicaset,下面會講到

假設已經將mongodb安裝在了兩台主機上ip分別為192.168.0.1和192.168.0.2上,下面是啟動配置

啟動master(192.168.0.1)
cd /opt/mongodb/
./bin/mongod --dbpath=/opt/mongodb/data --logpath=/opt/mongodb/logs
--master --oplogSize 64 --logappend  --port=27017 –fork

 

啟動slave(192.168.0.2)
cd /opt/mongodb/
./bin/mongod --dbpath=/opt/mongodb/data --logpath=/opt/mongodb/logs
--slave --source 192.168.0.1 --only test --slavedelay 10
--logappend  --port=27017 –fork

 

這樣配置就完成了,當然也可以將這些啟動參數像前面一樣寫在設定檔中,啟動時使用設定檔啟動。

配置完成後可以測試一下,如下:

在主機器上添加資料
cd /opt/mongodb/
./bin/mongo
db.foo.save({"id":123,"name":gongyong});
成功的話可以在從伺服器看到資料:
cd /opt/mongodb/
./bin/mongo
db.foo.find({"id":123})

 

 

3.       replcaSet的配置

我們假設有三台伺服器,分別已經安裝好了mongodb,有如下三段配置

#10.127.65.92上的配置

logpath=/opt/mongodb/logs

dbpath=/opt/mongodb/data/

port=27017

fork=true

logappend=true

replSet=rs1/10.127.65.95:27017

 

#10.127.65.95上的配置

logpath=/opt/mongodb/logs

dbpath=/opt/mongodb/data/

port=27017

fork=true

logappend=true

replSet=rs1/10.127.65.92:27017

 

#10.11.154.91上的配置

logpath=/opt/mongodb/logs

dbpath=/opt/mongodb/data/

port=27017

fork=true

logappend=true

replSet=rs1/10.127.65.92:27017,10.127.65.95:27017

分別將上面三段配置複製後放到每台mongodb的某個位置(推薦bin目錄),三台伺服器分別使用上面的配置啟動後,要進行初始化

首先串連上65.92這台mongo

./mongo -port 27017

這樣就串連上了mongodb的預設庫test,然後輸入如下指令:

> config_rs1={_id:'rs1',members:[

...{_id:0,host:'10.127.65.92:27017',priority:10},

...{_id:1,host:'10.127.65.95:27017',priority:9},

...{_id:2,host:'10.11.154.91:27017',priority:9}]

...}

> rs.initiate(config_rs1);

斷行符號後出現下面的提示:

{

   “info”:"Config now saved locallly. should come online in about a minute.",

   " ok":1

}

說明初始化成功,注意只需要在其中任何一台上初始化就可以

 

運行如下指令查看是否成功

rs.status()

 

然後退出再重新串連,發現游標變成下面這種就對了:

rs1:PRIMARY

 

配置完成後可以進行秘密和使用者名稱的設定,設定方式前面已經提到,需要注意的是,每台mongodb都需要用同樣的方式設定使用者名稱和秘密。

 

到這裡,mongodb的安裝,主從,複本集的配置就基本完成,再往後還有mongodb的叢集分區的搭建,在另一篇文章裡會詳細說明 http://gong1208.iteye.com/blog/1622078。

 

附:各啟動參數的說明

參數解釋: --dbpath 資料庫路徑(資料檔案)
--logpath 記錄檔路徑
--master 指定為主機器
--slave 指定為從機器
--source 指定主機器的IP地址
--pologSize 命令列參數(與--master一同使用)配置用於儲存給從節點可用的更新資訊佔用的磁碟空間(M為單位),如果不指定這個參數,預設大小為當前可用磁碟空間的5%(64位機器最小值為1G,32位機器為50M)。
--logappend 記錄檔末尾添加
--port 啟用連接埠號碼
--fork 在後台運行
--only 指定只複製哪一個資料庫
--slavedelay 指從複製檢測的時間間隔
--auth 是否需要驗證許可權登入(使用者名稱和密碼)
-h [ --help ]             show this usage information
--version                 show version information
-f [ --config ] arg       configuration file specifying additional options
--port arg                specify port number
--bind_ip arg             local ip address to bind listener - all local ips
                           bound by default
-v [ --verbose ]          be more verbose (include multiple times for more
                           verbosity e.g. -vvvvv)
--dbpath arg (=/data/db/) directory for datafiles    指定資料存放目錄
--quiet                   quieter output   靜默模式
--logpath arg             file to send all output to instead of stdout   指定日誌存放目錄
--logappend               appnd to logpath instead of over-writing 指定日誌是以追加還是以覆蓋的方式寫入記錄檔
--fork                    fork server process   以建立子進程的方式運行
--cpu                     periodically show cpu and iowait utilization 周期性的顯示cpu和io的使用方式
--noauth                  run without security 無認證模式運行
--auth                    run with security 認證模式運行
--objcheck                inspect client data for validity on receipt 檢查用戶端輸入資料的有效性檢查
--quota                   enable db quota management   開始資料庫配額的管理
--quotaFiles arg          number of files allower per db, requires --quota 規定每個資料庫允許的檔案數
--appsrvpath arg          root directory for the babble app server 
--nocursors               diagnostic/debugging option 調試診斷選項
--nohints                 ignore query hints 忽略查詢命中率
--nohttpinterface         disable http interface 關閉http介面,預設是28017
--noscripting             disable scripting engine 關閉指令碼引擎
--noprealloc              disable data file preallocation 關閉資料庫檔案大小預分配
--smallfiles              use a smaller default file size 使用較小的預設檔案大小
--nssize arg (=16)        .ns file size (in MB) for new databases 新資料庫ns檔案的預設大小
--diaglog arg             0=off 1=W 2=R 3=both 7=W+some reads 提供的方式,是唯讀,唯寫,還是讀寫都行,還是主要寫+部分的讀模式
--sysinfo                 print some diagnostic system information 列印系統診斷資訊
--upgrade                 upgrade db if needed 如果需要就更新資料庫
--repair                  run repair on all dbs 修複所有的資料庫
--notablescan             do not allow table scans 不運行表掃描
--syncdelay arg (=60)     seconds between disk syncs (0 for never) 系統同步重新整理磁碟的時間,預設是60s
Replication options:
--master              master mode 主複製模式
--slave               slave mode 從複製模式
--source arg          when slave: specify master as <server:port> 當為從時,指定主的地址和連接埠
--only arg            when slave: specify a single database to replicate 當為從時,指定需要從主複製的單一庫
--pairwith arg        address of server to pair with
--arbiter arg         address of arbiter server 仲裁伺服器,在主主中和pair中用到
--autoresync          automatically resync if slave data is stale 自動同步從的資料
--oplogSize arg       size limit (in MB) for op log 指定動作記錄的大小
--opIdMem arg         size limit (in bytes) for in memory storage of op ids指定儲存動作記錄的記憶體大小
Sharding options:
--configsvr           declare this is a config db of a cluster 指定shard中的設定管理員
--shardsvr            declare this is a shard db of a cluster 指定shard伺服器

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.