アプリケーション一貫性のあるスナップショット技術は、ディスクに格納された元のデータをキャプチャしてスナップショットを作成するときに、アプリケーションデータの一貫性のある状態を保証するために使用できます。 これにより、進行中のすべてのトランザクションが完了し、メモリ内のデータがディスクに書き込まれ、アプリケーションが一貫した状態になります。 アプリケーションの一貫性のあるスナップショットを使用して、アプリケーションを一貫性のある状態に復元できます。 これにより、複雑なログロールバックプロセスが回避され、高速で安定したアプリケーションの起動が可能になります。 このトピックでは、Elastic Compute Service (ECS) コンソールまたはAlibaba Cloud SDK for Goを使用して、LinuxおよびWindowsインスタンス用のアプリケーション一貫性のあるスナップショットを作成する方法について説明します。
前提条件
アプリケーション一貫性のあるスナップショットを作成するECSインスタンスは、次のいずれかのオペレーティングシステムを実行します。
Windows: Windowsサーバー2022、Windowsサーバー2019、Windowsサーバー2016、またはWindowsサーバー2012 R2
Linux: CentOS 7.6以降、Ubuntu 18.04以降、Alibaba Cloud Linux 2、またはAlibaba Cloud Linux 3
ECSインスタンスにアタッチされているディスクは、パフォーマンスレベル0、1、2、または3の拡張SSD (ESSD) (PL0、PL1、PL2、またはPL3 ESSD) またはESSD AutoPLディスクです。 ディスクにマウントされるファイルシステムは、ext3、ext4、XFS、またはNew Technology file System (NTFS) です。 ネットワークファイルシステムまたは共有ファイルシステムはサポートされていません。
Cloud Assistant AgentがECSインスタンスにインストールされています。 Cloud Assistant Agentのインストール方法については、「Cloud Assistant Agentのインストール」をご参照ください。
説明デフォルトでは、Cloud Assistant Agentは2017年12月1日以降にパブリックイメージから作成されたインスタンスにプリインストールされます。
Goランタイム環境がダウンロードされ、インストールされます。
詳細については、「ダウンロードとインストール」をご参照ください。
Alibaba Cloud SDK for Goがダウンロードされ、インストールされます。
詳細については、「Alibaba Cloud Classic SDK For Goの使用を開始する」をご参照ください。
背景情報
デフォルトでは、作成するスナップショットはクラッシュの一貫性があります。 スナップショットを作成するときにアプリケーション一貫性のあるスナップショット機能を有効にすると、システムは実際のシナリオに基づいてアプリケーション一貫性のあるスナップショットまたはファイルシステム一貫性のあるスナップショットを作成します。
スナップショットタイプ | 説明 | 実装 |
Application-consistent snapshot | アプリケーション一貫性のあるスナップショットは、アプリケーションシステムのデータとデータベーストランザクション間の一貫性を確保するために、スナップショットの作成時にメモリに保存されたデータと進行中のデータベーストランザクションをバックアップします。 アプリケーションの一貫性のあるスナップショットは、データのロールバックに使用して、データの破損やデータの損失を防ぎ、データベースの起動時にログがロールバックされず、アプリケーションが一貫した状態で起動することを保証できます。 アプリケーション一貫性のあるスナップショットは、 | アプリケーション一貫性のあるスナップショット機能の実装方法は、オペレーティングシステムによって異なります。
|
ファイルシステムの一貫性のあるスナップショット | アプリケーション一貫性のあるスナップショット機能が有効になっているが、関連する条件が満たされていない場合、ファイルシステム一貫性のあるスナップショットが作成されます。 ファイルシステムの一貫性のあるスナップショットは、スナップショットの作成時にファイルシステムのメモリとディスクの情報を同期し、ファイルシステムの一貫性を確保するためにファイルシステムでの書き込み操作をフリーズします。 ファイルシステムの整合性のあるスナップショットを使用して、オペレーティングシステムがディスクチェック (chkdsk) およびファイルシステムの整合性チェック (fsck) を実行できないようにすることができます。 ファイルシステムの一貫性のあるスナップショットは、 | ファイルシステム整合スナップショット機能の実装方法は、オペレーティングシステムによって異なります。
|
手順
ECSコンソールでのアプリケーション一貫性のあるスナップショットの作成
手順1: ECSインスタンスのRAMロールの設定
にログインします。RAMコンソールAlibaba Cloudアカウントを使用します。
アプリケーション一貫性のあるスナップショット機能のRAMロールを作成します。 詳細については、「信頼できるAlibaba CloudサービスのRAMロールの作成」をご参照ください。
次の図は、AppSnapshotRoleNameという名前のRAMロールを作成する方法を示しています。
アプリケーション一貫性のあるスナップショット機能の権限ポリシーを作成します。 詳細については、「カスタムポリシーの作成」をご参照ください。
AppSnapshotPolicyポリシーを作成して、スナップショットの詳細の照会、スナップショットの作成、タグの設定、およびディスクの詳細の照会の権限を付与します。 次のポリシーコンテンツを使用できます。
{ "Version": "1", "Statement": [ { "Effect": "Allow", "Action": [ "ecs:DescribeSnapshot *" 、 "ecs:CreateSnapshot *" 、 "ecs:TagResources" 、 "ecs:DescribeDisks" ], "Resource": [ "*" ], "Condition": {} } ] }
AppSnapshotPolicyポリシーをAppSnapshotRoleName RAMロールにアタッチします。 詳細については、「RAMロールへの権限の付与」をご参照ください。
AppSnapshotRoleName RAMロールをECSインスタンスにアタッチします。 詳細については、「インスタンスRAMロールを使用してリソースへのアクセスを制御する」をご参照ください。
手順2: ECSインスタンスのアプリケーション一貫性スナップショット機能の有効化
Linuxインスタンス
Linuxインスタンスでは、アプリケーションの一貫性を実現するために、アプリケーションに基づいて、アプリケーションのプリフリーズおよびポスト解凍スクリプトとしてシェルスクリプトをカスタマイズできます。 このセクションでは、Linuxインスタンスのアプリケーション一貫性のあるスナップショット機能を有効にする方法について説明します。
Linuxインスタンスにデプロイされたアプリケーションに基づいて、アプリケーションのプリフリーズスクリプトとポスト解凍スクリプトを記述し、スクリプトをインスタンスにアップロードします。
ファイル転送プロトコル (FTP) またはクラウドアシスタントを使用して、アプリケーションのフリーズ前および解凍後のスクリプトをインスタンスにアップロードできます。
アプリケーションのプリフリーズスクリプト: スクリプトの読み取り、書き込み、および実行権限をrootユーザーにのみ付与します。 スクリプトのストレージパスを /tmp/prescript.shに設定します。
アプリケーションの解凍後スクリプト: スクリプトの読み取り、書き込み、および実行権限をrootユーザーにのみ付与します。 スクリプトのストレージパスを /tmp/postscript.shに設定します。
重要権限、ストレージパス、ファイル名などのスクリプト設定が無効な場合、ファイルシステムに整合性のあるスナップショットが作成されます。
ECSコンソールの [インスタンス] ページに移動します。
にログインします。ECSコンソール.
左側のナビゲーションウィンドウで、 .
上部のナビゲーションバーで、ECSインスタンスが配置されているリージョンを選択します。
アプリケーションの一貫性のあるスナップショット機能を有効にするインスタンスを見つけ、[操作] 列の
を選択します。[スナップショット一貫性グループの作成] ダイアログボックスで、スナップショット一貫性グループのパラメーターを設定します。
スナップショット整合性グループを作成するディスクを選択し、他のスナップショットパラメータを設定します。
[Application-consistent Snapshot] セクションでパラメーターを設定します。
[アプリケーションの一貫性のあるスナップショットの有効化] および [ファイルシステムのフリーズと解凍の有効化] を選択し、有効なスクリプトを設定すると、アプリケーションの一貫性のあるスナップショットが作成されます。
[アプリケーションの一貫性のあるスナップショットの有効化] および [ファイルシステムのフリーズと解凍の有効化] を選択したが、有効なスクリプトを設定しない場合、ファイルシステムの一貫性のあるスナップショットが作成されます。
説明Cloud AssistantプラグインがLinuxインスタンスにインストールされていない場合、[アプリケーションの一貫性のあるスナップショットの有効化] を選択すると、プラグインが自動的にインスタンスにインストールされます。
次に、[OK] をクリックします。
スナップショット整合性グループを作成すると、次の図に示すように、Cloud AssistantコマンドIDとタスクID (InvokeId) を示すメッセージが表示されます。 タスクIDに基づいて、アプリケーションに整合性のあるスナップショットが作成されているかどうかを確認できます。
Windowsインスタンス
Windowsインスタンスの場合、VSSを使用してアプリケーションの一貫性を実装できます。 このセクションでは、Windowsインスタンスのアプリケーション一貫性のあるスナップショット機能を有効にする方法について説明します。
ECSコンソールの [インスタンス] ページに移動します。
にログインします。ECSコンソール.
左側のナビゲーションウィンドウで、 .
上部のナビゲーションバーで、ECSインスタンスが配置されているリージョンを選択します。
アプリケーションの一貫性のあるスナップショット機能を有効にするインスタンスを見つけ、[操作] 列の
を選択します。[スナップショット一貫性グループの作成] ダイアログボックスで、スナップショット一貫性グループのパラメーターを設定します。
スナップショット整合性グループを作成するディスクを選択し、他のスナップショットパラメータを設定します。
[Application-consistent Snapshot] セクションでパラメーターを設定します。
[アプリケーションの一貫性のあるスナップショットの有効化] および [デフォルトでライターを含む] を選択した場合、アプリケーションの一貫性のあるスナップショットが作成されます。
[アプリケーションの一貫性のあるスナップショットの有効化] のみを選択すると、ファイルシステムの一貫性のあるスナップショットが作成されます。
説明Cloud Assistantプラグインがインスタンスにインストールされていない場合、[アプリケーションの一貫性のあるスナップショットの有効化] を選択すると、プラグインがインスタンスに自動的にインストールされます。
次に、[OK] をクリックします。
スナップショット整合性グループが作成されると、次の図に示すように、Cloud AssistantコマンドIDとタスクIDを示すメッセージが表示されます。 タスクIDに基づいて、アプリケーションに整合性のあるスナップショットが作成されているかどうかを確認できます。
手順3: アプリケーションの一貫性のあるスナップショットが作成されているかどうかの確認
上記の手順を実行した後、ECSコンソールのECSクラウドアシスタントページに移動して、アプリケーションに整合性のあるスナップショットが作成されているかどうかを確認し、ECSコンソールのスナップショットページに移動して、作成されたスナップショットに整合性のあるグループとディスクスナップショットの詳細を表示します。
On theECSクラウドアシスタントページで、アプリケーション一貫性のあるスナップショットが作成されているか確認します。
ECSコンソールにログインします。
左側のナビゲーションウィンドウで、 を選択します。
[コマンド実行結果] タブをクリックします。
前の手順で取得したタスクIDを [タスクID] 列で検索し、タスクIDをクリックして実行結果を表示します。
アプリケーションの整合性のあるスナップショットが作成されると、ExitCodeパラメーターの戻り値が
0
され、コマンド出力にスナップショットの整合性のあるグループのIDが表示されます (前の図を参照) 。説明ExitCodeパラメーターの戻り値が
0
でない場合、エラーが発生しました。 ExitCode列のエラーコードに基づいてエラーをトラブルシューティングします。 詳細については、このトピックの「エラーコード」をご参照ください。
[スナップショット] ページで、作成したスナップショット一貫性のあるグループとディスクスナップショットの詳細を表示します。
左側のナビゲーションウィンドウで、 .
をクリックし、スナップショット整合性グループタブで、作成したスナップショット整合性グループを見つけ、スナップショット整合性グループのIDをクリックして、スナップショット整合性グループの詳細を表示します。
[スナップショット情報] セクションで、ディスクスナップショットのIDをクリックします。
では、基本情報セクションでは、スナップショットのタグに基づいて、ディスクスナップショットがアプリケーション整合スナップショットかファイルシステム整合スナップショットかを確認します。
アプリケーション一貫性のあるスナップショットは、
APPConsistent:True
タグで識別されます。ファイルシステムの一貫性のあるスナップショットは、
FsConsistent:True
タグで識別されます。
SDK for Goによるアプリケーションの一貫性のあるスナップショットの作成
手順1: ECSインスタンスのRAMロールの設定
AttachInstanceRamRole操作を呼び出して、AppSnapshotRoleName RAMロールをECSインスタンスにアタッチします。
SDK for Goのサンプルコード:
パッケージメイン
import (import (import)
"fmt"
"os"
「github.com/aliyun/alibaba-cloud-sdk-go/services/ecs」
)
func main() {
// ALIBABA_CLOUD_ACCESS_KEY_ID環境変数とALIBABA_CLOUD_ACCESS_KEY_SECRET環境変数がコードランタイムで設定されていることを確認します。
// プロジェクトコードが漏洩すると、AccessKeyペアが漏洩し、アカウント内のすべてのリソースのセキュリティが侵害される可能性があります。 次のサンプルコードは、環境変数を使用してAccessKeyペアを取得し、AccessKeyペアを使用してAPI操作を呼び出す方法を示しています。 より高いセキュリティを提供するSTSトークンの使用を推奨します。
client, err := ecs.NewClientWithAccessKey(
"cn-hangzhou",
os.Getenv("ALIBABA_CLOUD_ACCESS_KEY_ID") 、
os.Getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET")
// AttachInstanceRamRole操作を呼び出して、指定されたRAMロールをインスタンスにアタッチします。
request := ecs.CreateAttachInstanceRamRoleRequest()
request.Scheme = "https"
request.RamRoleName = "AppSnapshotRoleName" // RAMロールの名前を指定します。
request.InstanceIds = "[\" i-bp17r83nppqf141v ****\"]" // インスタンスのIDを指定します。
レスポンス, err := client.AttachInstanceRamRole (リクエスト)
if err! =nil {
fmt.Print(err.Error())
}
fmt.Println(response.String())
}
次のようなレスポンスが表示されます。 レスポンスのパラメーターの詳細については、「AttachInstanceRamRole」をご参照ください。
手順2: RunCommand操作を呼び出して、ファイルシステムの一貫性のあるスナップショットを作成
Linuxインスタンス
Cloud Assistantに関連するRunCommand操作を呼び出して、1つ以上のLinuxインスタンスのファイルシステムに整合性のあるスナップショットを作成します。
SDK for Goのサンプルコード:
パッケージメイン
import (import (import)
"fmt"
"os"
「github.com/aliyun/alibaba-cloud-sdk-go/services/ecs」
)
func main() {
// ALIBABA_CLOUD_ACCESS_KEY_ID環境変数とALIBABA_CLOUD_ACCESS_KEY_SECRET環境変数がコードランタイムで設定されていることを確認します。
// プロジェクトコードが漏洩すると、AccessKeyペアが漏洩し、アカウント内のすべてのリソースのセキュリティが侵害される可能性があります。 次のサンプルコードは、環境変数を使用してAccessKeyペアを取得し、AccessKeyペアを使用してAPI操作を呼び出す方法を示しています。 より高いセキュリティを提供するSTSトークンの使用を推奨します。
client, err := ecs.NewClientWithAccessKey(
"cn-hangzhou", // インスタンスのリージョンIDを指定します。
os.Getenv("ALIBABA_CLOUD_ACCESS_KEY_ID") 、
os.Getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET")
// RunCommand操作を呼び出して、インスタンスのファイルシステム一貫性のあるスナップショットを作成します。
request := ecs.CreateRunCommandRequest()
request.Scheme = "https"
request.Type = "RunShellScript"
// ファイルシステムの一貫性のあるスナップショットの作成に使用されるコマンドは、CommandContent値で表示できます。
request.CommandContent = "acs-plugin-manager -- exec -- plugin app-snapshot-plugin -- params=-RamRoleName=\" AppSnapshotRoleName\",-InstantAccess=true,-EnableFsFreeze=true,-TimeoutInSeconds=30,-PreScriptPath=\". posttsh /\Days-ExcludeDiskId=\"\" 、-Name=\"LinuxApp1\""
request.InstanceId = &[]string{"i-bp17r83nppqf141v ****"} // インスタンスのIDを指定します。
レスポンス, err := client.RunCommand (リクエスト)
if err! =nil {
fmt.Print(err.Error())
}
fmt.Printf("response is %#v\n", response)
}
CommandContent値のコンポーネント:
acs-plugin-manager -- exec -- plugin app-snapshot-plugin
:app-snapshot-plugin
Cloud Assistantプラグインを示します。-- params=
は、プラグインのパラメーターを示します。 下表に、各パラメーターを説明します。パラメーター
データ型
必須
説明
ExcludeDiskId
String
任意
スナップショットから除外するディスク。
InstantAccess
ブール値
任意
インスタントアクセス機能を有効にするかどうかを指定します。 有効な値:
true
false
説明11:00の10月12, 2023以降、インスタントアクセス機能がアップグレードされます。 パフォーマンスレベル0、1、2、3のESSDとESSD AutoPLディスクの新しいスナップショットは、作成後すぐに使用できます。 詳細については、「インスタントアクセス機能の使用」をご参照ください。
InstantAccessRentationDays
Integer
任意
インスタントアクセス機能が有効になっている日数。 インスタントアクセス機能は、指定された期間が終了すると自動的に無効になります。
有効な値: 1 ~ 65536 デフォルト値は 1 です。
名前
String
必須
スナップショット整合性グループの名前。
説明
String
任意
snapshot-consistentグループの説明。
RamRoleName
String
必須
インスタンスにアタッチされたRAMロール。 詳細については、このトピックの「手順1: ECSインスタンスのRAMロールの設定」をご参照ください。
PreScriptPath
String
任意
アプリケーションのプリフリーズスクリプトのパス (tmp/prescript.sh) 。 prescript.shスクリプトは、次の要件を満たす必要があります。
rootユーザーのみが、所有者としてのスクリプトに対する読み取り、書き込み、および実行権限 (chmod 700) を付与されます。
スクリプトは、アプリケーションに基づいてカスタマイズされます。
説明Linuxインスタンスのアプリケーション一貫性のあるスナップショットを作成するには、このパラメーターを指定します。 権限、ストレージパス、ファイル名などのスクリプト設定が無効な場合、ファイルシステムに整合性のあるスナップショットが作成されます。
PostScriptPath
String
任意
アプリケーションの解凍後スクリプト (/tmp/postscript.sh) のパス。 postscript.shスクリプトは、次の要件を満たす必要があります。
rootユーザーのみが、所有者としてのスクリプトに対する読み取り、書き込み、および実行権限 (chmod 700) を付与されます。
スクリプトは、アプリケーションに基づいてカスタマイズされます。
説明Linuxインスタンスのアプリケーション一貫性のあるスナップショットを作成するには、このパラメーターを指定します。 権限、ストレージパス、ファイル名などのスクリプト設定が無効な場合、ファイルシステムに整合性のあるスナップショットが作成されます。
EnableFsFreeze
ブール値
任意
スナップショットを作成する前に、ファイルシステムを読み取り専用状態にするためにLinux fssezeを有効にするかどうかを指定します。
デフォルト値は True です。
TimeoutInSeconds
Integer
任意
I/Oフリーズタイムアウト期間。
デフォルト値:30。 単位は秒です。
ScriptTimeoutInSeconds
Integer
任意
スクリプト実行のタイムアウト時間。
デフォルト値: 1800 単位は秒です。
次のようなレスポンスが表示されます。 レスポンスのパラメーターの詳細については、「RunCommand」をご参照ください。
Windowsインスタンス
Cloud Assistantに関連するRunCommand操作を呼び出して、1つ以上のWindowsインスタンスのアプリケーション一貫性のあるスナップショットを作成します。
SDK for Goのサンプルコード:
パッケージメイン
import (import (import)
"fmt"
"os"
「github.com/aliyun/alibaba-cloud-sdk-go/services/ecs」
)
func main() {
// ALIBABA_CLOUD_ACCESS_KEY_ID環境変数とALIBABA_CLOUD_ACCESS_KEY_SECRET環境変数がコードランタイムで設定されていることを確認します。
// プロジェクトコードが漏洩すると、AccessKeyペアが漏洩し、アカウント内のすべてのリソースのセキュリティが侵害される可能性があります。 次のサンプルコードは、環境変数を使用してAccessKeyペアを取得し、AccessKeyペアを使用してAPI操作を呼び出す方法を示しています。 より高いセキュリティを提供するSTSトークンの使用を推奨します。
client, err := ecs.NewClientWithAccessKey(
"cn-hangzhou", // インスタンスのリージョンIDを指定します。
os.Getenv("ALIBABA_CLOUD_ACCESS_KEY_ID") 、
os.Getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET")
request := ecs.CreateRunCommandRequest()
request.Scheme = "https"
request.Type = "RunBatScript"
// アプリケーションの一貫性のあるスナップショットの作成に使用されるコマンドは、CommandContent値で表示できます。
request.CommandContent = "acs-plugin-manager -- exec -- plugin app-snapshot-plugin-win -- params=-RamRoleName=\" AppSnapshotRoleName\",-InstantAccess=true,-EnableWriters=true,-Description=\" AppSnapshot\",-InstantAccessRentationDays=1,-InstantAccessRentationDays \"\"
request.InstanceId = &[]string{"i-bp11vqwgh574 ****"} // インスタンスのIDを指定します。
request.Timeout = "1800"
レスポンス, err := client.RunCommand (リクエスト)
if err! =nil {
fmt.Print(err.Error())
}
fmt.Printf("response is %#v\n", response)
}
CommandContent値のコンポーネント:
acs-plugin-manager -- exec -- plugin app-snapshot-plugin-win
:app-snapshot-plugin-win
Cloud Assistantプラグインを示します。-- params=
は、プラグインのパラメーターを示します。 下表に、各パラメーターを説明します。パラメーター
データ型
必須
説明
ExcludeDiskId
String
任意
スナップショットから除外するディスク。
InstantAccess
ブール値
任意
インスタントアクセス機能を有効にするかどうかを指定します。 有効な値:
true
false
説明11:00の10月12, 2023以降、インスタントアクセス機能がアップグレードされます。 パフォーマンスレベル0、1、2、3のESSDとESSD AutoPLディスクの新しいスナップショットは、作成後すぐに使用できます。 詳細については、「インスタントアクセス機能の使用」をご参照ください。
InstantAccessRentationDays
Integer
任意
インスタントアクセス機能が有効になっている日数。 インスタントアクセス機能は、指定された期間が終了すると自動的に無効になります。
有効な値: 1 ~ 65536 デフォルト値は 1 です。
名前
String
必須
スナップショット整合性グループの名前。
説明
String
任意
snapshot-consistentグループの説明。
RamRoleName
String
必須
インスタンスにアタッチされたRAMロール。 詳細については、このトピックの「手順1: ECSインスタンスのRAMロールの設定」をご参照ください。
EnableWriters
ブーレン
任意
アプリケーション一貫性のあるスナップショットを作成するかどうかを指定します。 有効な値:
true
false
デフォルト値:true
次のようなレスポンスが表示されます。 レスポンスのパラメーターの詳細については、「RunCommand」をご参照ください。
手順3: DescribeInvocationResults操作を呼び出して、スナップショットが作成されているかどうかを確認します
DescribeInvocationResults操作を呼び出して、Cloud Assistantコマンドが実行されているかどうかを確認します。
SDK for Goのサンプルコード:
パッケージメイン
import (import (import)
"fmt"
"os"
「github.com/aliyun/alibaba-cloud-sdk-go/services/ecs」
)
func main() {
// ALIBABA_CLOUD_ACCESS_KEY_ID環境変数とALIBABA_CLOUD_ACCESS_KEY_SECRET環境変数がコードランタイムで設定されていることを確認します。
// プロジェクトコードが漏洩すると、AccessKeyペアが漏洩し、アカウント内のすべてのリソースのセキュリティが侵害される可能性があります。 次のサンプルコードは、環境変数を使用してAccessKeyペアを取得し、AccessKeyペアを使用してAPI操作を呼び出す方法を示しています。 より高いセキュリティを提供するSTSトークンの使用を推奨します。
client, err := ecs.NewClientWithAccessKey(
"cn-hangzhou", // インスタンスのリージョンIDを指定します。
os.Getenv("ALIBABA_CLOUD_ACCESS_KEY_ID") 、
os.Getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET")
// DescribeInvocationResults操作を呼び出して、スナップショットが作成されているかどうかを確認します。
request := ecs.CreateDescribeInvocationResultsRequest()
request.Scheme = "https"
request.InvokeId = "t-hz01qsegaxi ****" // コマンドのタスクID。 タスクIDは、前の手順で応答で取得できます。
request.InstanceId = "i-bp17r83nppqf141v ****" // インスタンスID。
request.CommandId = "c-hz01qsegaxd ****" // コマンドID。 コマンドIDは、前の手順のレスポンスで取得できます。
レスポンス, err := client.DescribeInvocationResults (リクエスト)
if err! =nil {
fmt.Print(err.Error())
}
fmt.Printf("response is %#v\n", response)
}
次のようなレスポンスが表示されます。 レスポンスのパラメーターの詳細については、「DescribeInvocationResults」をご参照ください。
ExitCodeはエラーコードを示します。 値
0
は、コマンドが正常に実行されたことを示します。0
以外の数値はエラーが発生したことを示します。 エラーコードに基づいて問題をトラブルシューティングします。 詳細については、このトピックのエラーコードセクションを参照してください。Outputは、Base64-encodedされるコマンド出力を示します。
コマンドが正常に実行された場合、次の例に示すように、Outputの値がBase64-encodedされ、作成されたスナップショット整合性グループのIDが含まれます。
[snapshotgroup="ssg-bp170v57ca9j01jb ****"][message="スナップショットの全プロセスを正常に終了"]
エラーコード
上記の操作を実行してアプリケーション整合性のあるスナップショットを作成すると、エラーコード (ExitCode) が返される場合があります。 アプリケーション一貫性のあるスナップショットを作成できない場合は、返されたエラーコードに基づいてエラーをトラブルシューティングできます。 次の表に、一般的なエラーコードを示します。
エラーコード (ExitCode) | 説明 |
0 | アプリケーション一貫性のあるスナップショットが作成されます。 |
1 | 1つ以上の条件が満たされない。 例:
|
2 |
|
3 | 例:
|
4 | スナップショット整合性グループは作成できません。 |
5 | snapshot-consistentグループが期待した状態ではありません。 |
6 | スナップショット整合性グループの作成要求がタイムアウトしました。 |
7 | スナップショット整合性グループ内のディスクスナップショットが期待された状態ではありません。 |
8 | スナップショットにタグを追加することはできません。 |
9 | アプリケーションのプリフリーズスクリプトは実行できません。 |
10 | アプリケーションの解凍後スクリプトは実行できません。 |
11 | ファイルシステムのI/Oはフリーズできません。 |
12 | ファイルシステムのI/Oは解凍できません。 |
13 | インスタンスにRAMロールがアタッチされていません。 |
14 | スナップショットの数が上限を超えています。 |
15 | スナップショットが期待された状態ではありません。 |
16 | 以前のスナップショットが作成中であり、インスタントアクセス機能が無効になっているため、スナップショットを作成できません。 |
255 | 不明なエラーが発生しました。 |
参考資料
MySQLまたはSQL Serverデータベースのアプリケーション一貫性のあるスナップショットを作成できます。 詳細については、「MySQLがデプロイされているLinuxインスタンスのアプリケーション一貫性のあるスナップショットを作成するためのベストプラクティス」および「SQL ServerがデプロイされているWindowsインスタンスのアプリケーション一貫性のあるスナップショットを作成するためのベストプラクティス」をご参照ください。