MiniTool公式Webページのこの記事では、データベース保護サービス‐ポイントインタイムリカバリを紹介しており、Amazon Dynamodb、MySQLサーバー、Microsoft Azureにおけるこの機能の使用方法について詳しく解説しています。さらに、、事前に作成した復元ポイントを使用して、コンピューターを以前の時点に復元する方法についても説明しています。
ポイントインタイムリカバリとは?
コンピューターのコンテキストでは、ポイントインタイムリカバリ(PITR)にはシステム、通常はデータベース (DB)が含まれ、このシステムを通じて管理者は過去のある時点からデータセットまたは特定の設定をリカバリまたは復元できます。PITR対応データベース(Oracle、Amazon DynamoDB、SQL Server、Microsoft Azureなど)のPITRログが記録を開始すると、データベース管理者はバックアップでデータベースを過去のあらゆる時点に復元できます。
ポイントインタイムリカバリの実用例としては、Windows XPの過去の日付(データ損失や破損の前)からオペレーティングシステム(OS)の設定を復元する機能が挙げられます。また、ポイントインタイムリカバリのもう一つの実用例は、Mac OS XのTime Machine(タイムマシン)です。
DynamoDB ポイントインタイムリカバリ
Amazon DynamoDBのポイントインタイムリカバリ機能は、DynamoDBのテーブルデータを自動的にバックアップします。詳しい手順は次の通りです。
#1.DynamoDBのポイントインタイムリカバリを有効にする
DynamoDB API(アプリケーションプログラミングインターフェイス)、AWS(アマゾンウェブサービス)マネジメントコンソール、AWS CLI(コマンドラインインターフェース)からポイントインタイムリカバリを有効にすることができます。ポイントインタイムリカバリを有効にすると、オフにするまで継続的にバックアップが行われます。
#2 DynamoDBポイントインタイムリカバリでテーブルを復元する
ポイントインタイムリカバリサービスを実行すると、LatestRestorableDateTimeとEarliestRestorableDateTimeの範囲内の任意の時点にリカバリすることができます。通常、前者は現在時刻の5分前です。
EarliestRestorableDateTimeの場合、過去35日内の任意の時点にテーブルをリストアできます。保持期間は35日(5暦週)で固定されており、変更することはできません。特定のアカウント内の任意の数のユーザーが、最大4つまで同時にリストア(任意の種類の復元)を実行できます。
ポイントインタイムリカバリユーティリティを使用して復元すると、DynamoDBは選択した日時(日:時:分:秒)の状態にテーブルを新しいテーブルとしてリストアします。復元では、テーブルにプロビジョニングされたスループットは消費されません。フルテーブルの復元を実行できますか、以下に一覧表示されるターゲットテーブルの設定を構成することもできます。
- GSI(グローバルセカンダリインデックス)
- LSI(ローカルセカンダリインデックス)
- 課金モード
- プロビジョニングされた読み取りと書き込み容量
- 暗号化設定
フルテーブルリカバリを選択した場合、復元されたテーブルのすべてのテーブル設定は、リカバリ時のソーステーブルの現在の設定から生成されます。たとえば、ターゲットテーブルのプロビジョニングされたスループットが現在50読み取りキャパシティユニットであるとします。その状態を、プロビジョニングされたスループットが100読み取りキャパシティーユニットであった1ヶ月前に復元すると、作成した新しいテーブルが1ヶ月前の状態に戻りますが、プロビジョニングされたスループットが50読み取りキャパシティーユニットです。
また、復元されたテーブルがソーステーブルが配置されている場所とは別のリージョンに作成されるように、AWSリージョンを越えてDynamoDBのテーブルデータを復元できます。AWS商用リージョン、AWS中国リージョン、AWS GovCloud (米国) リージョンのうち、2つのリージョン間でクロスリージョンリカバリを行うことが可能です。
DynamoDBのポイントインタイムリカバリのコストについては、ソースリージョンから転送されたデータと、ターゲットリージョンの新しいテーブルにリストアされたデータに基づいてのみ支払います。
テーブルの復元に必要な時間は、さまざまな要因によって異なります。ポイントインタイムリカバリの時間は、必ずしもテーブルのサイズに直接関係するとは限りません。復元されたテーブルに一部またはすべてのインデックスを作成しない場合、復元はより速く、コストパフォーマンスもより高くなります。復元されたテーブルで次の項目を手動で設定する必要があります。
- ポイントインタイムリカバリ設定
- データストリーム設定
- TTL(Time to Live)設定
- タグ
- 自動スケーリングポリシー
- AWS Identity and Access Management (IAM) ポリシー
- Amazon CloudWatchのメトリクスとアラーム
#3 DynamoDB ポイントインタイムリカバリを有効にしてテーブルを削除する
ポイントインタイムリカバリサービスが有効になっているテーブルを削除したら、DynamoDBは自動的にシステムバックアップと呼ばれるバックアップを作成し、35日間無料で保存できます。その後、システムバックアップを使用して、削除されたテーブルを復元できます。すべてのシステムバックアップの名前は、テーブル‐name$DeletedTableBackupという標準的な命名規則に従っています。
ポイントインタイムリカバリ MySQL
MySQLでのポイントインタイムリカバリとは、特定の時点までのデータ変更を復元することを指します。通常、この復元操作は完全バックアップを復元した後に行われます。完全バックアップにより、バックアップ作成時の状態にサーバを戻します。そして、ポイントインタイムリカバリは、完全バックアップ時から最近までサーバーを次第に復元します。
このパートでは、mysqlbinlogが生成するバイナリログに依存してポイントインタイムリカバリを行うことについて説明します。バイナリログに \0 (null) 文字が含まれている場合、 –binary-mode オプションを指定して起動するまで、mysqlによって解析されません。
ポイントインタイムリカバリの情報源は、完全バックアップ操作後に生成される一連のバイナリログファイルです。したがって、サーバーを特定の時点にリカバリするためには、MySQL 8.0のデフォルト設定‐バイナリログを有効にする必要があります。
バイナリログからデータを復元するには、現在のバイナリログファイルの名前と場所を知っている必要があります。デフォルトでは、サーバーはデータ ディレクトリにバイナリログファイルを作成します。ただし、-log-binオプションでパス名を指定することにより、ファイルを別の場所に置くことができます。
すべてのバイナリログファイルのリストを表示するには:mysql> SHOW BINARY LOGS
現在のバイナリログファイルの名前を決定するには:mysql> SHOW MASTER STATUS
バイナリログ内のイベントを適用すると、そのイベントが示すデータの変更が再実行され、指定された期間のデータ変更の復元が可能になります。バイナリログのイベントを適用するには、mysqlクライアントを使用して mysqlbinlog出力を処理してください:
$> mysqlbinlog binlog_files | mysql -u root –p
MySQLサーバーで複数のバイナリログを適用するには、単一の接続を使用して、処理するすべてのバイナリログファイルの内容を適用できます。この操作を行うステートメントは次の通りです:
$> mysqlbinlog binlog.000001 binlog.000002 | mysql -u root –p
Azure SQLポイントインタイムリストア
ポイントインタイムリストア(PITR)は、データ削除、不正なデータの読み込み、データエラーなどのMicrosoft Azure SQLデータベースの復元シナリオで役立ちます。また、テストや監査にも適用できます。
PITRは、過去のデータベースのコピーを作成します。バックアップコピーは、データベースの設定によって異なりますが、通常7 ~ 35 日間保持されます。それでは、Azure SQLマネージドインスタンスでデータベースのポイントインタイムリストアを実行する方法を見てみましょう。
#1 既存のデータベースを復元する
Azureポータル、Azure CLI、またはPowerShellを使用して、既存のデータベースを同じSQLマネージドインスタンスに復元できます。また、Azure CLIやPowerShellを使用して、既存のデータベースを別のSQLマネージドインスタンスに復元し、ターゲットSQLマネージドインスタンスのプロパティを指定することもできます。なお、これらのパラメータをカスタマイズしない場合、データベースは既存のSQLマネージドインスタンスに復元されます。
Azureポータル経由で既存のデーターベースを復元する
- Azureポータルにログインします。
- SQLマネージドインスタンスに移動し、対象のデータベースを選択します。
- データベースページで「復元」をクリックします。
- その後、復元ページで、データベースを復元する日付と時点を選択します。
- 最後に、「確認」をクリックして、復元プロセスを開始します。
Azure CLIで既存のデータベースを復元する
まず、以下のコマンドでパラメータの値を指定します。そして、コマンドを実行します。
az sql midb restore -g mygroupname –mi myinstancename |
-n mymanageddbname –dest-name targetmidbname –time “2022-01-19T15:17:38”
データベースを別のSQLマネージドインスタンスに復元する場合も、ターゲットリソースグループとSQLマネージドインスタンスの名前を指定する必要があります。
az sql midb restore -g mygroupname –mi myinstancename -n mymanageddbname |
–dest-name targetmidbname –time “2022-01-19T15:17:38” |
–dest-resource-group mytargetinstancegroupname |
–dest-mi mytargetinstancename
Azure PowerShellで既存のデータベースを復元する
まず、以下のコマンドラインにパラメータの値を指定してから、実行します。
$subscriptionId = “<Subscription ID>”
$resourceGroupName = “<Resource group name>”
$managedInstanceName = “<SQL Managed Instance name>”
$databaseName = “<Source-database>”
$pointInTime = “2022-01-19T15:17:38.3882806Z”
$targetDatabase = “<Name of new database to be created>”
Get-AzSubscription -SubscriptionId $subscriptionId
Select-AzSubscription -SubscriptionId $subscriptionId
Restore-AzSqlInstanceDatabase -FromPointInTimeBackup `
-ResourceGroupName $resourceGroupName `
-InstanceName $managedInstanceName `
-Name $databaseName `
-PointInTime $pointInTime `
-TargetInstanceDatabaseName $targetDatabase `
データベースを別のSQLマネージドインスタンスに復元するには、対象のリソースグループ名と対象のSQLマネージドインスタンス名を指定する必要があります。
$targetResourceGroupName = “<Resource group of target SQL Managed Instance>”
$targetInstanceName = “<Target SQL Managed Instance name>”
Restore-AzSqlInstanceDatabase -FromPointInTimeBackup `
-ResourceGroupName $resourceGroupName `
-InstanceName $managedInstanceName `
-Name $databaseName `
-PointInTime $pointInTime `
-TargetInstanceDatabaseName $targetDatabase `
-TargetResourceGroupName $targetResourceGroupName `
-TargetInstanceName $targetInstanceName
#2 削除されたデータベースを復元する
削除されたデータベースを同じインスタンスに復元するには、Azure PortalまたはPowerShellのいずれかを使用できます。その一方、削除されたデータベースを別のインスタンスに復元するには、Azure PowerShellを使用します。
Azureポータルを使用して削除済みデータベースを復元する
- SQL Managed Instance Overviewページに移動します。
- 次に、「削除済みデータベース」をクリックします。
- 復元する削除済みデータベースを選択します。
- 新しいデータベースの名前を指定するか、デフォルト名のままにして続行します。
- 最後に、「OK」をクリックします。
PowerShellで削除済みデータベースを復元する
削除されたデータベースを同じインスタンスに復元するには、以下のコマンドを使用します。また、パラメータの値も更新されます。
$subscriptionId = “<Subscription ID>”
Get-AzSubscription -SubscriptionId $subscriptionId
Select-AzSubscription -SubscriptionId $subscriptionId
$resourceGroupName = “<Resource group name>”
$managedInstanceName = “<SQL Managed Instance name>”
$deletedDatabaseName = “<Source database name>”
$targetDatabaseName = “<target database name>”
$deletedDatabase = Get-AzSqlDeletedInstanceDatabaseBackup -ResourceGroupName $resourceGroupName `
-InstanceName $managedInstanceName -DatabaseName $deletedDatabaseName
Restore-AzSqlinstanceDatabase -FromPointInTimeBackup -Name $deletedDatabase.Name `
-InstanceName $deletedDatabase.ManagedInstanceName `
-ResourceGroupName $deletedDatabase.ResourceGroupName `
-DeletionDate $deletedDatabase.DeletionDate `
-PointInTime UTCDateTime `
-TargetInstanceDatabaseName $targetDatabaseName
データベースを別のインスタンスに復元するには、ターゲットリソースグループとインスタンスの名前を指定する必要があります。
$targetResourceGroupName = “<Resource group of target SQL Managed Instance>”
$targetInstanceName = “<Target SQL Managed Instance name>”
Restore-AzSqlinstanceDatabase -FromPointInTimeBackup -Name $deletedDatabase.Name `
-InstanceName $deletedDatabase.ManagedInstanceName `
-ResourceGroupName $deletedDatabase.ResourceGroupName `
-DeletionDate $deletedDatabase.DeletionDate `
-PointInTime UTCDateTime `
-TargetInstanceDatabaseName $targetDatabaseName `
-TargetResourceGroupName $targetResourceGroupName `
-TargetInstanceName $targetInstanceName
#3 PITRからAzure SQLへのマネージドインスタンスの制限
SQLマネージドインスタンスへのポイントインタイムリストアには、いくつかの制限があります。ひとつは、現時点ではクロスサブスクリプションやクロスリージョンリストアをサポートしていないことです。一方、復元できるのはSQLマネージドインスタンス全体ではなく、SQLマネージドインスタンス上でホストされているデータベースのみを復元できます。
下記の表は、異なるプラットフォームによるポイントインタイムリストアの比較です。
Azureポータル | Azure CLI | Azure PowerShell | |
既存のDBを同じSQLマネージドインスタンスに復元する | はい | はい | はい |
既存のDBを別のSQLマネージドインスタンスに復元する | いいえ | はい | はい |
削除されたDBを同じSQLマネージドインスタンスに復元する | はい | いいえ | はい |
削除されたDBを別のSQLマネージドインスタンスに復元する | いいえ | いいえ | はい |
Windows PC ポイントインタイムリカバリ
PCを以前の時点に復元するには、どうしたらいいですか?まず、前に作成したコンピューターの復元ポイントが必要です。そうでない場合は、将来のPCのポイントインタイムリカバリ用に、復元ポイントを作成する必要があります。
#1 Windowsに復元ポイントを作成する方法
コンピュータデータの復元ポイントを作成するには、システムの復元、バックアップと復元、ファイル履歴、MiniTool ShadowMakerなど、多くのプログラムや サービスを利用できます。ここでは、プロフェッショナルで信頼性の高いファイル/フォルダー/システム/パーティション/ディスクバックアップソフト‐MiniTool ShadowMakerを例にして、Windowsの復元ポイントの作成方法を説明します。
MiniTool ShadowMaker Trialクリックしてダウンロード100%クリーン&セーフ
1.MiniTool ShadowMakerをコンピューターにダウンロード、インストール、実行します。
2.購入が求められる場合、「体験版で続く」オプションをクリックして続行します。
3.メインインターフェイスで、トップメニューから「バックアップ」タブを選択します。
4.バックアップタブでは、システム関連の項目が自動的にソースとして選択されます。システムの復元ポイントを作成したくない場合は、「ソース」をクリックして手動で変更できます。
5.その後、「バックアップ先」モジュールをクリックして、ターゲットの場所を指定します。
6.右下の「オプション」>「スケジュール設定」ボタンをクリックして、自動復元ポイントの作成を設定できます。
7.ポップアップウィンドウでスケジュール設定をオンにし、毎日、毎週、毎月、またはイベント時など、適切なスケジュールを指定します。
8.「バックアップスキーム」ボタンをクリックして、今後のバックアップ種類として、完全バックアップ、増分バックアップ、または差分バックアップを決定します。
9.最後に、「今すぐバックアップ」をクリックして、最初の完全バックアップを実行します。
最初の完全バックアップを作成した後、今後指定されたバックアップの種類と頻度で自動的にバックアップが実行されます。
#2 Windows 10を以前の時点に復元する方法
PCを以前の時点に復元するには、復元ポイントを作成するために使用するプログラムに頼る必要があります。
1.MiniTool ShadowMakerを開き、「復元」ページに進みます。
2.最初の復元ポイントの作成に使用した完全バックアップタスクを見つけます。誤って完全タスクを削除してしまった場合、または復元ポイントが見つからない場合は、右上の「バックアップの追加」ボタンをクリックして手動で追加できます。
3.対象のバックアップタスクを見つけたら、「復元」ボタンをクリックします。
4.その後、次のウィンドウで、続行する復元ポイントを選択します。
最後に、画面の指示に従って復元を完了します。
結語
以上、ポイントインタイムリカバリについてお伝えしました。この記事の内容に関する追加情報またはご意見がある場合は、以下にコメントをお寄せください。MiniTool ShadowMakerの使用中に問題がある場合は、[email protected]までお気軽にお問い合わせください。