すべてのプロダクト
Search
ドキュメントセンター

Elastic Compute Service:アプリケーションに一貫性のあるスナップショットの作成

最終更新日:Apr 18, 2024

アプリケーション一貫性のあるスナップショット技術は、ディスクに格納された元のデータをキャプチャしてスナップショットを作成するときに、アプリケーションデータの一貫性のある状態を保証するために使用できます。 これにより、進行中のすべてのトランザクションが完了し、メモリ内のデータがディスクに書き込まれ、アプリケーションが一貫した状態になります。 アプリケーションの一貫性のあるスナップショットを使用して、アプリケーションを一貫性のある状態に復元できます。 これにより、複雑なログロールバックプロセスが回避され、高速で安定したアプリケーションの起動が可能になります。 このトピックでは、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

アプリケーション一貫性のあるスナップショットは、アプリケーションシステムのデータとデータベーストランザクション間の一貫性を確保するために、スナップショットの作成時にメモリに保存されたデータと進行中のデータベーストランザクションをバックアップします。 アプリケーションの一貫性のあるスナップショットは、データのロールバックに使用して、データの破損やデータの損失を防ぎ、データベースの起動時にログがロールバックされず、アプリケーションが一貫した状態で起動することを保証できます。

アプリケーション一貫性のあるスナップショットは、APPConsistent:Trueタグで識別されます。

アプリケーション一貫性のあるスナップショット機能の実装方法は、オペレーティングシステムによって異なります。

  • Windowsオペレーティングシステムの場合、この機能はボリュームシャドウコピーサービス (VSS) を使用して実装されます。

  • Linuxオペレーティングシステムの場合、この機能はカスタムシェルスクリプトを使用して実装されます。 アプリケーションに基づいて独自のスクリプトを作成する必要があります。 カスタムスクリプトを使用する場合、Alibaba Cloudはアプリケーションの一貫性の問題について責任を負いません。

ファイルシステムの一貫性のあるスナップショット

アプリケーション一貫性のあるスナップショット機能が有効になっているが、関連する条件が満たされていない場合、ファイルシステム一貫性のあるスナップショットが作成されます。

ファイルシステムの一貫性のあるスナップショットは、スナップショットの作成時にファイルシステムのメモリとディスクの情報を同期し、ファイルシステムの一貫性を確保するためにファイルシステムでの書き込み操作をフリーズします。 ファイルシステムの整合性のあるスナップショットを使用して、オペレーティングシステムがディスクチェック (chkdsk) およびファイルシステムの整合性チェック (fsck) を実行できないようにすることができます。

ファイルシステムの一貫性のあるスナップショットは、FsConsistent:Trueタグで識別されます。

ファイルシステム整合スナップショット機能の実装方法は、オペレーティングシステムによって異なります。

  • Windowsオペレーティングシステムの場合、VSSライターが使用できない場合、ファイルシステムの一貫性のあるスナップショットはデフォルトで作成されます。

  • Linuxオペレーティングシステムの場合、アプリケーションスクリプトが使用できない場合、ファイルシステムに整合性のあるスナップショットはデフォルトで作成されます。

手順

ECSコンソールでのアプリケーション一貫性のあるスナップショットの作成

手順1: ECSインスタンスのRAMロールの設定

  1. にログインします。RAMコンソールAlibaba Cloudアカウントを使用します。

  2. アプリケーション一貫性のあるスナップショット機能のRAMロールを作成します。 詳細については、「信頼できるAlibaba CloudサービスのRAMロールの作成」をご参照ください。

    次の図は、AppSnapshotRoleNameという名前のRAMロールを作成する方法を示しています。应用一致性ram角色

  3. アプリケーション一貫性のあるスナップショット機能の権限ポリシーを作成します。 詳細については、「カスタムポリシーの作成」をご参照ください。

    快照权限

    AppSnapshotPolicyポリシーを作成して、スナップショットの詳細の照会、スナップショットの作成、タグの設定、およびディスクの詳細の照会の権限を付与します。 次のポリシーコンテンツを使用できます。

    {
        "Version": "1",
        "Statement": [
            {
                "Effect": "Allow",
                "Action": [
                    "ecs:DescribeSnapshot *" 、
                    "ecs:CreateSnapshot *" 、
                    "ecs:TagResources" 、
                    "ecs:DescribeDisks"
                ],
                "Resource": [
                    "*"
                ],
                "Condition": {}
            }
        ]
    }
  4. AppSnapshotPolicyポリシーをAppSnapshotRoleName RAMロールにアタッチします。 詳細については、「RAMロールへの権限の付与」をご参照ください。

    授权

  5. AppSnapshotRoleName RAMロールをECSインスタンスにアタッチします。 詳細については、「インスタンスRAMロールを使用してリソースへのアクセスを制御する」をご参照ください。

手順2: ECSインスタンスのアプリケーション一貫性スナップショット機能の有効化

Linuxインスタンス

Linuxインスタンスでは、アプリケーションの一貫性を実現するために、アプリケーションに基づいて、アプリケーションのプリフリーズおよびポスト解凍スクリプトとしてシェルスクリプトをカスタマイズできます。 このセクションでは、Linuxインスタンスのアプリケーション一貫性のあるスナップショット機能を有効にする方法について説明します。

  1. Linuxインスタンスにデプロイされたアプリケーションに基づいて、アプリケーションのプリフリーズスクリプトとポスト解凍スクリプトを記述し、スクリプトをインスタンスにアップロードします。

    ファイル転送プロトコル (FTP) またはクラウドアシスタントを使用して、アプリケーションのフリーズ前および解凍後のスクリプトをインスタンスにアップロードできます。

    • アプリケーションのプリフリーズスクリプト: スクリプトの読み取り、書き込み、および実行権限をrootユーザーにのみ付与します。 スクリプトのストレージパスを /tmp/prescript.shに設定します。

    • アプリケーションの解凍後スクリプト: スクリプトの読み取り、書き込み、および実行権限をrootユーザーにのみ付与します。 スクリプトのストレージパスを /tmp/postscript.shに設定します。

    重要

    権限、ストレージパス、ファイル名などのスクリプト設定が無効な場合、ファイルシステムに整合性のあるスナップショットが作成されます。

  2. ECSコンソールの [インスタンス] ページに移動します。

    1. にログインします。ECSコンソール.

    2. 左側のナビゲーションウィンドウで、インスタンス&画像 > インスタンス.

    3. 上部のナビゲーションバーで、ECSインスタンスが配置されているリージョンを選択します。image.png

  3. アプリケーションの一貫性のあるスナップショット機能を有効にするインスタンスを見つけ、[操作] 列の 更多 > ディスクとイメージ] > [スナップショットの一貫性のあるグループの作成] を選択します。

  4. [スナップショット一貫性グループの作成] ダイアログボックスで、スナップショット一貫性グループのパラメーターを設定します。

    1. スナップショット整合性グループを作成するディスクを選択し、他のスナップショットパラメータを設定します。

    2. [Application-consistent Snapshot] セクションでパラメーターを設定します。

      • [アプリケーションの一貫性のあるスナップショットの有効化] および [ファイルシステムのフリーズと解凍の有効化] を選択し、有効なスクリプトを設定すると、アプリケーションの一貫性のあるスナップショットが作成されます。

      • [アプリケーションの一貫性のあるスナップショットの有効化] および [ファイルシステムのフリーズと解凍の有効化] を選択したが、有効なスクリプトを設定しない場合、ファイルシステムの一貫性のあるスナップショットが作成されます。

      説明

      Cloud AssistantプラグインがLinuxインスタンスにインストールされていない場合、[アプリケーションの一貫性のあるスナップショットの有効化] を選択すると、プラグインが自動的にインスタンスにインストールされます。

  5. 次に、[OK] をクリックします。

    スナップショット整合性グループを作成すると、次の図に示すように、Cloud AssistantコマンドIDとタスクID (InvokeId) を示すメッセージが表示されます。 タスクIDに基づいて、アプリケーションに整合性のあるスナップショットが作成されているかどうかを確認できます。命令执行id

Windowsインスタンス

Windowsインスタンスの場合、VSSを使用してアプリケーションの一貫性を実装できます。 このセクションでは、Windowsインスタンスのアプリケーション一貫性のあるスナップショット機能を有効にする方法について説明します。

  1. ECSコンソールの [インスタンス] ページに移動します。

    1. にログインします。ECSコンソール.

    2. 左側のナビゲーションウィンドウで、インスタンス&画像 > インスタンス.

    3. 上部のナビゲーションバーで、ECSインスタンスが配置されているリージョンを選択します。image.png

  2. アプリケーションの一貫性のあるスナップショット機能を有効にするインスタンスを見つけ、[操作] 列の 更多 > ディスクとイメージ] > [スナップショットの一貫性のあるグループの作成] を選択します。

  3. [スナップショット一貫性グループの作成] ダイアログボックスで、スナップショット一貫性グループのパラメーターを設定します。

    1. スナップショット整合性グループを作成するディスクを選択し、他のスナップショットパラメータを設定します。

    2. [Application-consistent Snapshot] セクションでパラメーターを設定します。

      • [アプリケーションの一貫性のあるスナップショットの有効化] および [デフォルトでライターを含む] を選択した場合、アプリケーションの一貫性のあるスナップショットが作成されます。

      • [アプリケーションの一貫性のあるスナップショットの有効化] のみを選択すると、ファイルシステムの一貫性のあるスナップショットが作成されます。

      説明

      Cloud Assistantプラグインがインスタンスにインストールされていない場合、[アプリケーションの一貫性のあるスナップショットの有効化] を選択すると、プラグインがインスタンスに自動的にインストールされます。

  4. 次に、[OK] をクリックします。

    スナップショット整合性グループが作成されると、次の図に示すように、Cloud AssistantコマンドIDとタスクIDを示すメッセージが表示されます。 タスクIDに基づいて、アプリケーションに整合性のあるスナップショットが作成されているかどうかを確認できます。命令执行id

手順3: アプリケーションの一貫性のあるスナップショットが作成されているかどうかの確認

上記の手順を実行した後、ECSコンソールのECSクラウドアシスタントページに移動して、アプリケーションに整合性のあるスナップショットが作成されているかどうかを確認し、ECSコンソールのスナップショットページに移動して、作成されたスナップショットに整合性のあるグループとディスクスナップショットの詳細を表示します。

  1. On theECSクラウドアシスタントページで、アプリケーション一貫性のあるスナップショットが作成されているか確認します。

    1. ECSコンソールにログインします。

    2. 左側のナビゲーションウィンドウで、[メンテナンスとモニタリング] > [クラウドアシスタント] を選択します。

    3. [コマンド実行結果] タブをクリックします。

    4. 前の手順で取得したタスクIDを [タスクID] 列で検索し、タスクIDをクリックして実行結果を表示します。

      image.png

      アプリケーションの整合性のあるスナップショットが作成されると、ExitCodeパラメーターの戻り値が0され、コマンド出力にスナップショットの整合性のあるグループのIDが表示されます (前の図を参照) 。

      説明

      ExitCodeパラメーターの戻り値が0でない場合、エラーが発生しました。 ExitCode列のエラーコードに基づいてエラーをトラブルシューティングします。 詳細については、このトピックの「エラーコード」をご参照ください。

  2. [スナップショット] ページで、作成したスナップショット一貫性のあるグループとディスクスナップショットの詳細を表示します。

    1. 左側のナビゲーションウィンドウで、ストレージ&スナップショット > スナップショット.

    2. をクリックし、スナップショット整合性グループタブで、作成したスナップショット整合性グループを見つけ、スナップショット整合性グループのIDをクリックして、スナップショット整合性グループの詳細を表示します。

    3. [スナップショット情報] セクションで、ディスクスナップショットのIDをクリックします。

      image.png

    4. では、基本情報セクションでは、スナップショットのタグに基づいて、ディスクスナップショットがアプリケーション整合スナップショットかファイルシステム整合スナップショットかを確認します。

      • アプリケーション一貫性のあるスナップショットは、APPConsistent:Trueタグで識別されます。

        image.png

      • ファイルシステムの一貫性のあるスナップショットは、FsConsistent:Trueタグで識別されます。

        image.png

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」をご参照ください。linux

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」をご参照ください。win查询结果

手順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つ以上の条件が満たされない。 例:

  • ディスクカテゴリはサポートされていません。

  • スナップショット名が無効です。

  • ネットワーク接続の問題が発生しました。

  • インスタンスにRAMロールがアタッチされていません。

  • インスタンスのオペレーティングシステムはサポートされていません。

2

-- params文字列に続くパラメーターの型または数が無効です。

3

例:

  • インスタンスにESSDがアタッチされていません。

  • インスタンスにアタッチされたRAMロールには、スナップショット関連のAPI操作を呼び出す権限がありません。

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インスタンスのアプリケーション一貫性のあるスナップショットを作成するためのベストプラクティス」をご参照ください。