一、yum安裝
1、到阿里云源下載最新rpm安裝包到服務(wù)器安裝
#wget https://mirrors.aliyun.com/mongodb/yum/redhat/7/mongodb-org/4.0/x86_64/RPMS/mongodb-org-server-4.0.1-1.el7.x86_64.rpm
#rpm -ivh mongodb-org-*.rpm
#systemctl start mongod #啟動(dòng)mongod服務(wù)
#systemctl enable mongod #設(shè)置開(kāi)機(jī)啟動(dòng)
相關(guān)文件路徑
二、二進(jìn)制安裝
1、下載二進(jìn)制安裝包解壓安裝
#wget https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-rhel70-4.0.1.tgz
#tar -zxvf mongodb-linux-x86_64-rhel70-4.0.1.tgz
#mv mongodb-linux-x86_64-rhel70-4.0.1 /usr/local/mongodb
#cd /usr/local/mongodb
#mkdir -pv {conf,log,data/db1} #創(chuàng)建配置文件、日志、數(shù)據(jù)目錄
# echo "export PATH=$PATH:/usr/local/mongodb/bin" > /etc/profile.d/mongodb.sh #設(shè)置環(huán)境變量
#source /etc/profile #讓環(huán)境變量生效
#useradd mongod -s /bin/false #新建MongoDB運(yùn)行賬戶
#chown -R mongod:mongod /usr/local/mongodb/ #更改mongod目錄用戶和屬組
2、新建配置文件mongodb.conf
#vim /usr/local/mongodb/conf/mongodb.conf
# mongod.conf
# for documentation of all options, see:
# http://docs.mongodb.org/manual/reference/configuration-options/
# where to write logging data.
systemLog:
destination: file
logAppend: true
path: /usr/local/mongodb/log/mongod-log-1.log
# Where and how to store data.
storage:
dbPath: /usr/local/mongodb/data/db1
journal:
enabled: true
# engine:
# mmapv1:
# wiredTiger:
# how the process runs
processManagement:
fork: true # fork and run in background
pidFilePath: /usr/local/mongodb/mongod.pid # location of pidfile
timeZoneInfo: /usr/share/zoneinfo
# network interfaces
net:
port: 27017
bindIp: master # Enter 0.0.0.0,:: to bind to all IPv4 and IPv6 addresses or, alternatively, use the net.bindIpAll setting.
#security:
#operationProfiling:
#replication:
#sharding:
## Enterprise-Only Options
#auditLog:
#snmp:
3、新建service服務(wù)文件
#vim /usr/lib/systemd/system/mongod.service
[Unit]
Description=MongoDB Database Server
After=network.target
Documentation=https://docs.mongodb.org/manual
[Service]
User=mongod
Group=mongod
Environment="OPTIONS=-f /usr/local/mongodb/conf/mongodb.conf"
ExecStart=/usr/local/mongodb/bin/mongod $OPTIONS
PermissionsStartOnly=true
PIDFile=/usr/local/mongodb/mongod.pid
Type=forking
# file size
LimitFSIZE=infinity
# cpu time
LimitCPU=infinity
# virtual memory size
LimitAS=infinity
# open files
LimitNOFILE=64000
# processes/threads
LimitNPROC=64000
# locked memory
LimitMEMLOCK=infinity
# total threads (user+kernel)
TasksMax=infinity
TasksAccounting=false
# Recommended limits for for mongod as specified in
# http://docs.mongodb.org/manual/reference/ulimit/#recommended-settings
[Install]
WantedBy=multi-user.target
4、設(shè)置內(nèi)核參數(shù)
#echo 0 > /proc/sys/vm/zone_reclaim_mode
#sysctl -w vm.zone_reclaim_mode=0 #永久設(shè)置
#echo never > /sys/kernel/mm/transparent_hugepage/enabled
#echo never > /sys/kernel/mm/transparent_hugepage/defrag
5、啟動(dòng)測(cè)試
#systemctl start mongod #啟動(dòng)服務(wù)
#systemctl enable mongod #設(shè)置開(kāi)機(jī)啟動(dòng)
三、副本集配置
Master 192.168.133.128
Node1 192.168.133.129
Node2 192.168.133.130
1、三節(jié)點(diǎn)分別設(shè)置hosts
#cat <<EOF >> /etc/hosts
192.168.133.128 master
192.168.133.129 node1
192.168.133.130 node2
EOF
2、編輯配置文件
#Vim /etc/mongod.conf #所有節(jié)點(diǎn)配置文件添加如下兩行
replication:
replSetName: rs1
#systemctl restart mongod #重啟服務(wù)讓配置生效
3、連接master節(jié)點(diǎn)MongoDB
# mongo --host=master
>use admin
>rs.initiate() #初始化副本集
>rs.conf() #確認(rèn)設(shè)定
>rs.add(‘node1:27017’) #添加node1到rs1副本集
>rs.add({host:’node2:27017’,priority:5}) #添加node2到rs1副本集,并設(shè)置priority優(yōu)先級(jí)為5
>rs.conf() #確認(rèn)設(shè)定
>rs.status() #查看狀態(tài)
設(shè)置priority優(yōu)先級(jí)
>var config = rs.config()
>config.members[0].priority=6
>rs.reconfig(config) //重新更新配置
刪除節(jié)點(diǎn)
>rs.remove(‘node1:27017’)
4、數(shù)據(jù)同步測(cè)試
a. 在主庫(kù)插入數(shù)據(jù)
rs1:PRIMARY> db.user.insert({"姓名":"張三","年齡":20,"性別":"男"})
rs1:PRIMARY> db.user.find()
{ "_id" : ObjectId("5b7bca2a40d8bd576c4e3c54"), "姓名" : "張三", "年齡" : 20, "性別" : "男" }
b.登陸從節(jié)點(diǎn)查詢數(shù)據(jù)
# mongo --host=node1
rs1:SECONDARY>use admin
rs1:SECONDARY>rs.slaveOk() #開(kāi)啟從庫(kù)讀取
rs1:SECONDARY> db.user.find()
{ "_id" : ObjectId("5b7bca2a40d8bd576c4e3c54"), "姓名" : "張三", "年齡" : 20, "性別" : "男" }
5、故障轉(zhuǎn)移測(cè)試
a.關(guān)閉master MongoDB服務(wù)
# systemctl stop mongod
b.登陸任意從節(jié)點(diǎn)數(shù)據(jù)庫(kù),查看狀態(tài)
# mongo --host=node2
>use admin
>rs.status()
可以看到priority優(yōu)先級(jí)為5的節(jié)點(diǎn)已經(jīng)變成了主節(jié)點(diǎn)。
c.在新的主節(jié)點(diǎn)添加數(shù)據(jù)。
rs1:PRIMARY> db.user2.insert({"姓名":"李四","年齡":25,"性別":"女"})
WriteResult({ "nInserted" : 1 })
rs1:PRIMARY> db.user2.find()
{ "_id" : ObjectId("5b7bd44c6129560c71cc22e0"), "姓名" : "李四", "年齡" : 25, "性別" : "女" }
d.啟動(dòng)故障節(jié)點(diǎn)的MongoD服務(wù)
#systemctl start mongod
#mongo --host=master
> use admin
>rs.stauts()
可以看到故障服務(wù)器上線以后,又變成了主庫(kù)。
> db.user2.find() #查詢剛才添加的數(shù)據(jù)
{ "_id" : ObjectId("5b7bd44c6129560c71cc22e0"), "姓名" : "李四", "年齡" : 25, "性別" : "女" }