7 2 Cassandra快照備份

2021-08-13 10:30:23 字數 3009 閱讀 1501

cassandra通過對儲存在資料目錄中的所有磁碟資料檔案(sstable檔案)進行快照來備份資料。 您可以在系統處於聯機狀態時拍攝所有keyspace,單個keyapace或單個table的快照。

使用並行ssh工具(如pssh),可以快照整個群集。 這提供了最終一致的備份。 儘管在建立快照時沒有乙個節點與其副本節點保持一致,但恢復的快照使用cassandra的內建一致性機制恢復一致性。

執行全系統快照後,可以在每個節點上啟用增量備份來備份自上次快照後更改過的資料:每次將memtable重新整理到磁碟並建立sstable時,快照都將被複製到/data目錄的備份子目錄(jna已啟用)。壓實的sstables不會在/backups中建立快照,因為這些sstables不包含任何尚未備份的資料。

使用nodetool snapshot命令為每個節點建立快照 。 要獲取全域性快照,請使用並行ssh實用程式(如pssh)執行nodetool snapshot命令。

快照首先將所有記憶體中的寫入操作(memtables)重新整理到磁碟,然後為每個keyspace建立乙個sstable檔案的對映。 節點上必須有足夠的可用磁碟空間來容納資料檔案的快照。 乙個快照只需要很少的磁碟空間。 但是,由於快照不能刪除舊的過時資料檔案,因此快照可能會導致磁碟使用率隨著時間的推移而增長得更快。 快照完成後,您可以根據需要將快照檔案移動到其他位置,也可以將其保留在原位。

注意:cassandra只能在表system_schema存在時從快照中恢復資料。 建議您也備份表system_schema。

執行nodetool snapshot命令,指定主機名,jmx埠和金鑰空間。 例如:

$ nodetool -h localhost -p

7199 snapshot mykeyspace

快照是在 data/keyspace/table_name-uuid/snapshots/snapshot_name 目錄中建立的。 每個快照目錄都包含許多快照時資料的.db檔案。

例如:拍攝快照時,以前的快照檔案不會自動刪除。 您應該刪除不再需要的舊快照。

nodetool clearsnapshot命令將從每個keyspace的快照目錄中刪除所有存在的快照檔案。 您應該在快照備份之前執行此命令,以便在更新快照之前清除舊快照。

$ nodetool -h localhost -p

7199 clearsnapshot

$ nodetool clearsnapshot -t
檔名和路徑根據快照的型別而有所不同。 有關快照名稱和路徑的詳細資訊,請參閱nodetools快照 。

啟用增量備份(預設情況下禁用)時,cassandra會將每個可重新整理表的sstable對映到keyspace資料目錄下的備份目錄。 這允許在不傳輸整個快照的情況下將備份儲存在異地。 而且,增量備份與快照相結合,可以提供可靠的最新備份機制。 壓實的sstables不會在/backups中建立對映檔案,因為這些sstables不包含任何尚未備份的資料。 乙個時間點的快照,加上所有的增量備份和提交日誌,形成乙個完整的備份。

與快照一樣,cassandra不會自動清除增量備份檔案。建議在每次建立新快照時設定乙個程序來清除增量備份檔案。

編輯集群中每個節點上的cassandra.yaml配置檔案,並將incremental_backups的值更改為true。

從快照恢復keyapce需要表的所有快照檔案,如果使用增量備份,則包括在建立快照之後建立的任何增量備份檔案、sstables(從 repair、decommission等)在內。

注意:從快照和增量備份還原臨時會導致正在恢復的節點上的cpu和i / o活動密集。

此方法將快照目錄中的sstables複製到正確的資料目錄中。

1.確保表system_schema存在。當表system_schema存在時,cassandra只能從快照中恢復資料。 如果schema不存在並且尚未備份,則必須重新建立schema。

2.如有必要, 截斷**。

3.找到最近的快照資料夾。 例如:

data_directory/keyspace_name/table_name-uuid/snapshots/snapshot_name
4.將最新的快照sstable檔案目錄複製到data_directory / keyspace / table_name - uuid目錄 。

5.執行nodetool refresh.。

注意:您可能不需要在某些條件下截斷。 例如,如果某個節點丟失了乙個磁碟,則在恢復之前可能需要重新啟動,以便節點在開始還原過程之前繼續接收新的寫入。

截斷通常是必要的。 例如,如果意外刪除了資料,那麼該刪除的邏輯刪除後面的寫入時間戳將比快照中的資料晚。 如果恢復時沒有截斷(移除墓碑),cassandra將繼續遮蓋恢復的資料。 其他型別的重寫也會發生此行為並導致相同的問題。

如果節點位於5.0.10之前的datastax enterprise版本上,請重新啟動節點 。 此重新啟動是必需的,因為nodetool重新整理不尊重磁碟上現有的lcs級別,這會導致壓縮積壓。

此方法使用sstableloader來恢復快照。

1.確保表system_schema存在。當表system_schema存在時,cassandra只能從快照中恢復資料。 如果schema不存在並且尚未備份,則必須重新建立schema。

2.如有必要, 截斷**。

3.使用備份的sstables上的sstableloader工具還原最近的快照。

sstableloader將sstables流式傳輸到正確的節點。 不需要刪除提交日誌或者刪除重啟節點。

注意:您可能不需要在某些條件下截斷。 例如,如果某個節點丟失了乙個磁碟,則在恢復之前可能需要重新啟動,以便節點在開始還原過程之前繼續接收新的寫入。

截斷通常是必要的。 例如,如果意外刪除了資料,那麼該刪除的邏輯刪除後面的寫入時間戳將比快照中的資料晚。 如果恢復時沒有截斷(移除墓碑),cassandra將繼續遮蓋恢復的資料。 其他型別的重寫也會發生此行為並導致相同的問題。

hbase 資料備份(快照)

snapshot 快照 開啟快照功能,在hbase site.xml檔案中新增如下配置項 hbase.snapshot.enabled true 在hbase shell中使用clone snapshot,delete snapshot,list snapshots,restore snapshot...

lvm快照方式進行備份

1.建立快照 lvcreate size 100m snapshot name mdb snap01 dev vg0 mongodb因為是增量快照,100m是diff的大小.2.mount快照卷後,就開始拷貝了.採用寫時定向 cow 我猜測 快照生成後,原始卷對應塊的修改,應該是生成新的block,...

備份與快照的區別

快照 資料儲存的某一時刻的狀態記錄 備份 資料儲存的某一時刻的副本 原資料存放結構 邏輯位址01 234實體地址01 2345 6789 資料abc d邏輯位址01 234實體地址01 2345 6789 資料abc d生成快照時快照位址 0 1 對應的實體地址 0 3 將會被鎖定不可更改 此時將a...