MongoDB-3.2.6 副本集 和主從


 

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(); 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM