日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

使用sstableloader恢复Cassandra Priam备份

發布時間:2023/12/3 编程问答 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 使用sstableloader恢复Cassandra Priam备份 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

之前,我曾寫過關于設置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導入它們。 但是有一個陷阱。 為了節省空間,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對其進行還原。 如果您有大量數據,可能會花費一些時間,并且不應在執行快照備份的同時運行還原,因為它可能會失敗(文檔警告)。

然后,如果幸運的話,一切都會過去。 不幸的是,有時候情況并非如此。 該工具遠非完美,因此例如,如果您刪除了一個列,則還原舊的sstable將失敗,因為它將嘗試插入丟失的列中。 對于實際的生產系統,這聽起來像是一個大問題, 并且已經有報道,但尚未解決 。 有時,表可能由于未知原因而無法恢復(流式傳輸失敗,所謂的損壞數據)。 在這些情況下,您可能想使用sstabledump將sstables轉儲為JSON,然后將JSON轉換為CQL以插入它。 當然,沒有工具可以做到這一點,所以這里是用Java編寫的工具 。 它不是完美的,并且不支持用戶定義的類型,集合和映射。 請注意,對于大型表,這可能不是一個好主意,僅對于較小的表。

總結一下,總的來說,備份很重要,但是從備份中恢復就更重要了。 如果沒有還原過程,則備份無用。 僅僅擁有可用的工具(例如Priam)并不意味著您可以準備執行還原過程。 您應該對活動登臺數據進行測試還原,以及在空的,新形成的群集上進行完整還原,因為存在不同的還原方案。

翻譯自: https://www.javacodegeeks.com/2019/11/restoring-cassandra-priam-backup-with-sstableloader.html

總結

以上是生活随笔為你收集整理的使用sstableloader恢复Cassandra Priam备份的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。