差分バックアップファイルを使用したインポート及びエクスポートについて
はじめに
こんにちは、クラウドエース データML ディビジョン所属の髙根です。
クラウドエースのITエンジニアリングを担うシステム開発部の中で、特にデータ基盤構築・分析基盤構築からデータ分析までを含む一貫したデータ課題の解決を専門とするのがデータML ディビジョンです。
データML ディビジョンでは活動の一環として、毎週Google Cloud の新規リリースを調査・発表し、データ領域のプロダクトのキャッチアップをしています。
その中でも重要と考えるリリースを本ページ含め記事として公開しています。
今回紹介するリリースは、Cloud SQL for SQL Server の「差分バックアップファイルを使用したインポート及びエクスポートを行う」といった内容です。
このリリース内容を活用することで、データの損失を最小限に抑える及びバックアップの作成時間の短縮に繋がります。
なお、この機能はプレビュー段階です。
Cloud SQL for SQL Server の概要
Cloud SQL for SQL Server は、Google Cloud で SQL Server データベースを設定、維持、管理する際に有用なマネージドデータベースサービスです。web コンソール上で操作でインスタンスを管理でき、簡単な操作で行うことができます。
今回のリリースについて
今回、ご紹介するリリースは2023年6月7日付に発表された Cloud SQL for SQL Server の差分バックアップファイルを使用し、インポート及びエクスポートを行うといった機能についてです。
該当リリースノート:Cloud SQL release notes
リリースの概要
Cloud SQL for SQL Server の差分バックアップファイルを使用しインポート及びエクスポートを行うことで以下のようなメリットが得られます。
- フルバックアップを作成するより差分バックアップの方が作成時間を短縮
- データの損失を最小限に抑える
差分バックアップファイルの概要
差分バックアップファイルとは、初回のフルバックアップ以降に変更・追加のあったデータを全てバックアップしたものになります。
例えば、以下の図では、15個のデータエクステントを示しています。そのうちの赤い部分の5個が変更されるとします。この場合、差分バックアップの対象となるのが、これら5つのデータエクステントが含まれるということになります。
(※データエクステント:ファイルシステムにおいて、ファイルのデータが実際に保存される場所を指します。)
差分バックアップと増分バックアップとの違い
差分バックアップと増分バックアップの違いは、2回目以降のバックアップするデータの量に違いがあります。また、差分バックアップと増分バックアップのメリット・デメリットにも違いがあるため以下に記載します。
-
差分バックアップ:初回のフルバックアップ以降に変更・追加のあったデータを全てバックアップしたものです。
-
メリット:初回バックアップと比較して、差分バックアップの方がデータ量を少なくできます。また、差分バックアップの途中にある不要な差分バックアップのデータを削除が可能です。
-
デメリット:増分バックアップと比較すると、差分バックアップの方が1回あたりのバックアップに要する時間がかかります。また、差分バックアップを複数残す場合、保存総データ量が多くなります。
-
増分バックアップ:前回行ったバックアップから変更・追加のあったデータをバックアップしたものです。
-
メリット:差分バックアップと比較して、増分バックアップの方が1回あたりのバックアップ量を少なくできます。また、保存総データ量は、差分バックアップの保存総データ量よりも少なくなります。
-
デメリット:復元時に、復元したい初回のフルバックアップ分と複数の増分バックアップデータを全てつなぎ合わせる必要があるため、復元処理が複雑になります。また、復元する増分バックアップのデータをつなぎ合わせる為、途中の増分バックアップのデータを削除できません。途中の増分バックアップを削除すると、削除された時期以降のバックアップができなくなります。
どちらのバックアップ方法を選択するかは、データの重要性、バックアップの頻度、バックアップの保持期間などの要件によって異なります。そのため用途にあったバックアップ方法を選択する必要があります。
ユースケースについて
このリリースに対してのユースケースは、以下のようなものが考えられます。
- データの保護と復元:差分バックアップは、初回のフルバックアップ以降に変更・追加されたデータのみをバックアップします。そのため、データベースの障害やデータの誤削除といった問題が発生した際には、差分バックアップを使用してデータを復元することができます。
- バックアップの頻度と容量の最適化:フルバックアップはデータベース全体をバックアップするため、時間とストレージ容量を消費します。反対に差分バックアップは、変更・追加されたデータのみをバックアップするため、バックアップの頻度を調整したい、ストレージ容量を節約したいといった場合に適しています。
- データの比較:差分バックアップは、異なる時点のデータの変更・追加を追跡するために使用できます。特定の時点のデータと比較することで、データの変更や追加を確認することができます。
料金
差分バックアップには料金がかかります。料金は、バックアップの保存期間とバックアップのサイズに基づいて計算されます。以下のリンクから料金が確認できます。
料金について:Cloud SQL for SQL Server の料金
検証
実際に、Google Cloud Storage への差分バックアップのエクスポートを検証します。この検証では、差分バックアップを Google Cloud Storage へエクスポートし、エクスポートされているか確認します。
事前準備としてストレージバケットを作成、インスタンスの作成、データセットを作成します。
参考リンク:新しいバケットを作成
参考リンク:インスタンスを作成
参考リンク:データベースを作成
1. エクスポート元のインスタンスのサービスアカウントを見つける
以下のコマンドで、エクスポート元の Cloud SQL インスタンスのサービスアカウントを見つけます。
gcloud sql instances describe INSTANCE_NAME
2. データベースを差分ベースとしてエクスポートする
差分バックアップをエクスポートする前に差分ベースをエクスポートする必要があります。
以下のコマンドで、データベースを差分ベースとしてエクスポートします。
gcloud sql export bak INSTANCE_NAME gs://BUCKET_NAME/DIFFERENTIAL_BASE_FILENAME \
--database=DATABASE_NAME --differential-base
3. 差分バックアップをエクスポートする
以下のコマンドで、差分バックアップをエクスポートします。
gcloud sql export bak INSTANCE_NAME gs://BUCKET_NAME/DIFFERENTIAL_BACKUP_FILENAME \
--database=DATABASE_NAME --bak-type=DIFF
4. エクスポートを確認する
以下のコマンドで、指定した場所にエクスポートできているか確認します。
gcloud storage ls --recursive gs://BUCKET_NAME/**
まとめ
今回の記事では、 Cloud SQLの差分バックアップファイルを使用したインポート及びエクスポートといった内容についてご紹介しました。このリリースにより、データの損失を最小限に抑えることや、バックアップの作成時間を短縮することができるようになりました。プレビュー段階ではありますが、是非ご利用ください。
Discussion