yum實例
vim /etc/yum.repos.d/mongodb-org-3.2.repo
[mongodb-org-3.2] name=Mongodb baseurl=http://repo.mongodb.org/yum/redhat/6Server/mongodb-org/3.2/x86_64/ gpgcheck=0 enabled=1
然后yum -y install mongodb-org
便捷啟動腳本(更正一下,3.0 以上有自己官方的腳本,而且是有優化過的。即 不推薦使用這個。可以修改/etc/init.d/mongod 里面的配置),注意腳本里用戶為mongod,說以定義數據目錄的時候和日志 和配置文件的時候都需要chown -R 不然mong連日志都沒權限寫進去。
(以下都可以復制粘貼執行)
優化一:
echo "never" > /sys/kernel/mm/transparent_hugepage/enabled&&echo "never" > /sys/kernel/mm/transparent_hugepage/defrag
優化二:
cat >/etc/security/limits.d/mongodb-nproc.conf <<V # Default limit for number of user's processes to prevent # accidental fork bombs. # See rhbz #432903 for reasoning. * soft nproc 35000 mongod soft nproc unlimited V
#!/bin/bash instance=$1 action=$2 case "$action" in 'start') mongod -f /etc/$instance.cnf ;; 'stop') mongod -f /etc/$instance.cnf --shutdown ;; 'restart') mongod -f /etc/$instance.cnf --shutdown mongod -f /etc/$instance.cnf ;; esac #當然配置文件要放在/etc/下面咯 by:V
openssl rand -base64 741 > /data/mongo22.key --文件內容采base64編碼,一共741個字符 修改文件權限: chmod 600 /data/mongo22.key
配置文件實例
dbpath=/data/mongodata2 fork=true port=27019 logpath=/data/log/mongolog2/mongodb1.log auth=true keyFile = /data/mongo22.key replSet = qby
其中id 要和 replSet 中設置的一樣。而 config_repl 這個名字 可以隨意命名,相當於 副本集 的會議室。而members 相當於會議室里的成員。
> config_repl={_id:'gechongrepl',members:[ ... {_id:0,host:'192.168.91.128:27017',priority:10}, ... {_id:1,host:'192.168.91.129:27017',priority:9}, ... {_id:2,host:'192.168.91.130:27017',priority:9}]}
之后的添加和刪除節點可以用以下2個步驟來實現。
#比如會議的名稱還是和上面一樣是config_repl > config_repl={_id:'gechongrepl',members:[
... {_id:0,host:'192.168.91.128:27017',priority:10},
... {_id:1,host:'192.168.91.129:27017',priority:9},]}
>rs.reconfig(config_repl) #相當於重新加載了配置,這里你可以刪除節點或者增加節點。
>rs.status() #然后查看狀態
還有一種用rs.add("127.0.0.1:27020") 或者 rs.remove() 來進行。具體使用哪一種。自己區分。
============接下來 看一下主從。3.X 后面的主從有安全策略。當然要開啟用戶驗證,不然有什么意義呢。 所以必須要開key 選項 這里為主的配置文件
Master
dbpath=/data/mongodata fork=true port=27017 logpath=/data/log/mongolog/mongodb1.log auth=true master=true keyFile = /data/mongo.key
Slave
auth=true dbpath=/data/mongodata logpath=/data/log/mongolog/mongo1.log fork=true port=27017 slave=true #設置為slave source=172.16.38.178:27017 #指定Master在哪 keyFile = /data/mongo.key
當然也要有一個用戶驗證。有人會疑惑用哪個用戶來進行數據驗證和同步呢。Master會將操作記錄在 local。oplog里面,然后從服務器定期去獲取oplog內容。在slave上執行。
如果發現主從不同步,從上手動同步 db.runCommand({"resync":1}) #驗證過,發現admin 里面的表會消失。 知道為什么的,可以告訴我一下。 狀態查詢 db.runCommand({"isMaster":1}) #查詢自己是不是master
在叢庫上查詢主庫地址 > use local; switched to db local > db.sources.find();
#查看主從復制狀態 db.printReplicationInfo();