MongoDB權威指南 第10章

2021-07-10 03:36:31 字數 3237 閱讀 3541

mongodb權威指南

10.1-同步

start

複製用於在多台伺服器之間備份資料.mongodb的複製功能是使用操作日誌oplog實現的,操作日誌包含了主節點的每一次寫操作.oplog是主節點local庫的乙個固定集合.備份節點通過查詢這個集合就可以知道需要進行複製的操作.

每個備份節點都維護著自己的oplog,記錄著每次從主節點複製資料的操作

mongodb在設計之初就考慮到了:將oplog中的操作執行多次與只執行一次的效果是一樣的

由於oplog大小是固定的,他只能儲存特定數量的操作日誌 如果執行大量的批量操作,oplog很快就會被填滿

10.1.1-初始化同步

> 1:刪除所有已存在資料庫:在這個過程中,所有現有的資料都會被刪除.應該只在不需要保留現有資料的情況下做初始化同步.

2:轉殖cloning:最耗時

3:oplog同步的第1步:轉殖過程中所有的操作都會被記到oplog中,如果有文件在轉殖過程中被移動了,需要重新轉殖

4:oplog同步第2步:將第乙個oplog同步中的操作記錄下來 5:本地資料與主節點在某個時間點資料完全一致後,開始建立索引

6:如果仍落後於同步源,將建立索引其間的所有操作全部同步過來,防止成為備份節點

7:當前成員完成了初始化同步,切換到普通同步狀態,這時當前節點即可成為備份節點了

從備份中恢復的速度會比使用mongod複製全部資料的速度要快得多

執行初始化同步時,會強制將當前成員的所有資料分頁載入到記憶體中,這會導致需要頻繁訪問的資料不能常駐記憶體,所以會導致很多請求變慢

10.1.2-處理陳舊資料
為了避免陳舊備份節點的出現,讓主節點使用比較大的oplog儲存足夠多的操作日誌是很重要的.大的oplog會占用更多磁碟空間,但是乙個折衷的選擇,因為磁碟會越來越便宜

10.2-心跳
每個成員每隔2秒就會向其他成員傳送乙個心跳請求(heartbeat request).心跳請求的資料量是非常小的,用於檢查每個成員的狀態

成員狀態            startup             startup2            recovering          arbiter             down            unknown             removed             rollback            fatal
10.3-選舉
整個選舉過程只會花費幾毫秒

如果選舉打成平局,每個成員都要等待30秒才能開始下次選舉

10.4-回滾

乙個經常會被誤用成員配置選項是設定每個成員的投票數量

改變成員的投票數量通常不會得到想要的結果,而且可能會導致大量的回滾操作

如果要回滾的資料量》300mb,或者要回滾30分鐘以上的操作,回滾就會失敗

10.1-同步

start

複製用於在多台伺服器之間備份資料.mongodb的複製功能是使用操作日誌oplog實現的,操作日誌包含了主節點的每一次寫操作.oplog是主節點local庫的乙個固定集合.備份節點通過查詢這個集合就可以知道需要進行複製的操作.

每個備份節點都維護著自己的oplog,記錄著每次從主節點複製資料的操作

mongodb在設計之初就考慮到了:將oplog中的操作執行多次與只執行一次的效果是一樣的

由於oplog大小是固定的,他只能儲存特定數量的操作日誌

如果執行大量的批量操作,oplog很快就會被填滿

10.1.1-初始化同步
1:刪除所有已存在資料庫:在這個過程中,所有現有的資料都會被刪除.應該只在不需要保留現有資料的情況下做初始化同步.

2:轉殖cloning:最耗時

3:oplog同步的第1步:轉殖過程中所有的操作都會被記到oplog中,如果有文件在轉殖過程中被移動了,需要重新轉殖

4:oplog同步第2步:將第乙個oplog同步中的操作記錄下來 5:本地資料與主節點在某個時間點資料完全一致後,開始建立索引

6:如果仍落後於同步源,將建立索引其間的所有操作全部同步過來,防止成為備份節點

7:當前成員完成了初始化同步,切換到普通同步狀態,這時當前節點即可成為備份節點了

從備份中恢復的速度會比使用mongod複製全部資料的速度要快得多

執行初始化同步時,會強制將當前成員的所有資料分頁載入到記憶體中,這會導致需要頻繁訪問的資料不能常駐記憶體,所以會導致很多請求變慢

10.1.2-處理陳舊資料
為了避免陳舊備份節點的出現,讓主節點使用比較大的oplog儲存足夠多的操作日誌是很重要的.大的oplog會占用更多磁碟空間,但是乙個折衷的選擇,因為磁碟會越來越便宜
10.2-心跳

每個成員每隔2秒就會向其他成員傳送乙個心跳請求(heartbeat request).心跳請求的資料量是非常小的,用於檢查每個成員的狀態

成員狀態

startup

startup2

recovering

arbiter

down

unknown

removed

rollback

fatal

10.3-選舉

整個選舉過程只會花費幾毫秒

出現網路問題時,心跳會在最多20秒後超時 如果選舉打成平局,每個成員都要等待30秒才能開始下次選舉

10.4-回滾

乙個經常會被誤用成員配置選項是設定每個成員的投票數量

改變成員的投票數量通常不會得到想要的結果,而且可能會導致大量的回滾操作

如果要回滾的資料量》300mb,或者要回滾30分鐘以上的操作,回滾就會失敗

mongodb權威指南

鍵 值 文件 集合 資料庫 mongodb例項 mongod執行資料庫,mongo連線並運算元據庫。在mongo中可以通過load函式,執行js.主埠 27017 監聽埠 28017 資料庫的管理資訊 show tables show collections?insert ducuments 在mo...

《Ansible權威指南》第1章

第一篇 part 1 基礎入門篇 第1章 ansible基礎入門 第2章 ansible基礎元素介紹 第3章 ansible ad hoc命令集 第4章 playbook快速入門 第5章 ansible playbook拓展 第1章 ansible基礎入門 從早期all in one 所有應用部署在...

重溫《js權威指南》 第7,8章

第七章 陣列 陣列是值的有序集合。js陣列是無型別的,陣列元素可以是任意型別,同乙個陣列中不同元素也可能有不同的型別。陣列可以動態增長或縮減,建立時無須生命那個乙個固定的大小並且陣列大小變化時也無須重新分配空間。js陣列可能是稀疏的 陣列的索引不一定連續。針對稀疏陣列,陣列的length屬性可能不管...