アプリケーションの一貫性のあるスナップショットを作成すると、システムはアプリケーションに書き込まれているデータを一時停止し、スナップショットによってキャプチャされたデータの整合性と一貫性を確保します。 アプリケーションの一貫性のあるスナップショットを使用してクラウドディスクをロールバックできます。これにより、データの破損やデータの損失を防ぎ、SQL Serverなどのアプリケーションが一貫した状態になるようにします。 このトピックでは、アプリケーションに整合性のあるスナップショットを使用して、Elastic Compute Service (ECS) Windowsインスタンスのデータを復元できるかどうかを確認する方法について説明します。 トピックではSQL Serverが使用されています。
前提条件
ECSインスタンスが作成され、Windows Server 2012 R2以降が実行されます。
ECSインスタンスにアタッチされているディスクは、マルチアタッチが無効になっているエンタープライズSSD (ESSD) です。
Cloud Assistant AgentがECSインスタンスにインストールされています。 詳細については、「Cloud Assistant Agentのインストール」をご参照ください。
Microsoft SQL ServerがECSインスタンスにインストールされています。
手順
次の例では、Microsoft SQL Server 2019 64ビットが、Windows Server 2019オペレーティングシステムを実行するECSインスタンスにインストールされています。 データバックアップ用のアプリケーション一貫性のあるスナップショットを作成します。 動作は、実際の環境に基づいて変化し得る。
手順1: データベース検証環境の準備
インスタンスとデータベースが期待どおりに対話できるかどうかを確認するために使用されるデータベース検証環境を準備します。
Windowsインスタンスに接続します。
詳細については、「パスワードまたはキーを使用したWindowsインスタンスへの接続」をご参照ください。
SQL Serverに接続します。
左下隅で、検索アイコンをクリックし、
ssms
検索ボックスに入力し、Enterキーを押します。Microsoft SQL Server管理スタジオ18.
サーバーに接続ダイアログボックスで、サーバー接続情報を設定し、接続.
Microsoft SQL Server Management Studio 18で、AdventureWorksという名前のテストデータベースを作成します。
新しいクエリ.
表示されるクエリウィンドウで、次のSQL文を入力します。
CREATE DATABASE AdventureWorks;
クエリウィンドウを右クリックし、実行.
Microsoft SQL Server Management Studio 18で、PointInTimeという名前のテストテーブルを作成します。
新しいクエリ.
表示されるクエリウィンドウで、次のSQL文を入力します。
USE AdventureWorks GO IF NOT EXISTS (SELECT name FROM sysobjects WHERE name = 'PointInTime' AND TYPE ='U') CREATE TABLE PointInTime (PIT datetime) WHILE ( 1 = 1 ) BEGIN INSERT PointInTime SELECT GETDATE() WAITFOR DELAY '00:00:001' END
クエリウィンドウを右クリックし、実行.
左側のディレクトリツリーで、作成したデータベースとテーブルを表示します。
手順2: ECSインスタンスへのRAMロールのアタッチ
ECSインスタンスのアプリケーション一貫性のあるスナップショット機能を有効にする前に、スナップショットの詳細の照会やスナップショットの作成などの操作を実行する権限を持つRAM (Resource Access Management) ロールを設定する必要があります。
RAMロールを作成し、RAMロールにアプリケーション整合性のあるスナップショットを作成する権限を付与してから、RAMロールをECSインスタンスにアタッチします。 詳細については、「インスタンスRAMロールを使用して他のAlibaba CloudサービスのリソースへのECSアクセスを許可する」トピックの「インスタンスRAMロールを作成し、インスタンスRAMロールをECSインスタンスにアタッチする」セクションをご参照ください。 次のパラメータに注意してください。
RAMロール名: 例: AppSnapshotRoleName。
Selected Trusted Entity: システムはこのパラメーターをAlibaba Cloud Serviceに設定します。
カスタムポリシー: 例: AppSnapshotPolicyが使用されます。 次のサンプルコードは、ポリシーの内容の例を示します。
{ "Version": "1", "Statement": [ { "Effect": "Allow", "Action": [ "ecs:DescribeSnapshot*", "ecs:CreateSnapshot*", "ecs:TagResources", "ecs:DescribeDisks" ], "Resource": [ "*" ], "Condition": {} } ] }
このポリシーは、スナップショット情報の照会、スナップショットの作成、タグの指定、およびディスク情報の照会に対する権限を付与します。
手順3: ECSコンソールでのアプリケーションの一貫性のあるスナップショットの作成
このセクションでは、ECSコンソールにSQL Serverデータベースが存在するWindowsインスタンスのアプリケーション整合性スナップショットを作成する方法について説明します。
ECSコンソールの [インスタンス] ページに移動します。
左側のナビゲーションウィンドウで、 .
上部のナビゲーションバーで、ECSインスタンスが存在するリージョンを選択します。
管理するインスタンスを見つけて、[操作] 列の
を選択します。[スナップショット一貫性のあるグループの作成] ダイアログボックスでパラメーターを設定します。
アプリケーション一貫性のあるスナップショットを作成するエンタープライズSSD (ESSD) を選択し、その他のスナップショットパラメーターを設定します。
[アプリケーション一貫性スナップショットの有効化] および [デフォルトでライターを含む] を選択します。
[OK] をクリックします。
スナップショット整合性グループが作成されると、次の図に示すように、Cloud AssistantコマンドIDと実行IDを含むメッセージが表示されます。 実行IDに基づいて、アプリケーションに整合性のあるスナップショットが作成されているかどうかを確認できます。
手順4: アプリケーション整合スナップショットが作成されているかどうかを確認する
このセクションでは、アプリケーションの一貫性のあるスナップショットが作成されているかどうかを確認する方法と、SQL Serverデータベースの挿入操作が一時停止されているかどうかを確認する方法について説明します。
ECSクラウドアシスタントページで、コマンドの実行結果を表示します。
にログインします。ECSコンソール.
左側のナビゲーションウィンドウで、 .
コマンド実行結果タブをクリックします。
前の手順で取得したタスク (実行) IDを見つけてクリックし、実行結果を表示します。
アプリケーション一貫性のあるスナップショットが作成されると、ExitCodeの戻り値が
0
され、作成されたアプリケーション一貫性のあるスナップショットとスナップショット一貫性のあるグループのIDがコマンド出力に表示されます。説明ExitCodeの戻り値が
0
でない場合はエラーとなります。 ExitCode列で返されたエラーコードに基づいてエラーをトラブルシューティングします。 詳細については、「アプリケーション一貫性のあるスナップショットの作成」トピックのエラーコードをご参照ください。
コマンド出力で、スナップショット整合性グループを作成する手順に関連するアクションと情報を表示します。
整合性コンポーネントを確認します。 整合性コンポーネントが存在しない場合は、自動的にインストールされます。
論理ボリュームを自動的に認識してロードします。
対応するSQL Serverデータベースを自動的に追加します。
システムがデータベースへのデータの書き込みを中断した時点は、
2021-08-05 16:42:59
です。
スナップショットページで、作成されたスナップショット整合性グループとスナップショットの詳細を表示します。
左側のナビゲーションウィンドウで、 .
スナップショット整合性グループタブで、作成したスナップショット整合性グループを見つけ、スナップショット整合性グループのIDをクリックしてスナップショットの詳細を表示します。
スナップショット情報セクションで、アプリケーション整合性のあるスナップショットが作成されているかどうかを確認します。
アプリケーションの整合性のあるスナップショットが作成されると、次の図に示すように、スナップショットに対応するタグ列に
APPConsistent:True
タグが表示されます。
SQL Serverデータベースに接続し、書き込み操作が中断された時点を表示します。
Windowsインスタンスに接続します。
詳細については、「パスワードまたはキーを使用したWindowsインスタンスへの接続」をご参照ください。
使用Microsoft SQL Server管理スタジオ18SQL Serverデータベースに接続します。
新しいクエリ.
表示されるクエリウィンドウで、次のSQL文を入力します。
USE AdventureWorks select * from PointInTime GO
クエリウィンドウを右クリックし、実行.
クエリ結果は、一時停止期間中に書き込み操作がデータベースに記録されなかったことを示しています。
手順5: アプリケーション一貫性のあるスナップショットを使用してデータを期待どおりに復元できるかどうかを確認します
アプリケーション一貫性のあるスナップショットを使用してデータを復元できます。 データが期待どおりに復元されるかどうかを確認するには、SQL Serverデータベースにデータが書き込まれた前回の時刻と、prescript.shスクリプトが実行された時刻を比較します。
ECSコンソールで、作成したスナップショット整合性グループを使用して、ECSインスタンスのデータをロールバックします。
詳細については、「スナップショット対応グループを使用したディスクのロールバック」をご参照ください。
SQL Serverにログインし、PointInTimeテーブルの内容を照会します。
Windowsインスタンスに接続します。
詳細については、「」をご参照ください。パスワードまたはキーを使用してWindowsインスタンスに接続する.
使用Microsoft SQL Server管理スタジオ18SQL Serverデータベースに接続します。
クリック新しいクエリ.
表示されるクエリウィンドウで、次のSQL文を入力します。
USE AdventureWorks select * from PointInTime GO
クエリウィンドウを右クリックし、実行.
クエリの結果で、データが復元された後にデータがSQL Serverデータベースに最後に書き込まれた前回の時刻を確認します。
データベースが中断される前に、システムはデータベースへのデータの書き込みを停止しました。 クエリの結果は、アプリケーションの一貫性のあるスナップショットを使用してデータを復元した後、以前の書き込み時間が
2021-08-05 16:42:57.
であることを示しています。これは、手順4で取得した一時停止時間2021-08-05 16:42:59.9732143
よりも前です。 これは、アプリケーションの一貫性のあるスナップショットが、期待どおりにSQL Serverデータベースをバックアップしたことを示します。