一、主從複製
1.主從複製是一個簡單的資料庫同步備份的叢集技術.
1.1在資料庫叢集中要明確的知道誰是主伺服器,主伺服器只有一台.
1.2從伺服器要知道自己的資料來源也就是對於的主服務是誰.
1.3--master用來確定主伺服器,--slave 和 –source 來控制從伺服器
1.主從複製叢集案例
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第一張圖表明A是活躍的B和C是用於備份的
1.2第二張圖當A出現了故障,這時候叢集根據權重演算法推選出B為活躍的資料庫
1.3第三張圖當A恢複後他自動又會變為備份資料庫
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()
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.優先順序相同時候仲裁組建的規則
對於優先順序相同的時候會根據時間,比如:A是活躍節點,B、C為複本集的時候,
當A宕機的時候,mongo會選擇B、C中更新時間最近的為活躍節點。
6.讀寫分離操作à擴充讀
6.1一般情況下作為副本的節點是不能進行資料庫讀操作的
但是在讀取密集型的系統中讀寫分離是十分必要的
6.2設定讀寫分離
slaveOkay : true
很遺憾他在shell中無法掩飾,這個特性是被寫到mongoDB的
驅動程式中的,在java和node等其他語言中可以完成
7.Oplog
他是被儲存在本機資料庫local中的,他的每一個文檔保證這一個節點操作
如果想故障恢複可以更徹底oplog可已經盡量設定大一些用來儲存更多的操作
資訊
改變oplog大小
主庫 --master --oplogSize size