MongoDB副本集的搭建
一、安裝準備
1、修改系統配置
#關閉selinux、firewall
#修改/etc/security/limits.conf添加以下內容:
- soft nofile 65536
- hard nofile 65536
- soft nproc 65536
- hard nproc 65536
#修改/etc/security/limits.d/20-nproc.conf - soft nproc 65536
3、創建賬戶、目錄
groupadd -g 600 mongo
useradd -u 600 -g mongo mongo
二、安裝步驟
1、解壓文件
tar xvf mongodb-linux-x86_64-enterprise-rhel70-3.6.2.tgz -C /usr/local/
cd /usr/local
mv mongodb-linux-x86_64-enterprise-rhel70-3.6.2/ mongodb
cd mongodb
mkdir -p data/db
mkdir log
touch log/mongod.log
mkdir etc
touch etc/mongod.conf
chown -R mongo.mongo /usr/local/mongodb
2、分別在每臺機器上配置config文件
vim etc/mongod.conf
logpath = /usr/local/mongodb/log/mongod.log # 指定mongodb日誌文件
logappend = true # 使用追加的方式寫日誌
port = 27017 #設置端口號為27017
bind_ip = 192.168.1.221
fork = true #設置以守護進程的方式啟動mongod
replSet = bsbgpsrs #設置副本集的名字為myrs,同一副本集群的replSet名稱
su - mongo
#修改環境變量
PATH=$PATH:$HOME/bin:/usr/local/mongodb/bin
export PATH
#啟動
yum install -y net-snmp* gcc-c++
nohup mongod -f /usr/local/mongodb/etc/mongod.conf >/dev/null 2>&1 &
4、初始化副本集
登錄任意一臺機器的mongodb後臺管理shell:
cd /usr/local/mongodb
./bin/mongo
use admin
config = {
"_id":"bsbgpsrs",
"members":[
{"_id":0,"host":"192.168.198.224:27017"},
{"_id":1,"host":"192.168.198.225:27017"},
{"_id":2,"host":"192.168.198.226:27017",arbiterOnly:true}
]
}
rs.initiate(config); #初始化配置
5、查看副本集狀態
rs.status();
6 、添加驗證
use admin
db.createUser({user:"admin",pwd:"Mongo/2018",roles:["root"]})
db.auth("admin","Mongo/2018")
三、測試副本集
1、測試副本集的數據復制功能
此時在我的機器上192.168.198.224是主節點,我們用mongo來登錄shell。
cd /usr/local/mongodb
./bin/mongo
use test #創建test數據庫
db.testdb.insert({"name":"yaya"}); #插入數據
我們用副本節點登錄shell,我這裏是192.168.198.225:
cd /usr/local/mongodb
./bin/mongo
use test
show tables
此時會報錯:
[thread1] Error: listCollections failed: {
"ok" : 0,
"errmsg" : "not master and slaveOk=false",
"code" : 13435,
"codeName" : "NotMasterNoSlaveOk"
}
因為mongodb默認是從主節點讀寫數據的,副本節點上不允許讀,需要設置副本節點可以讀。
myrs:SECONDARY> db.getMongo().setSlaveOk();
此時就可以讀取數據了:
repset:SECONDARY> db.testdb.find();
控制臺輸出:{ "_id" : ObjectId("59676d711881041abab44477"), "name" : "yaya" }
所以,數據復制的功能是可用的。
2、測試副本集的故障轉移功能
將主節點192.168.198.224的mongod進程殺死:
myrs:PRIMARY> use admin
myrs:PRIMARY> db.shutdownServer()
此時可以看到,192.168.198.225原本是副節點,此時自動轉換為主節點。可以通過rs.status()來查看。
四、其他設置
1、取消透明大頁在/etc/rc.d/rc.local增加下列內容:
if test -f /sys/kernel/mm/transparent_hugepage/enabled; then
echo never > /sys/kernel/mm/transparent_hugepage/enabled
fi
if test -f /sys/kernel/mm/transparent_hugepage/defrag; then
echo never > /sys/kernel/mm/transparent_hugepage/defrag
fi
chmod +x /etc/rc.d/rc.local
2、Mongodb C drive安裝
tar xvf mongo-c-driver-1.6.1.tar.gz
cd mongo-c-driver-1.6.1/
./configure -disable-automatic-init-and-cleanup
make
make install
MongoDB副本集的搭建