主從複製
副本集java
8888.confnode
dbpath = D:\software\MongoDBDATA\07\8888 #主數據庫地址
port = 8888 #主數據庫端口號
bind_ip = 127.0.0.1 #主數據庫所在服務器
master = true #肯定我是主服務器算法
8888mangodb.bat shell
mongod --config 8888.conf數據庫
8888shell.bat服務器
mongo 127.0.0.1:8888spa
7777.conf3d
dbpath = D:\software\MongoDBDATA\07\7777 #從數據庫地址
port = 7777 #從數據庫端口號
bind_ip = 127.0.0.1 #從數據庫所在服務器
#source = 127.0.0.1:8888 #肯定我數據庫端口
#這個配置項(source)能夠用shell動態添加
slave = true #肯定本身是從服務器blog
7777mangodb.bat ip
mongod --config 7777.conf
7777shell.bat
mongo 127.0.0.1:7777
1.主從複製是一個簡單的數據庫同步備份的集羣技術.
1.1在數據庫集羣中要明確的知道誰是主服務器,主服務器只有一臺.
1.2從服務器要知道本身的數據源也就是對於的主服務是誰.
1.3--master用來肯定主服務器,--slave 和 –source 來控制曾服務器
1.主從複製集羣案例
dbpath = D:\sortware\mongod\01\8888 主數據庫地址
port = 8888 主數據庫端口號
bind_ip = 127.0.0.1 主數據庫所在服務器
master = true 肯定我是主服務器
dbpath = D:\sortware\mongod\01\7777 從數據庫地址
port = 7777 從數據庫端口號
bind_ip = 127.0.0.1 從數據庫所在服務器
source = 127.0.0.1:8888 肯定我數據庫端口
slave = true 肯定本身是從服務器
2.主從複製的其餘設置項
--only 從節點指定複製某個數據庫,默認是複製所有數據庫
--slavedelay 從節點設置主數據庫同步數據的延遲(單位是秒)
--fastsync 從節點以主數據庫的節點快照爲節點啓動從數據庫
--autoresync 從節點若是不一樣步則重新同步數據庫
--oplogSize 主節點設置oplog的大小(主節點操做記錄存儲到local的oplog中)
3.利用shell動態添加和刪除從節點
不難看出從節點中關於主節點的信息所有存到local的sources的集合中
咱們只要對集合進行操做就能夠動態操做主從關係
掛接主節點:操做以前只留下從數據庫服務
db.sources.insert({「host」:」127.0.0.1:8888」})
刪除已經掛接的主節點:操做以前只留下從數據庫服務
db.sources.remove({「host」:」127.0.0.1:8888」})
1.副本集概念
1.1第一張圖代表A是活躍的B和C是用於備份的
1.2第二張圖當A出現了故障,這時候集羣根據權重算法推選出B爲活躍的數據庫
1.3第三張圖當A恢復後他自動又會變爲備份數據庫
1.副本集概念
dbpath = D:\sortware\mongod\02\A
port = 1111 #端口
bind_ip = 127.0.0.1 #服務地址
replSet = child/127.0.0.1:2222 #設定同伴
dbpath = D:\sortware\mongod\02\B
port = 2222
bind_ip = 127.0.0.1
replSet = child/127.0.0.1:3333
dbpath = D:\sortware\mongod\02\C
port = 3333
bind_ip = 127.0.0.1
replSet = child/127.0.0.1:1111
2.初始化副本集
use admin
db.runCommand({"replSetInitiate":
{
"_id":'child',
"members":[{
"_id":1,
"host":"127.0.0.1:1111"
},{
"_id":2,
"host":"127.0.0.1:2222"
},{
"_id":3,
"host":"127.0.0.1:3333"
}]
}
})
2.查看副本集狀態
rs.status()
2.Shell展現
2.關掉127.0.0.1:2222再查看狀態
3.節點和初始化高級參數
standard 常規節點:參與投票有可能成爲活躍節點
passive 副本節點:參與投票,可是不能成爲活躍節點
arbiter 仲裁節點:只是參與投票不復制節點也不能成爲活躍節點
4.高級參數
Priority 0到1000之間 ,0表明是副本節點 ,1到1000是常規節點
arbiterOnly : true 仲裁節點
用法
members":[{
"_id":1,
"host":"127.0.0.1:1111「,
arbiterOnly : true
}]」
5.優先級相同時候仲裁組建的規則
6.讀寫分離操做擴展讀
6.1通常狀況下做爲副本的節點是不能進行數據庫讀操做的
可是在讀取密集型的系統中讀寫分離是十分必要的
6.2設置讀寫分離
slaveOkay : true
很遺憾他在shell中沒法掩飾,這個特性是被寫到mongoDB的
驅動程序中的,在java和node等其餘語言中能夠完成
7.Oplog
他是被存儲在本地數據庫local中的,他的每個文檔保證這一個節點操做
若是想故障恢復能夠更完全oplog可已經儘可能設置大一些用來保存更多的操做
信息
改變oplog大小
主庫 --master --oplogSize size
副本集
mongo 127.0.0.1:1111
mongo 127.0.0.1:2222
mongo 127.0.0.1:3333
dbpath = D:\software\MongoDBDATA\07\1111
port = 1111 #端口
bind_ip = 127.0.0.1 #服務地址
replSet = child/127.0.0.1:2222 #設定同伴
dbpath = D:\software\MongoDBDATA\07\2222
port = 2222
bind_ip = 127.0.0.1
replSet = child/127.0.0.1:3333
dbpath = D:\software\MongoDBDATA\07\3333
port = 3333
bind_ip = 127.0.0.1
replSet = child/127.0.0.1:1111
use admin
db.runCommand({"replSetInitiate":
{
"_id":'child',
"members":[{
"_id":1,
"host":"127.0.0.1:1111"
},{
"_id":2,
"host":"127.0.0.1:2222"
},{
"_id":3,
"host":"127.0.0.1:3333"
}]
}
})
rs.status()
mongod --config A.conf
mongod --config B.conf
mongod --config C.conf