日本熟妇hd丰满老熟妇,中文字幕一区二区三区在线不卡 ,亚洲成片在线观看,免费女同在线一区二区

創(chuàng)建應用一致性快照

如果您對數(shù)據(jù)一致性有嚴格要求,可以在創(chuàng)建一致性快照組時開啟應用一致性快照功能,應用一致性快照會確保應用程序內(nèi)部的數(shù)據(jù)一致并將其包含在快照中。本文介紹如何通過ECS控制臺或Go SDK創(chuàng)建Linux和Windows的應用一致性快照。

背景信息

如果您在創(chuàng)建一致性快照組時開啟應用一致性快照功能,系統(tǒng)將根據(jù)實際情況為您創(chuàng)建應用一致性快照或文件系統(tǒng)一致性快照。

快照類型

說明

應用場景

應用一致性快照

  • 在創(chuàng)建應用一致性快照時,會暫時暫停應用程序的寫操作,確保寫操作結果同步到云盤中。不僅確保存儲在云盤上的數(shù)據(jù)是一致的,而且應用程序內(nèi)部(如數(shù)據(jù)庫)的數(shù)據(jù)也是一致的。

  • 應用一致性快照通過標簽APPConsistent:True標識。

  • 根據(jù)操作系統(tǒng)類型,實現(xiàn)方式如下:

    • Linux:通過執(zhí)行自定義Shell腳本(需要您根據(jù)應用自行編寫腳本)實現(xiàn)。應用一致性的效果,由您自己編寫的腳本負責保證。

    • Windows:通過Windows自帶的相關功能實現(xiàn),例如卷影復制服務VSS(Volume Shadow Copy Service)。

對數(shù)據(jù)一致性有嚴格要求的應用,特別是數(shù)據(jù)庫和關鍵業(yè)務系統(tǒng),確保在災難恢復時能夠立即恢復到一個邏輯上正確的狀態(tài)。

文件系統(tǒng)一致性快照

  • 在創(chuàng)建應用一致性快照時,如果未設置腳本或腳本設置錯誤,最終創(chuàng)建的快照為文件系統(tǒng)一致性快照。文件系統(tǒng)一致性快照著重于確保文件系統(tǒng)數(shù)據(jù)的一致性,確保在快照創(chuàng)建時刻文件系統(tǒng)處于一致的狀態(tài)。

  • 文件系統(tǒng)一致性快照通過標簽FsConsistent:True標識。

  • 根據(jù)操作系統(tǒng)類型,實現(xiàn)方式如下:

    • Linux:如果無對應的應用腳本,默認創(chuàng)建文件系統(tǒng)一致性快照。

    • Windows:如果沒有包含Writer,默認創(chuàng)建文件系統(tǒng)一致性快照。

適用于需要確保文件系統(tǒng)整體一致性的場景,比如文件服務器、文檔管理系統(tǒng)等,特別適合那些關注文件層次結構完整性的備份需求。

使用限制

  • 目前僅ESSD類型的云盤支持創(chuàng)建應用一致性快照,且云盤未開啟多重掛載功能

  • 不支持跨實例創(chuàng)建應用一致性快照,僅支持為單臺ECS實例的云盤創(chuàng)建應用一致性快照。

前提條件

  • 確保ECS實例的操作系統(tǒng)在以下范圍內(nèi):

    • Windows:Windows Server2012 R2及以上操作系統(tǒng)。

    • Linux:CentOS 7.6及以上版本、Ubuntu 18.04及以上版本或Alibaba Cloud Linux 2。

  • ECS實例已安裝云助手Agent。具體操作,請參見安裝云助手Agent

  • 如果您需要通過Go SDK創(chuàng)建應用一致性快照,需確保:

    • 已經(jīng)安裝Go運行環(huán)境。具體操作,請參見下載和安裝Golang

    • 已經(jīng)下載并安裝阿里云Go SDK。具體操作,請參見開始使用

操作步驟

通過控制臺創(chuàng)建

步驟一:為ECS實例配置RAM角色

  1. 登錄RAM控制臺

  2. 創(chuàng)建應用一致性快照相關的RAM角色、為RAM角色授權并授予ECS實例。具體操作,請參見創(chuàng)建ECS實例RAM角色并授予給ECS。其中:

    • RAM角色:示例名稱為AppSnapshotRoleName

    • 可信實體類型:阿里云服務

    • 自定義權限策略:示例名稱為AppSnapshotPolicy,內(nèi)容如下:

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

      該策略具有查詢快照相關信息、創(chuàng)建快照、設置標簽和查詢云盤信息等權限。

步驟二:為實例創(chuàng)建應用一致性快照

Linux實例

在Linux實例中,您需要根據(jù)ECS實例上的應用程序自定義Shell腳本(prescript.sh和postscript.sh)實現(xiàn)應用一致性。本節(jié)介紹如何為Linux實例創(chuàng)建應用一致性快照。

  1. 根據(jù)ECS實例上的應用,準備對應的腳本,并提前上傳到ECS實例。

    腳本

    說明

    上傳路徑

    腳本類型

    腳本權限

    腳本內(nèi)容

    prescript.sh

    用于在執(zhí)行可能影響應用程序的操作之前,暫停應用程序的所有寫操作,確保當前的數(shù)據(jù)狀態(tài)不會因操作過程中新產(chǎn)生的數(shù)據(jù)而不一致。

    /tmp/prescript.sh

    Shell

    僅root用戶具有讀、寫和執(zhí)行權限

    需根據(jù)實際業(yè)務制定,例如為MySQL創(chuàng)建應用一致性快照最佳實踐(Linux)

    postscript.sh

    一旦完成了可能影響應用的操作(如備份完成),postscript.sh腳本會被用于恢復應用程序到正常工作狀態(tài),允許寫操作繼續(xù)進行。

    /tmp/postscript.sh

    如何將文件上傳至ECS實例,請參見使用Workbench上傳或下載文件

    說明

    如果腳本設置錯誤(例如權限、上傳路徑或腳本名稱設置錯誤等),最終創(chuàng)建的快照為文件系統(tǒng)一致性快照。

  2. 進入ECS實例列表頁面。

    1. 登錄ECS管理控制臺

    2. 在左側導航欄,選擇實例與鏡像 > 實例

    3. 在頂部菜單欄處,選擇目標ECS實例所在地域。image.png

  3. 找到目標實例,在操作列選擇更多 > 云盤與鏡像 > 創(chuàng)建快照一致性組

  4. 創(chuàng)建快照一致性組對話框中,設置快照一致性組參數(shù)。

    1. 選擇需要創(chuàng)建快照一致性組的云盤并設置其他快照參數(shù)。

    2. 設置應用一致性快照。

      • 如果選中啟用應用一致性快照啟用文件系統(tǒng)IO暫停與恢復,并正確設置腳本,則創(chuàng)建應用一致性快照。

      • 如果選中啟用應用一致性快照啟用文件系統(tǒng)IO暫停與恢復,但未設置腳本或未正確設置腳本,則創(chuàng)建文件系統(tǒng)一致性快照。

      說明

      如果實例未安裝云助手,選中啟用應用一致性快照后,ECS實例將自動安裝云助手插件。

  5. 單擊確定

    創(chuàng)建后會返回云助手命令ID和命令執(zhí)行ID,您可以根據(jù)命令執(zhí)行ID查看創(chuàng)建結果。命令執(zhí)行id

Windows實例

在Windows實例中,主要是通過Windows操作系統(tǒng)的卷影復制服務VSS實現(xiàn)應用一致性。本節(jié)介紹如何為Windows實例開啟應用一致性快照。

  1. 進入ECS實例列表頁面。

    1. 登錄ECS管理控制臺

    2. 在左側導航欄,選擇實例與鏡像 > 實例

    3. 在頂部菜單欄處,選擇目標ECS實例所在地域。image.png

  2. 找到目標實例,在操作列中選擇更多 > 云盤與鏡像 > 創(chuàng)建快照一致性組

  3. 創(chuàng)建快照一致性組對話框中,設置快照一致性組參數(shù)。

    1. 選擇需要創(chuàng)建快照一致性組的云盤并設置其他快照參數(shù)。

    2. 設置應用一致性快照。

      • 如果同時選中啟用應用一致性快照是否默認包含Writer,則創(chuàng)建應用一致性快照。

      • 如果只選中啟用應用一致性快照,則創(chuàng)建文件系統(tǒng)一致性快照。

      說明

      選中啟用應用一致性快照后,ECS實例將自動安裝云助手插件。

  4. 單擊確定

    創(chuàng)建后會返回云助手命令ID和命令執(zhí)行ID,您可以根據(jù)命令執(zhí)行ID查看創(chuàng)建結果。命令執(zhí)行id

步驟三:檢查快照創(chuàng)建結果

創(chuàng)建應用一致性快照后,您可以在云助手頁面查看是否創(chuàng)建成功,并在快照頁面查看創(chuàng)建的快照一致性組和快照信息。

  1. 云助手頁面,查看應用一致性快照是否成功創(chuàng)建。

    1. 登錄ECS管理控制臺

    2. 在左側導航欄,選擇運維與監(jiān)控 > 云助手

    3. 單擊命令執(zhí)行結果頁簽。

    4. 單擊目標命令執(zhí)行ID,查看執(zhí)行結果。

      image.png

      如上圖所示,ExitCode返回值為0,表示云助手上創(chuàng)建應用一致性快照執(zhí)行成功,此時回顯信息中會顯示快照一致性組ID。

      說明

      如果ExitCode返回值不為0,請根據(jù)ExitCode錯誤碼信息排查相關問題。更多信息,請參見錯誤碼信息

  2. 快照頁面查看創(chuàng)建的快照一致性組和快照信息。

    1. 在左側導航欄,選擇存儲與快照 > 快照

    2. 單擊快照一致性組頁簽,找到已創(chuàng)建的快照一致性組,單擊快照一致性組ID查看快照詳情。

    3. 快照信息區(qū)域,根據(jù)快照的標簽信息,查看創(chuàng)建的快照是應用一致性快照還是文件系統(tǒng)一致性快照。

      • 如果顯示APPConsistent:True標簽,表示創(chuàng)建的是應用一致性快照

        image.png

      • 如果顯示FsConsistent: True標簽,表示創(chuàng)建的是文件系統(tǒng)一致性快照

        image.png

通過Go SDK創(chuàng)建

步驟一:為ECS實例配置RAM角色

通過調(diào)用接口AttachInstanceRamRole為目標ECS實例設置RAM角色(示例為AppSnapshotRoleName)。

以下為Go SDK代碼示例:

package main
import (
    "fmt"
    "os"
    "github.com/aliyun/alibaba-cloud-sdk-go/services/ecs"
)

func main() {
		// 請確保代碼運行環(huán)境設置了環(huán)境變量ALIBABA_CLOUD_ACCESS_KEY_ID和ALIBABA_CLOUD_ACCESS_KEY_SECRET。
    // 工程代碼泄露可能會導致AccessKey泄露,并威脅賬號下所有資源的安全性。以下代碼示例使用環(huán)境變量獲取AccessKey的方式進行調(diào)用,建議使用更安全的STS方式。
    client, err := ecs.NewClientWithAccessKey(
        "cn-hangzhou",       
        os.Getenv("ALIBABA_CLOUD_ACCESS_KEY_ID"),     
        os.Getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET")) 

    //調(diào)用AttachInstanceRamRole為實例綁定RAM角色
    request := ecs.CreateAttachInstanceRamRoleRequest()
    request.Scheme = "https"

    request.RamRoleName = "AppSnapshotRoleName"          //設置RAM角色名稱
    request.InstanceIds = "[\"i-bp17r83nppqf141v****\"]" //設置實例ID

    response, err := client.AttachInstanceRamRole(request)
    if err != nil {
        fmt.Print(err.Error())
    }

    fmt.Println(response.String())
}

調(diào)用結果示例如下所示,返回參數(shù)說明,請參見AttachInstanceRamRole調(diào)用結果

步驟二:調(diào)用RunCommand為實例創(chuàng)建應用一致性快照

Linux實例

通過調(diào)用云助手接口RunCommand為一臺或多臺Linux實例創(chuàng)建應用一致性快照。

以下為Go SDK代碼示例:

package main

import (
    "fmt"
    "os"
    "github.com/aliyun/alibaba-cloud-sdk-go/services/ecs"
)

func main() {
		// 請確保代碼運行環(huán)境設置了環(huán)境變量ALIBABA_CLOUD_ACCESS_KEY_ID和ALIBABA_CLOUD_ACCESS_KEY_SECRET。
    // 工程代碼泄露可能會導致AccessKey泄露,并威脅賬號下所有資源的安全性。以下代碼示例使用環(huán)境變量獲取AccessKey的方式進行調(diào)用,建議使用更安全的STS方式。
    client, err := ecs.NewClientWithAccessKey(
        "cn-hangzhou",    //設置實例所在地域
        os.Getenv("ALIBABA_CLOUD_ACCESS_KEY_ID"),     
        os.Getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET"))

    //調(diào)用RunCommand為實例創(chuàng)建應用一致性快照。
    request := ecs.CreateRunCommandRequest()
    request.Scheme = "https"

    request.Type = "RunShellScript"
    //創(chuàng)建應用一致性快照的命令,具體信息,請參見CommandContent內(nèi)容說明。
    request.CommandContent = "acs-plugin-manager --exec --plugin app-snapshot-plugin --params=-RamRoleName=\"AppSnapshotRoleName\",-EnableFsFreeze=true,-TimeoutInSeconds=30,-PreScriptPath=\"/tmp/prescript.sh\",-PostScriptPath=\"/tmp/postscript.sh\",-ExcludeDiskId=\"\",-Name=\"LinuxApp1\""
    request.InstanceId = &[]string{"i-bp17r83nppqf141v****"} //設置實例ID

    response, err := client.RunCommand(request)
    if err != nil {
        fmt.Print(err.Error())
    }
    fmt.Printf("response is %#v\n", response)
}

CommandContent參數(shù)中內(nèi)容說明:

  • acs-plugin-manager --exec --plugin app-snapshot-plugin:表示執(zhí)行云助手插件app-snapshot-plugin

  • --params=表示插件的配置參數(shù),具體參數(shù)說明,如下表所示。

    參數(shù)

    類型

    是否必傳

    描述

    ExcludeDiskId

    String

    ECS實例中不需要創(chuàng)建快照的云盤。

    Name

    String

    快照一致性組名稱。

    Description

    String

    快照一致性組描述信息。

    RamRoleName

    String

    ECS實例綁定的RAM角色,取值請參見步驟一:為ECS實例配置RAM角色

    PreScriptPath

    String

    prescript.sh腳本路徑(/tmp/prescript.sh)。prescript.sh腳本需要符合以下條件:

    • 在權限上,僅root作為owner用戶具有讀、寫、執(zhí)行權限,即700權限。

    • 在內(nèi)容上,腳本內(nèi)容需要根據(jù)應用自行定制。

    重要

    Linux實例創(chuàng)建應用一致性快照時必須設置此參數(shù)。如果腳本設置錯誤(例如權限、保存路徑或文件名設置錯誤等),最終創(chuàng)建的快照將是文件系統(tǒng)一致性快照。

    PostScriptPath

    String

    postscript.sh腳本路徑(/tmp/postscript.sh)。postscript.sh腳本需要符合以下條件:

    • 在權限上,僅root作為owner用戶具有讀、寫、執(zhí)行權限,即700權限。

    • 在內(nèi)容上,腳本內(nèi)容需要根據(jù)應用自行定制。

    重要

    Linux實例創(chuàng)建應用一致性快照時必須設置此參數(shù)。如果腳本設置錯誤(例如權限、保存路徑或文件名設置錯誤等),最終創(chuàng)建的快照將是文件系統(tǒng)一致性快照。

    EnableFsFreeze

    Boolean

    是否在創(chuàng)建存儲快照前使用Linux的FsFreeze機制確保文件系統(tǒng)處于只讀一致性。

    默認為True。

    TimeoutInSeconds

    Integer

    IO超時時間。

    默認為30秒。

    ScriptTimeoutInSeconds

    Integer

    腳本執(zhí)行超時時間。

    默認值為1800秒。

調(diào)用結果示例如下所示,返回參數(shù)說明,請參見RunCommandlinux

Windows實例

通過調(diào)用云助手API接口RunCommand為一臺或多臺Windows實例創(chuàng)建應用一致性快照。

以下為Go SDK示例:

package main

import (
    "fmt"
  	"os"
    "github.com/aliyun/alibaba-cloud-sdk-go/services/ecs"
)

func main() {
    // 請確保代碼運行環(huán)境設置了環(huán)境變量ALIBABA_CLOUD_ACCESS_KEY_ID和ALIBABA_CLOUD_ACCESS_KEY_SECRET。
    // 工程代碼泄露可能會導致AccessKey泄露,并威脅賬號下所有資源的安全性。以下代碼示例使用環(huán)境變量獲取AccessKey的方式進行調(diào)用,建議使用更安全的STS方式。
    client, err := ecs.NewClientWithAccessKey(
        "cn-hangzhou",       //設置實例所在地域
        os.Getenv("ALIBABA_CLOUD_ACCESS_KEY_ID"),     
        os.Getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET"))

    request := ecs.CreateRunCommandRequest()
    request.Scheme = "https"

    request.Type = "RunBatScript"
    //創(chuàng)建應用一致性快照的命令,具體信息,請參見CommandContent內(nèi)容說明。
    request.CommandContent = "acs-plugin-manager --exec --plugin app-snapshot-plugin-win --params=-RamRoleName=\"AppSnapshotRoleName\",-EnableWriters=true,-Description=\"AppSnapshot\",-ExcludeDiskId=\"\",-Name=\"APPSnapshot-1\""
    request.InstanceId = &[]string{"i-bp11vqwgh574****"} //設置實例ID
    request.Timeout = "1800"

    response, err := client.RunCommand(request)
    if err != nil {
        fmt.Print(err.Error())
    }
    fmt.Printf("response is %#v\n", response)
}

CommandContent參數(shù)中內(nèi)容說明:

  • acs-plugin-manager --exec --plugin app-snapshot-plugin-win:表示執(zhí)行云助手插件app-snapshot-plugin-win

  • --params=表示插件的配置參數(shù),具體參數(shù)說明,如下表所示。

    參數(shù)

    類型

    是否必傳

    描述

    ExcludeDiskId

    String

    ECS實例中不需要創(chuàng)建快照的云盤。

    Name

    String

    快照一致性組名稱。

    Description

    String

    快照一致性組描述信息。

    RamRoleName

    String

    ECS實例綁定的RAM角色,取值請參見步驟一:為ECS實例配置RAM角色

    EnableWriters

    Boolen

    是否設置應用一致性快照。取值如下:

    • true:創(chuàng)建應用一致性快照

    • false:創(chuàng)建文件系統(tǒng)一致性快照

    默認值為true。

調(diào)用結果示例如下所示,返回參數(shù)說明,請參見RunCommandwin查詢結果

步驟三:調(diào)用DescribeInvocationResults查看快照創(chuàng)建結果

通過調(diào)用接口DescribeInvocationResults查看是否執(zhí)行成功。

以下為Go SDK示例:

package main

import (
    "fmt"
    "os"
    "github.com/aliyun/alibaba-cloud-sdk-go/services/ecs"
)

func main() {
    // 請確保代碼運行環(huán)境設置了環(huán)境變量ALIBABA_CLOUD_ACCESS_KEY_ID和ALIBABA_CLOUD_ACCESS_KEY_SECRET。
    // 工程代碼泄露可能會導致AccessKey泄露,并威脅賬號下所有資源的安全性。以下代碼示例使用環(huán)境變量獲取AccessKey的方式進行調(diào)用,建議使用更安全的STS方式。
    client, err := ecs.NewClientWithAccessKey(
        "cn-hangzhou",    //設置實例所在地域
        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****"        //命令執(zhí)行ID,可在上一步驟的執(zhí)行結果中查看。
    request.InstanceId = "i-bp17r83nppqf141v****" //實例ID
    request.CommandId = "c-hz01qsegaxd****"       //命令ID,可在上一步驟的執(zhí)行結果中查看。

    response, err := client.DescribeInvocationResults(request)
    if err != nil {
        fmt.Print(err.Error())
    }
    fmt.Printf("response is %#v\n", response)
}

調(diào)用結果示例如下,返回參數(shù)說明,請參見DescribeInvocationResults查看結果

  • ExitCode返回錯誤碼信息,取值為0表示執(zhí)行成功;如果取值不為0,請根據(jù)錯誤碼信息排查問題。更多信息,請參見錯誤碼信息

  • Output為命令執(zhí)行后的輸出信息,內(nèi)容通過Base64編碼。

    如果執(zhí)行成功,Output內(nèi)容經(jīng)過Base64解碼后會包含創(chuàng)建的快照一致性組ID,如下所示。

    [snapshotgroup="ssg-bp170v57ca9j01jb****"][message="Finish whole Processes of Snapshot successfully"]

錯誤碼信息

錯誤碼(ExitCode)

說明

0

表示創(chuàng)建成功。

1

條件檢查錯誤。可能錯誤如下:

  • 云盤類型不支持。

  • 快照名稱不符合要求。

  • 網(wǎng)絡不通。

  • ECS實例沒有RAM角色授權。

  • 操作系統(tǒng)版本不支持。

2

--params后設置的參數(shù)類型或個數(shù)錯誤。

3

可能錯誤如下:

  • ECS實例沒有掛載ESSD云盤。

  • ECS實例的RAM角色未設置快照接口的訪問權限。

4

創(chuàng)建快照一致性組失敗。

5

快照一致性組狀態(tài)錯誤。

6

創(chuàng)建快照一致性組超時。

7

快照一致性組內(nèi)單個云盤快照的狀態(tài)不符合預期。

8

為快照設置標簽失敗。

9

執(zhí)行postscript.sh腳本失敗。

10

執(zhí)行postscript.sh腳本失敗。

11

暫停IO失敗。

12

恢復IO失敗。

13

ECS實例沒有RAM角色授權。

14

快照個數(shù)超過限制。

15

快照狀態(tài)錯誤。

16

在沒有啟動快照及時可用功能的情況下,前一個快照正在創(chuàng)建中。

255

未知失敗。

相關文檔

您可以為MySQL數(shù)據(jù)庫或SQL Server數(shù)據(jù)庫創(chuàng)建應用一致性快照,請參見為MySQL創(chuàng)建應用一致性快照最佳實踐(Linux)為SQL Server創(chuàng)建應用一致性快照最佳實踐(Windows)