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

Elastic Compute Service:MySQL がデプロイされている Linux インスタンスのアプリケーション整合性スナップショットを作成するためのベストプラクティス

最終更新日:Jul 07, 2025

アプリケーション整合性スナップショットを作成するために、システムは書き込みリクエストを一時停止し、スナップショットに取り込まれるデータの整合性と一貫性を確保します。 アプリケーション整合性スナップショットを使用してデータをリストアすると、データの破損や損失のリスクを軽減できます。 これにより、MySQL などのアプリケーションが期待どおりに起動し、データがスナップショットの作成時と同じ状態に保たれます。 このトピックでは、MySQL 8.0 を搭載した CentOS 7.9 Elastic Compute Service (ECS) インスタンスのアプリケーション整合性スナップショットを作成し、スナップショットを使用して期待どおりにデータをリストアできるかどうかを確認する方法について説明します。

前提条件

  • ECS インスタンスに接続されているディスクは、マルチアタッチが無効になっている企業向け SSD (ESSD) です。

  • ECS インスタンスは [実行中] 状態です。 クラウドアシスタントはインスタンス上で通常の状態です。 クラウドアシスタントのステータスを表示する方法については、「Cloud Assistant のステータスを表示し、異常を処理する」をご参照ください。

  • MySQL は ECS インスタンスにインストールされています。 MySQL のユーザー名とパスワードを取得します。 詳細については、「Linux ECS インスタンスに MySQL データベースをデプロイする」をご参照ください。

  • Resource Access Management (RAM) ロールが ECS インスタンスにアタッチされ、アプリケーション整合性スナップショットの権限を含むカスタムポリシーが RAM ロールにアタッチされています。 詳細については、「インスタンス RAM ロールを作成し、ECS インスタンスにアタッチする」をご参照ください。

    説明

    アプリケーション整合性スナップショットを作成する場合は、クラウドアシスタントを呼び出して ECS インスタンスにアクセスし、コマンドを実行する必要があります。 クラウドアシスタントを呼び出す前に、RAM ロールを使用してクラウドアシスタントに必要な権限を付与します。

    • AppSnapshotRoleName などのカスタム RAM ロールを設定します。

    • カスタムポリシーを RAM ロールにアタッチします。 次のサンプルコードはカスタムポリシーを示しており、RAM ロールにはスナップショットのクエリ、スナップショットの作成、タグの追加、ディスク情報のクエリを行う権限があることを示しています。

      {
          "Version": "1",
          "Statement": [
              {
                  "Effect": "Allow",
                  "Action": [
                      "ecs:DescribeSnapshot*",
                      "ecs:CreateSnapshot*",
                      "ecs:TagResources",
                      "ecs:DescribeDisks"
                  ],
                  "Resource": [
                      "*"
                  ],
                  "Condition": {}
              }
          ]
      }

ワークフロー

次の図は、アプリケーション整合性スナップショットを作成して、データベースのステータスがアプリケーション整合性スナップショットの作成時のステータスと同じであることを確認し、アプリケーションの整合性を確保するために実行する必要がある操作を示しています。

image
  1. 手順 1: prescript.sh および postscript.sh スクリプトファイルを作成する

    アプリケーション整合性スナップショットを作成するための prescript.sh および postscript.sh スクリプトファイルを作成します。 prescript.sh スクリプトは、スナップショットの作成前にデータベースの書き込み操作を一時停止します。 postscript.sh スクリプトは、スナップショットの作成後にデータベースの書き込み操作を再開します。

  2. 手順 2: データベース検証環境を準備する

    データベーステーブルとストアドプロシージャを作成して、データ書き込み操作をシミュレートし、後でアプリケーション整合性スナップショットを検証します。 MySQL データベースのアプリケーション整合性スナップショットを作成するために、システムはデータベースを一時停止します。 このセクションでは、データベースのアプリケーション整合性スナップショットを作成する前に、TestPIT ストアドプロシージャを呼び出して MySQL データベースにデータを挿入する方法について説明します。 これにより、後から MySQL データベースが一時停止されているかどうか、および作成されたスナップショットを使用して期待どおりにデータをリストアできるかどうかを確認できます。

  3. 手順 3: ECS コンソールでアプリケーション整合性スナップショットを作成する

    MySQL データベースが存在する Linux ECS インスタンスのアプリケーション整合性スナップショットを作成し、スクリプトを実行してデータベースの書き込み操作を一時停止および再開します。 アプリケーション整合性スナップショットを作成すると、データの整合性を確保するためにデータベースへの書き込み操作が一時的に停止されます。

  4. 手順 4: アプリケーション整合性スナップショットが作成されているかどうかを確認する

    クラウドアシスタントのコマンド実行結果を表示して、スナップショットが期待どおりに作成されているかどうかを確認し、データベースの書き込み操作が一時停止および再開された時点を表示します。

  5. 手順 5: アプリケーション整合性スナップショットを使用して期待どおりにデータをリストアできるかどうかを確認する

    アプリケーション整合性スナップショットを使用して、Linux ECS インスタンスに接続されているディスク上のデータをリストアします。 次に、MySQL データベースにデータが最後に書き込まれた時刻と prescript.sh スクリプトが実行された時刻を比較して、データがアプリケーション整合性スナップショットに適切にバックアップされ、スナップショットから期待どおりにリストアされたかどうかを判断します。

    • MySQL データベースにデータが最後に書き込まれた時刻が prescript.sh スクリプトが実行された時刻よりも前の場合、一時停止中に MySQL データベースへの書き込み操作は実行されませんでした。 MySQL データは、アプリケーション整合性スナップショットの作成時の状態にリストアされ、ステータス整合性が実現します。

    • MySQL データベースにデータが最後に書き込まれた時刻が prescript.sh スクリプトが実行された時刻以降の場合、一時停止中にも MySQL データベースへの書き込み操作が実行されていました。 MySQL データは、アプリケーション整合性スナップショットと整合性がありません。

手順

手順 1: prescript.sh および postscript.sh スクリプトファイルを作成する

重要

このトピックで使用されている prescript.sh および postscript.sh スクリプトファイルは参照用です。 アプリケーションのアプリケーション整合性スナップショットを作成する場合は、ビジネスシナリオに基づいて prescript.sh および postscript.sh スクリプトファイルをコンパイルできます。 詳細については、「アプリケーション整合性スナップショットを作成する」をご参照ください。

  1. ルートユーザーとして ECS インスタンスに接続します。

    詳細については、「Workbench を使用して SSH 経由で Linux インスタンスに接続する」をご参照ください。

  2. /tmp/prescript.sh スクリプトファイルを作成し、スクリプトファイルにデータを書き込みます。

    1. ルートアカウントを使用して、/tmp/prescript.sh スクリプトファイルを作成します。

      vim /tmp/prescript.sh
    2. I キーを押して、挿入モードに切り替えます。

    3. アプリケーションに基づいて prescript.sh ファイルを書き込みます。

      展開して prescript.sh スクリプトの内容を表示します。

      TIMESTAMP=`date +%s`
      MYSQL_TEMP_FILE_NAME="/tmp/mysqlfreeze${TIMESTAMP}.tmp"
      LOG_FILE_NAME="/tmp/mysqlfreeze${TIMESTAMP}.log"
      
      # Enter your MySQL username.  // MySQLユーザー名を入力します。
      export MYSQL_USER="$MYSQL_USER"
      # Enter your MySQL password. // MySQLパスワードを入力します。
      export MYSQL_PWD="$MYSQL_PASSWORD"
      
      function Log()
      {
          echo "$1" 
          echo "$1" >> ${LOG_FILE_NAME}
      }
      
      
      function ExitWithResult()
      {
          Log "[INFO]:mysql freeze result is $1." // [INFO]:mysqlフリーズ結果は $1 です。
          exit $1
      }
      
      function Main()
      {
          Log "*********************************************************************"
          Log "[INFO]:Begin to freeze mysql." // [INFO]:mysqlのフリーズを開始します。
      
          which mysql
          if [ $?  -ne 0 ]
          then
              Log "[INFO]:mysql is not installed." // [INFO]:mysqlはインストールされていません。
              ExitWithResult 0
          fi  
      
          systemctl status mysqld.service | grep "inactive (dead)"
          if [ $?  -ne 1 ]
          then
              Log "[ERROR]:mysql is not running." // [ERROR]:mysqlは実行されていません。
              ExitWithResult 0
          fi  
      
          mysql -u$MYSQL_USER -p$MYSQL_PASSWORD -e "show processlist;" > "${MYSQL_TEMP_FILE_NAME}" 2>&1
          if [ $?  -ne 0 ]
          then
              cat ${MYSQL_TEMP_FILE_NAME} >>"${LOG_FILE_NAME}"
              [ -f ${MYSQL_TEMP_FILE_NAME} ] && rm -rf ${MYSQL_TEMP_FILE_NAME}
              Log "[ERROR]:Show process list failed." // [ERROR]:プロセスリストの表示に失敗しました。
              ExitWithResult 1
          fi
      
      
          process_id=`cat ${MYSQL_TEMP_FILE_NAME} | grep "select 1 and sleep(25)" | awk -F " " '{print $1}'`
          if [ "$process_id" != "" ]
          then
              cat ${MYSQL_TEMP_FILE_NAME} >>"${LOG_FILE_NAME}"
              [ -f ${MYSQL_TEMP_FILE_NAME} ] && rm -rf ${MYSQL_TEMP_FILE_NAME}
              Log "[ERROR]:MySQL already been freezed " // [ERROR]:MySQLは既にフリーズされています。
              ExitWithResult 1
          fi
      
          cat ${MYSQL_TEMP_FILE_NAME}
      
          Log "[INFO]:Try to execute flush tables command" // [INFO]:flush tablesコマンドの実行を試みます。
      
             echo "flush tables with read lock;select 1 and sleep(25);" | nohup mysql -u$MYSQL_USER   >> "${LOG_FILE_NAME}" 2>&1 &
          if [ $?  -ne 0 ]
          then
              Log "[ERROR]:Freeze mysql failed." // [ERROR]:mysqlのフリーズに失敗しました。
              ExitWithResult 1
          fi  
      
          Log "[INFO]:Flush tables command execute success" // [INFO]:flush tablesコマンドの実行に成功しました。
      
          checkTime=0
          while [ 1 ]
          do
              mysql -u$MYSQL_USER -p$MYSQL_PASSWORD -e "show processlist;" > "${MYSQL_TEMP_FILE_NAME}" 2>&1
              if [ $?  -ne 0 ]
              then
                  cat ${MYSQL_TEMP_FILE_NAME} >>"${LOG_FILE_NAME}"
                  [ -f ${MYSQL_TEMP_FILE_NAME} ] && rm -rf ${MYSQL_TEMP_FILE_NAME}
                  Log "[ERROR]:Show process list failed." // [ERROR]:プロセスリストの表示に失敗しました。
                  ExitWithResult 1
              fi
              
              cat ${MYSQL_TEMP_FILE_NAME}
      
              process_id=`cat ${MYSQL_TEMP_FILE_NAME} | grep "select 1 and sleep(25)" | awk -F " " '{print $1}'`
              if [ "$process_id" = "" ]
              then
                  checkTime=`expr $checkTime + 1`
                  Log "[INFO]:Mysql is not freeze. checkTime is ${checkTime}" // [INFO]:Mysqlはフリーズされていません。 checkTimeは ${checkTime} です。
                  sleep 1
              else
                  Log "[INFO]:Found sleep command in processlist,freeze success" // [INFO]:プロセスリストでsleepコマンドが見つかりました。フリーズに成功しました。
                  break
              fi
      
                 if [ $checkTime -eq 10 ]
              then
                  cat "${MYSQL_TEMP_FILE_NAME}" >>"${LOG_FILE_NAME}" 2>&1
                  
                  freeze_id=`cat ${MYSQL_TEMP_FILE_NAME} | grep "flush tables with read lock" | awk -F " " '{print $1}'`            
                  mysql -u$MYSQL_USER -e "kill $freeze_id;" >> "${LOG_FILE_NAME}" 2>&1
                  if [ $?  -ne 0 ]
                  then
                      Log "[ERROR]:Thaw mysql failed." // [ERROR]:mysqlのthawに失敗しました。
                  fi    
      
                  [ -f ${MYSQL_TEMP_FILE_NAME} ] && rm -rf ${MYSQL_TEMP_FILE_NAME}
                  Log "[ERROR]:Mysql is not freeze. Will return error" // [ERROR]:Mysqlはフリーズされていません。 エラーを返します。
                  ExitWithResult 1
              fi
          done
      
             [ -f ${MYSQL_TEMP_FILE_NAME} ] && rm -rf ${MYSQL_TEMP_FILE_NAME}
          Log "[INFO]:Finish freeze mysql." // [INFO]:mysqlのフリーズを完了します。
          ExitWithResult 0
      }
      Main

      上記のスクリプトでは、次のパラメータを変更する必要があります。

      • $MYSQL_USER: このパラメータを MySQL ユーザー名に設定します。

      • $MYSQL_PASSWORD: このパラメータを MySQL パスワードに設定します。

    4. Esc キーを押し、:wq と入力し、Enter キーを押してスクリプトファイルを保存して閉じます。

    5. スクリプトファイルの読み取り、書き込み、および実行権限をルートアカウントのみに付与します。

      重要

      セキュリティ上の理由から、ルートアカウントのみにスクリプトファイルの読み取り、書き込み、および実行権限 (chmod 700) が付与されていることを確認してください。 そうしないと、権限設定が無効になり、スクリプトを実行できません。

      chmod 700 /tmp/prescript.sh
  3. /tmp/postscript.sh スクリプトファイルを作成し、スクリプトファイルにデータを書き込みます。

    1. ルートアカウントを使用して、/tmp/postscript.sh スクリプトファイルを作成します。

      vim /tmp/postscript.sh
    2. I キーを押して、挿入モードに切り替えます。

    3. アプリケーションに基づいてスクリプトファイルを書き込みます。

      展開して postscript.sh スクリプトを表示します。

      TIMESTAMP=`date +%s`
      MYSQL_TEMP_FILE_NAME="/tmp/mysqlthaw${TIMESTAMP}.tmp"
      LOG_FILE_NAME="/tmp/mysqlthaw${TIMESTAMP}.log"
      # Enter your MySQL username. // MySQLユーザー名を入力します。
      export MYSQL_USER="$MYSQL_USER"
      # Enter your MySQL password. // MySQLパスワードを入力します。
      export MYSQL_PWD="$MYSQL_PASSWORD"
      
      function Log()
      {
          echo "$1" 
          echo "$1" >> ${LOG_FILE_NAME}
      }
      
      
      function ExitWithResult()
      {
          Log "[INFO]:mysql unfreeze result is $1." // [INFO]:mysqlフリーズ解除結果は $1 です。
          exit $1
      }
      
      function Main()
      {
          Log "*********************************************************************"
          Log "[INFO]:Begin to thaw mysql." // [INFO]:mysqlのthawを開始します。  
      
          which mysql
          if [ $?  -ne 0 ]
          then
              Log "[INFO]:mysql is not installed." // [INFO]:mysqlはインストールされていません。
              ExitWithResult 0
          fi  
      
          systemctl status mysqld.service | grep "inactive (dead)"
          if [ $?  -ne 1 ]
          then
              Log "[ERROR]:mysql is not running." // [ERROR]:mysqlは実行されていません。
              ExitWithResult 0
          fi  
      
      
          mysql -u$MYSQL_USER  -e "show processlist;" > "${MYSQL_TEMP_FILE_NAME}" 2>&1
          if [ $?  -ne 0 ]
          then
              cat ${MYSQL_TEMP_FILE_NAME} >>"${LOG_FILE_NAME}"
              [ -f ${MYSQL_TEMP_FILE_NAME} ] && rm -rf ${MYSQL_TEMP_FILE_NAME}
              Log "[ERROR]:show process list failed." // [ERROR]:プロセスリストの表示に失敗しました。
              ExitWithResult 1
          fi
      
          Log "[INFO]:show process list success." // [INFO]:プロセスリストの表示に成功しました。
      
          cat ${MYSQL_TEMP_FILE_NAME}
          
          process_ids=`cat ${MYSQL_TEMP_FILE_NAME} | grep "select 1 and sleep(25)" | awk -F " " '{print $1}'`
          if [ "$process_ids" = "" ]
          then
              [ -f ${MYSQL_TEMP_FILE_NAME} ] && rm -rf ${MYSQL_TEMP_FILE_NAME}
              Log "[ERROR]:Get freeze process_id failed." // [ERROR]:フリーズ process_id の取得に失敗しました。
              ExitWithResult 1
          fi
      
          cat ${MYSQL_TEMP_FILE_NAME} | grep "select 1 and sleep(25)" | awk -F " " '{print $1}'| while read pid
          do
              Log "[INFO]:Try to stop sql process ${pid}." // [INFO]:sqlプロセス ${pid} の停止を試みます。
      
              mysql -u$MYSQL_USER  -e "kill $pid;" >> "${LOG_FILE_NAME}" 2>&1
              if [ $?  -ne 0 ]
              then
                  [ -f ${MYSQL_TEMP_FILE_NAME} ] && rm -rf ${MYSQL_TEMP_FILE_NAME}
                  Log "[ERROR]:Thaw mysql failed.PIDs is ${process_ids}" // [ERROR]:mysqlのthawに失敗しました。PIDは ${process_ids} です。
                  ExitWithResult 1
              fi   
              Log "[INFO]:Stop sql process ${pid} success." // [INFO]:sqlプロセス ${pid} の停止に成功しました。
      
          done 
          
          [ -f ${MYSQL_TEMP_FILE_NAME} ] && rm -rf ${MYSQL_TEMP_FILE_NAME}
          Log "[INFO]:Finish thaw mysql." // [INFO]:mysqlのthawを完了します。
          ExitWithResult 0
      }
      Main

      上記のスクリプトでは、次のパラメータを変更する必要があります。

      • $MYSQL_USER: このパラメータを MySQL ユーザー名に設定します。

      • $MYSQL_PASSWORD: このパラメータを MySQL パスワードに設定します。

    4. Esc キーを押し、:wq と入力し、Enter キーを押してスクリプトファイルを保存して閉じます。

    5. スクリプトファイルの読み取り、書き込み、および実行権限をルートアカウントのみに付与します。

      重要

      セキュリティ上の理由から、ルートアカウントのみにスクリプトファイルの読み取り、書き込み、および実行権限 (chmod 700) が付与されていることを確認してください。 そうしないと、権限設定が無効になり、スクリプトを実行できません。

      chmod 700 /tmp/postscript.sh
  4. /tmp ディレクトリに移動し、スクリプトファイルの権限を確認します。

    cd /tmp
    ls -l

    次のコマンド出力は、スクリプトファイルの権限が正しく設定されていることを示しています。

    image

手順 2: データベース検証環境を準備する

  1. /root/test.sql スクリプトを作成します。

    1. /root/test.sql スクリプトファイルを作成して開きます。

      vim /root/test.sql
    2. I キーを押して挿入モードに切り替えます。

    3. スクリプトファイルをコンパイルします。

      このスクリプトには、PointInTime という名前のデータベーステーブルを作成するために使用される SQL 文と、TestPIT という名前のストアドプロシージャを作成するために使用される SQL 文が含まれています。 サンプルスクリプト:

      USE AdventureWorks;
      CREATE TABLE PointInTime(id int, t datetime);
      DELIMITER $$
      CREATE PROCEDURE `TestPIT`()
      BEGIN
      DECLARE i int;
      SET i=1;
      WHILE i < 180
      DO
      INSERT INTO PointInTime VALUES(i, now());
      SELECT SLEEP(1);
      SET i=i+1;
      END WHILE;
      END $$
      DELIMITER ;
    4. Esc キーを押し、:wq と入力し、Enter キーを押してスクリプトファイルを保存して閉じます。

  2. MySQL にログオンします。

    次のコマンドを入力し、Enter キーを押し、プロンプトが表示されたら MySQL パスワードを入力します。

    mysql -u <mysqlUserName> -p

    <mysqlUserName> を実際の MySQL ユーザー名に置き換えます。

  3. AdventureWorks という名前のデータベースを作成します。

    CREATE DATABASE AdventureWorks;
  4. スクリプトを実行します。

    source /root/test.sql
  5. TestPIT ストアドプロシージャを呼び出します。

    CALL TestPIT;
    重要

    TestPIT ストアドプロシージャの実行に必要な 3 分間のウィンドウ内で、アプリケーション整合性のあるスナップショットを作成する必要があります。

ステップ 3: ECS コンソールでアプリケーション整合性スナップショットを作成する

  1. ECS コンソール - スナップショット整合性グループ に移動します。

  2. 上部のナビゲーションバーで、管理するリソースのリージョンとリソースグループを選択します。地域

  3. [スナップショット整合性グループ] タブで、[スナップショット整合性グループの作成] をクリックします。

  4. [スナップショットの作成] ダイアログボックスで、次の表に示すパラメーターを構成します。

    1. デフォルトでは、[リソースタイプ]パラメーターは [インスタンス] に設定されています。

    2. [インスタンスの選択] ドロップダウンリストからインスタンスを選択します。次に、[クラウドディスクの選択] セクションで、スナップショットを作成するインスタンスから ESSD を選択します。

    3. [高度な設定] を展開し、アプリケーション整合性スナップショット設定を構成します。

      1. [アプリケーション整合性スナップショットの有効化] を選択します。

      2. prescript.sh スクリプトのパスと postscript.sh スクリプトのパスを、ステップ 1 で作成したスクリプトのパスと同じに設定します。

      3. [有効化する] を選択してファイルシステム I/O の一時停止および再開機能を有効にし、タイムアウト期間を指定します。

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

    スナップショット整合性グループが作成されると、クラウドアシスタントコマンド ID とタスク ID が含まれたメッセージが表示されます。タスク ID に基づいて、アプリケーション整合性スナップショットが作成されたかどうかを確認できます。

ステップ 4: アプリケーション整合性スナップショットが作成されたかどうかを確認する

  1. ECS クラウドアシスタントページで、タスク ID をクリックし、コマンドの実行結果を表示します。

    image

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

    説明

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

  2. クラウドアシスタントの戻りデータで、データベースが一時停止および再開された時点を確認します。

    戻りデータで、prescript.sh スクリプトの実行が開始された時間と postscript.sh スクリプトの実行が停止された時間を確認します。

    • prescript.sh スクリプトは 2024-08-27 15:27:55 に実行を開始しました。これは、データベースがこの時点で書き込み操作を一時停止したことを示しています。image

    • postscript.sh スクリプトは 2024-08-27 15:27:57 に実行を停止しました。これは、データベースがこの時点で書き込み操作を再開したことを示しています。

      image

  3. 作成されたスナップショット整合性グループとディスクスナップショットを表示します。

    1. ECS コンソール - スナップショット整合性グループ に移動します。

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

    3. [スナップショット情報] セクションで、スナップショットに追加されたタグに基づいて、スナップショット整合性グループで作成されたスナップショットがアプリケーション整合性スナップショットであるかどうかを確認します。

      作成されたスナップショットがアプリケーション整合性スナップショットの場合、APPConsistent:True タグがスナップショットに対応する [タグ] 列に表示されます (次の図を参照)。

      image

  4. MySQL データベースに接続して、挿入操作が一時停止された時間を表示します。

    1. Linux ECS インスタンスに接続します。

      詳細については、「Workbench を使用して SSH 経由で Linux インスタンスに接続する」をご参照ください。

    2. MySQL にログオンします。

      次のコマンドを入力し、Enter キーを押してから、プロンプトが表示されたら MySQL パスワードを入力します。

      mysql -u <mysqlUserName> -p

      <mysqlUserName> を実際の MySQL ユーザー名に置き換えます。

    3. PointInTime テーブルの内容をクエリします。

      USE AdventureWorks;
      SELECT * FROM PointInTime;
    4. クエリ結果で、データベースが一時停止された時点を確認します。

      コマンド出力は、2024-08-27 15:27:55 から 2024-08-27 15:27:58 までの期間にデータが挿入されなかったことを示しています。

      image

ステップ 5: アプリケーション整合性スナップショットを使用してデータを想定どおりに復元できるかどうかを確認する

  1. 作成したスナップショット整合性グループを使用してディスクをロールバックします。

  2. MySQL にログオンし、PointInTime テーブルの内容をクエリします。

    1. Linux ECS インスタンスに接続します。

      詳細については、「Workbench を使用して SSH 経由で Linux インスタンスに接続する」をご参照ください。

    2. MySQL にログオンします。

      次のコマンドを入力し、Enter キーを押してから、プロンプトが表示されたら MySQL パスワードを入力します。

      mysql -u <mysqlUserName> -p

      <mysqlUserName> を実際の MySQL ユーザー名に置き換えます。

    3. PointInTime テーブルの内容をクエリします。

      USE AdventureWorks;
      SELECT * FROM PointInTime;
    4. クエリ結果で、データが復元された後に MySQL データベースに最後に書き込まれた時刻を確認します。

      コマンド出力は、データベースに最後に挿入されたデータレコードが 2024-08-27 15:27:54 であることを示しています。これは、ステップ 4 でクエリされた 2024-08-27 15:27:55 よりも前です。したがって、アプリケーション整合性スナップショットは MySQL のデータを正しくバックアップしました。手順 4

      image