亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 數據庫 > MongoDB > 正文

MongoDB釋放空閑空間的幾種常用方法

2020-10-29 18:43:51
字體:
來源:轉載
供稿:網友

前言

當我們從MongoDB中刪除文檔或集合時,MongoDB并不會將已經占用了的磁盤空間釋放,它會一直維護已經占用了磁盤空間的數據文件,盡管數據文件中可能存在大大小小的空記錄列表(empty record list)。當客戶端程序再次插入文檔時,MongoDB會從空記錄列表中分配存儲空間給新文檔。那么為了更加有效的使用磁盤空間,我們需要對mongodb的數據文件做碎片整理以及未使用空間的回收。思想無非兩種:

1、對原數據進行重組

2、僅將數據復制出來,形成僅數據的完整備份

以下介紹幾種常用的實施方法:

1、compact

2、db.repairDatabase()

3、secondary節點重同步

4、db.copyDatabase()

一、compat

官網對該命令的定義:對集合中的所有數據和索引進行重寫和碎片整理。

使用方法

use yourdatabase;db.runCommand({ compact : 'yourCollection' });

注意事項

1、在執行命令前請保證你有比較新的備份

2、在使用MMAPv1存儲引擎的MongoDB上compact需要數據文件所在分區至少有2G的空閑空間

3、在使用WiredTiger存儲引擎的MongoDB上,compact命令將重寫集合和索引,且釋放未使用的空間,但使用MMAPv1存儲引擎的MongoDB上,該命令只對集合的數據文件進行碎片整理并重新創建其索引。不會釋放空間,在使用MMAPv1存儲引擎的MongoDB上回收空間,建議使用第三種方法“secondary節點重同步”

4、使用MMAPv1存儲引擎的MongoDB中的Capped Collections,是無法被壓縮的,但使用WiredTiger存儲引擎的MongoDB在執行compact時會進行壓縮。

5、在副本集上運行該命令時,要分別在每個節點執行

6、該命令只能在mongod實例上執行,不能再mongos實例上運行。也就是說針對分片集群的compact操作要分別在每個分片節點上執行。

7、一般該命令運行在secondary節點上,在執行時,會強制節點進入RECOVERING狀態,RECOVERING狀態的實例讀寫操作將被阻塞

8、再碰到特殊情況要停止運行該命令時,可通過db.currentOp()查詢進程信息,然后通過db.killOp()干掉進程

9、compact可能會增加數據文件的總大小和數量,尤其是第一次運行時。但這不會增加總集合使用的磁盤空間,因為存儲大小是數據庫文件中分配的數據量,而不是文件系統上文件的大小/數量

10、使用MMAPv1存儲引擎的MongoDB中的Capped Collections,是無法被壓縮的,但使用WiredTiger存儲引擎的MongoDB在執行compact時會進行壓縮。

二、db.repairDatabase()

官網該命令的定義:通過丟無效或損壞的數據老重建數據庫和索引。類似于文件系統修復命令fsck。所以此命令主要是用于修復數據。

使用方法

use yourdatabase;db.repairDatabase();

注意事項

1、db.repairDatabase()主要用于修復數據。若你擁有數據的完整副本,且有權限訪問,請使用第三種方法“secondary節點重同步”

2、在執行命令前請保證你有比較新的備份

3、此命令會完全阻塞數據庫的讀寫,謹慎操作

4、此命令執行需要數據文件所在位置有等同于所有數據文件大小總和的空閑空間再加上2G

5、在使用MMAPv1存儲引擎的secondary節點上執行該命令可以壓縮集合數據

6、在使用WiredTiger存儲引擎的MongoDB庫上執行不會有壓縮的效果

7、再碰到特殊情況要停止運行該命令時,可通過db.currentOp()查詢進程信息,然后通過db.killOp()干掉進程

8、非常消耗時間

三、secondary節點重同步

主要思想就是:刪除secondary節點中指定數據,使之與primary重新開始數據同步。當副本集成員數據太過陳舊,也可以使用重新同步。數據的重新同步與直接復制數據文件不同,MongoDB會只同步數據,因此重同步完成后的數據文件是沒有空集合的,以此實現了磁盤空間的回收。

使用方法

首先必須確保數據有完整的備份。

1、若是primary節點,先強制將之變為secondary節點,否則跳過此步驟:

 rs.stepdown(120);

2、然后在primary上刪除secondary節點:

 rs.remove("IP:port");

3、刪除secondary節點dbpath下的所有文件。

4、將節點重新加入集群,然后使之自動進行數據的同步:

 rs.add("IP:port");

5、等數據同步完成后,循環1-4的步驟可以將集群中所有節點的磁盤空間釋放

針對一些特殊情況,不能下線secondary節點的,可以新增一個節點到副本集中,然后secondary就自動開始數據的同步了。

總的來說,重同步的方法是比較好的,第一基本不會阻塞副本集的讀寫,第二消耗的時間相對前兩種比較短

四、db.copyDatabase()

mongodb還支持在線復制數據:db.copyDatabase("from","to","IP:port"),此種方法也能釋放空間,因為db.copyDatabase復制的數據,而不是表示在磁盤中的數據文件。但,該命令在4.0版本起被棄用;3.x版本還能繼續使用

如:

 db.copyDatabase("sourceDB","DistDB");

    將源庫sourceDB??截悶镈istDB。

當然,該命令支持遠程復制。

該命令的完整語法為:

db.copyDatabase(<源數據庫名稱>, <目標數據庫名稱>, <源mongodb的IP:port>, <源數據庫連接需要的賬戶>,<密碼>, <mechanism>)

以上:命令必須在目標數據庫服務器上執行。若源數據庫與目標數據庫存在于一個MongoDB服務器,<源mongodb的IP:port>, <源數據庫連接需要的賬戶>,<密碼>都可省略。<mechanism>是身份驗證類型,可選的。

注意事項

1、db.copyDatabase()不會阻塞源數據庫和目標數據庫數據的讀寫,因此可能會出現兩份數據不一致的情況

2、db.copyDatabase()復制索引數據會鎖定數據庫,此操作也會對其他數據庫產生影響

3、db.copyDatabase()不要在mongos實例中使用

4、db.copyDatabase()不要用于復制包含分片集合的數據庫

5、在4.0版中更改:db.copyDatabase()僅支持SCRAM進行身份驗證fromhost,<mechanism>選項。

6、某些不同版本的MongoDB間不支持此種復制方法,詳見鏈接:https://docs.mongodb.com/manual/reference/method/db.copyDatabase/

除此之外,還有一些方法,像使用導入/導出的方法(mongodump/mongorestore),這種方法在數據量非常大的情況是不適用的,因為導入導出的方法使用的全量的形式,要保證有足夠的空閑空間來存放導入的數據。

總結

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,如果有疑問大家可以留言交流,謝謝大家對武林網的支持。 

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
中文字幕日韩av| 欧美一级淫片丝袜脚交| 亚洲视频欧美视频| 欧美美最猛性xxxxxx| 久久久久久中文字幕| 欧美日韩在线免费| 91大神在线播放精品| 亚洲自拍偷拍在线| 亚洲人成亚洲人成在线观看| 91精品国产精品| 热久久99这里有精品| 91国内精品久久| 亚洲一级一级97网| 久久精品国产视频| 国产精品你懂得| 国产激情综合五月久久| 色综合影院在线| 日韩成人av在线| 久久久久久久久电影| 日韩欧美一区二区在线| 国产在线日韩在线| 日韩欧美中文免费| 久久国产精品偷| 91干在线观看| 一区二区欧美日韩视频| 琪琪第一精品导航| 国产精品成人一区| 日韩成人激情影院| 亚洲天堂av综合网| 色综合久久久888| 国产精品久久久久aaaa九色| 日本午夜精品理论片a级appf发布| 欧美天天综合色影久久精品| 日本韩国在线不卡| 9.1国产丝袜在线观看| 最近中文字幕2019免费| 精品国内产的精品视频在线观看| 免费97视频在线精品国自产拍| 久久精品2019中文字幕| 国产综合视频在线观看| 亚洲白拍色综合图区| 7m精品福利视频导航| 国产有码在线一区二区视频| 久久影院资源网| 久久久伊人日本| 色悠悠国产精品| 欧美寡妇偷汉性猛交| 久久影院资源站| 97色在线视频观看| 亚洲综合在线播放| 国产精自产拍久久久久久| 成人h片在线播放免费网站| 黑人巨大精品欧美一区免费视频| 欧美激情久久久久| 国产精品中文字幕在线观看| 自拍偷拍亚洲在线| 亚洲影院色无极综合| 国产视频欧美视频| 97超级碰在线看视频免费在线看| 欧美日韩人人澡狠狠躁视频| 亚洲电影免费观看高清完整版在线| 国产日韩欧美在线看| 欧美伦理91i| 91久久久久久国产精品| 成人性生交大片免费观看嘿嘿视频| 亚洲国产成人精品久久久国产成人一区| 亚洲自拍偷拍一区| 亚洲精品一区二区网址| 欧美精品日韩三级| 日韩视频亚洲视频| 在线日韩第一页| 亚洲免费伊人电影在线观看av| 国产精品视频网站| 97免费中文视频在线观看| 国内自拍欧美激情| 精品美女久久久久久免费| 欧美激情xxxx性bbbb| 欧美成年人视频| 26uuu另类亚洲欧美日本老年| 欧美大尺度在线观看| 亚洲国产欧美一区二区三区同亚洲| 久久成年人视频| 国产999精品视频| 亚洲成av人乱码色午夜| 亚洲大尺度美女在线| 亚洲电影免费观看高清完整版| 亚洲在线观看视频网站| 亚洲free嫩bbb| 中文字幕精品久久| 国产精品自拍网| 国产一区二中文字幕在线看| 国产精品av在线| 久久久亚洲网站| 欧美疯狂xxxx大交乱88av| 欧美黄色三级网站| 久久久www成人免费精品| 欧美一级片一区| 这里只有精品在线播放| 在线看片第一页欧美| 91精品国产高清自在线| 久久久久国产精品免费| 精品日韩视频在线观看| 欧美性猛交xxxx免费看| 2025国产精品视频| 欧美日韩精品在线| 国产精品草莓在线免费观看| 91网站在线看| 日韩一中文字幕| 久久久久久久999| 亚洲性生活视频| 国产日韩精品在线| 日韩欧美中文字幕在线播放| 91在线免费视频| 久久影视三级福利片| 2019中文字幕全在线观看| 一区二区亚洲精品国产| 久久精品美女视频网站| 91高清视频免费| 亚洲图片欧美午夜| 精品国产美女在线| 日韩成人在线视频观看| 精品久久久国产精品999| 在线观看久久久久久| 日韩视频永久免费观看| 国产亚洲欧洲在线| 九九热精品视频国产| 欧美国产精品日韩| 中国china体内裑精亚洲片| 成人在线观看视频网站| 久久久久国产视频| 成人免费看吃奶视频网站| 日韩av手机在线看| 国产在线观看精品一区二区三区| 亚洲一区二区三区乱码aⅴ| 九九精品视频在线| 日韩av在线看| 97人人模人人爽人人喊中文字| 精品国产一区二区三区久久狼黑人| 亚洲香蕉在线观看| 成人免费视频97| 日韩av资源在线播放| 亚洲黄色av网站| 亚洲免费电影在线观看| 久久久噜噜噜久噜久久| 国产精品高潮呻吟视频| 欧美日韩亚洲视频一区| 国产精品第一第二| 亚洲免费电影在线观看| 91精品国产综合久久久久久蜜臀| 国产精品九九九| 亚洲欧美激情精品一区二区| 精品国产自在精品国产浪潮| 国产精品久久久久久影视| 亚洲区一区二区| 国产精品一久久香蕉国产线看观看| 一本一本久久a久久精品牛牛影视| 都市激情亚洲色图| 国产精品久久久久久一区二区| 国产在线拍揄自揄视频不卡99| 日本午夜在线亚洲.国产| 国产999精品视频| 久久深夜福利免费观看| 中日韩午夜理伦电影免费| 欧美精品情趣视频|