cassandra 备份_使用sstableloader恢复Cassandra Priam备份
cassandra 備份
我之前曾寫過關于設置Cassandra和Priam進行備份和集群管理的文章。 但是,我在此處提供的用于備份還原的示例并不適用于所有情況,例如,它可能不適用于完全獨立的群集。 或者在部分還原到一個表而不是整個數據庫的情況下。
在這種情況下,您可以選擇使用sstableloader實用程序進行還原。 它具有簡單明了的語法:
sudo sstableloader -d 172.35.1.2,172.35.1.3 -ts /etc/cassandra/conf/truststore .jks \ -ks /etc/cassandra/conf/node .jks -f /etc/cassandra/conf/cassandra .yaml \ ~ /keyspacename/table-0edcc420c19011e7a8c37656dd492a94如果您查看Priam生成的備份,則看起來您可以只復制特定表的文件(例如,通過AWS上的s3 aws cp),然后sstableloader導入它們。 但是有一個陷阱。 為了節(jié)省空間,Priam使用Snappy壓縮所有文件。 因此,如果您嘗試將它們提供給任何Cassandra實用程序,它將抱怨它們已損壞。
因此,在使用sstableloader或其他任何工具之前,您必須解壓縮它們。 但是如何? 好吧,Priam為此提供了一項服務-您通過將絕對路徑傳遞到壓縮文件,并將絕對路徑傳遞到應放置未壓縮文件的絕對路徑來進行調用,并且可以輕松完成通過解壓縮器傳輸原始文件的工作。 為了解壓縮整個備份,我編寫了一個python腳本。 它采用某種結構,但是您可以對其進行參數化以使其更加靈活。 這是代碼(對不起我的非慣用Python,我僅將其用于簡單的腳本編寫):
#! /usr/bin/env python # python script used to pass each backup file through the decompression facility of Priam (using Snappy) # so that it can be used with sstableloader for restore import os import requests rootdir = '/home/ec2-user/backup' target = '/home/ec2-user/keyspace' for subdir, dirs, files in os.walk(rootdir): for file in files: fullpath = os.path.join(subdir, file) parent = os.path.join(fullpath, os.pardir) table = os.path.basename(os.path.abspath(parent)) targetdir = target + "/" + table + "/" if not os.path.exists(targetdir): os.makedirs(targetdir) url = ' http://localhost:8080/Priam/REST/v1/cassadmin/decompress?in= ' + fullpath + '&out=' + target + "/" + table + "/" + file print(url) requests.get(url)現在,您已解壓縮了備份文件,可以使用sstableloader對其進行還原。 如果您有大量數據,可能會花費一些時間,并且不應在執(zhí)行快照備份的同時運行還原,因為還原可能會失敗(由文檔警告)。
然后,如果幸運的話,一切都會過去。 不幸的是,有時候情況并非如此。 該工具遠非完美,因此例如,如果您刪除了一個列,則恢復舊的sstable將失敗,因為它將嘗試插入丟失的列中。 對于實際的生產系統(tǒng),這聽起來像是一個大問題, 并且已經有報道,但尚未解決 。 有時,表可能由于未知原因而無法恢復(流式傳輸失敗,所謂的損壞數據)。 在這些情況下,您可能想使用sstabledump將sstables轉儲為JSON,然后將JSON轉換為CQL以插入它。 當然,沒有工具可以做到這一點,所以這里是用Java編寫的工具 。 它不是完美的,并且不支持用戶定義的類型,集合和映射。 請注意,對于大型表,這可能不是一個好主意,僅對于較小的表。
作為總結,在這里,備份非常重要,但是從備份中恢復則更為重要。 如果沒有還原過程,則備份無用。 僅僅擁有可用的工具(例如Priam)并不意味著您可以準備執(zhí)行還原過程。 您應該對活動登臺數據進行測試還原,以及在空的,新形成的群集上進行完整還原,因為存在不同的還原方案。
翻譯自: https://www.javacodegeeks.com/2019/11/restoring-cassandra-priam-backup-with-sstableloader.html
cassandra 備份
創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎勵來咯,堅持創(chuàng)作打卡瓜分現金大獎總結
以上是生活随笔為你收集整理的cassandra 备份_使用sstableloader恢复Cassandra Priam备份的全部內容,希望文章能夠幫你解決所遇到的問題。
 
                            
                        - 上一篇: 苹果新专利暗示,Vision Pro 头
- 下一篇: jep290涉及jdk版本_JDK 14
