web-dev-qa-db-ja.com

AzureテーブルとBLOBをバックアップする方法

Azure Storageテーブルとblobストレージにデータを保存します。ユーザーまたはソフトウェアの問題による偶発的なデータ破損から保護するために、データを自動的にバックアップしたいと思います。マイクロソフトからのこれに対する適切なソリューションはありません。自動バックアップの有料ソリューションはありますが、このデータをバックアップおよび復元する簡単な方法があるはずです。

16
Keith Holloway

データを自動的にバックアップする最善の方法について多くの調査を行った後、これを行う最も簡単な方法は、AZCopyを使用するAzure仮想マシンのWindowsタスクスケジューラでジョブをスケジュールすることです。 AZCopyは、テーブルデータをVMに移動し、AzureのセカンダリBlobストアにバックアップを保持するためにバックアウトします。バッチファイルにより、AZCopyがソースからBLOBをコピーしますストレージアカウントをターゲットアカウントに直接追加します。

バックアップを自動化するために使用するバッチファイルへのリンクを使用して、この作業をどのように完了したかの詳細な説明を次のリンクで確認できます。 http://www.eastfive.com/2016/03/01/ Azureの自動バックアップストレージストレージテーブルとブロブ/

この回答の2018年2月8日の更新:2018年1月18日に、Azureサポートにこの質問を提起しました。これはAzureのサービスを介して行われます。残念ながらそれは事実ではなく、この質問が最初に提起されたときに存在したものよりも(Microsoftのサポートによると)テーブルのバックアップを行うための最良の方法はありません。これは、2018年1月24日のサポートからの回答です。

「私はあなたのケースについて検討しましたが、残念ながらアカウント全体またはコンテナー全体のスナップショットを作成する方法はありません。そのため、Azure Storageでスナップショットを作成する唯一の方法は、Blobの反復とスナップショットの適用と、スナップショットのセカンダリへの移行です。または、実際のファイルを別のアカウントに単純にコピーすることもできますが、これによりレイテンシが高くなり、ストレージ容量のコストが増大します。
転送をサポートする方法は、AzCopyとデータ移動ライブラリで、JavaまたはC#でカスタム移行ソリューションを作成するために使用できます。
これらのプロセスを自動化したい場合は、PowershellとAzure Automationを介して、またはAzure Functionsを使用してこれを実行できますが、私のチームはAzure Storageを純粋にサポートしているため、これらのソリューションの支援は別のサポートリクエストを通じて行う必要があるでしょう。」

したがって、これらのバックアップを行う自動化された方法はまだありません。私のチームはバックアップを行うためにライブラリに取り組んでいます。それが完了したら、ここに投稿します。

この回答の2018年5月8日の更新:前述のように、私のチームはバックアップを自動化するためのライブラリに取り組んでいます。ここでプロジェクトを見つけることができます: https://github.com/eastfivellc/EastFive.Azure.Storage.Backup 。貢献してください。

この回答の2018年10月18日更新:Azure Data Factory機能を使用してAzureにデータをコピーすることができました。 Data Factoryを使用して、テーブルとBLOBの両方のソースストレージからターゲットストレージにデータをパイプしました。ただし、データ移動のコストは非常に高くなります(バックアップあたり数百ドル)。したがって、これはバックアップのソリューションではありません。上記(および以下の回答)の私の投稿で述べたように、Azure Data Movement Libraryがここでの最良のソリューションです。

10
Keith Holloway

Microsoft Azureストレージデータ移動ライブラリ をご覧ください

これはAzCopyのほとんどの機能を提供しているようですが、nugetパッケージで提供されているため、お好きな場所で使用できます。

これはトリガーされたWebジョブで実行されており、テーブルとBLOBストレージのバックアップの両方で非常にうまく機能しているようです。

1
Carl

Cerebrata Azure Management Cmdlets のようなサードパーティのツールを使用することもできます-またはMicrosoft Azureストレージチームが発表した機能 Asynchronous Copy Blob を使用すると、基本的に1つのストレージアカウントからデータをコピーできますローカルにデータをダウンロードせずに別のストレージアカウントに。

詳細については、スレッドを確認してください: Azure Blob Storageのコンテンツをバックアップする最良の方法は何ですか

お役に立てれば。

1
Derek

テーブルとBLOBをバックアップする. NETライブラリ を作成しました。これは、Azure関数のタイマートリガーで簡単に実装できます。

これで blog Azure関数を使用して実装する方法を説明します。

[FunctionName("Function1")]
public static async Task Run([TimerTrigger("0 */5 * * * *")]TimerInfo myTimer, ILogger log, ExecutionContext context)
{
  var sourceAccountName = Environment.GetEnvironmentVariable("BackupSourceAccountName");
  var sourceKey = Environment.GetEnvironmentVariable("BackupSourceAccountKey");

  var backupAzureStorage = new Luminis.AzureStorageBackup.BackupAzureStorage(sourceAccountName, sourceKey, log, context.FunctionAppDirectory);

  var destinationAccountName = Environment.GetEnvironmentVariable("BackupDestinationAccountName");
  var destinationKey = Environment.GetEnvironmentVariable("BackupDestinationAccountKey");
  var destinationContainerName = Environment.GetEnvironmentVariable("BackupDestinationContainer");

  // Backup Tables
  await backupAzureStorage.BackupAzureTablesToBlobStorage("table1,table2", destinationAccountName, destinationKey, destinationContainerName, "tables");

  // Backup Blobs
  await backupAzureStorage.BackupBlobStorage("container1,container2", destinationAccountName, destinationKey, destinationContainerName, "blobs");
}
0
Frank Folsche