必要條件 (離線)
在適用於 PostgreSQL 的 Azure 資料庫中使用移轉服務開始進行移轉之前,您必須滿足下列適用於離線移轉案例的必要條件。
驗證來源版本
來源 PostgreSQL 版本應該是 >= 9.5
。 如果來源 PostgreSQL 版本小於 9.5
,請先將來源 PostgreSQL 版本升級至 9.5
或更新版本,再進行移轉。
目標設定
開始移轉流程之前,必須先在 Azure 中部署並正確設定適用於 PostgreSQL 的 Azure 資料庫彈性伺服器。
為適用於 PostgreSQL 的 Azure 資料庫選擇的 SKU 應與來源資料庫的規格對應,以確保相容性和適當的效能。
關於如何建立新的適用於 PostgreSQL 的 Azure 資料庫,如需詳細指示,請參閱下列連結:快速入門:建立伺服器。
網路設定
網路設定對於讓移轉服務能夠正常運作至關重要。 請確定來源 PostgreSQL 伺服器可以與目標適用於 PostgreSQL 的 Azure 資料庫伺服器通訊。 下列網路設定對於成功移轉而言非常重要。
如需網路設定的相關資訊,請參閱移轉服務的網路指南。
啟用延伸模組
若要確保能在適用於 PostgreSQL 的 Azure 資料庫中使用移轉服務成功移轉,您可能需要驗證來源 PostgreSQL 執行個體的延伸模組。 延伸模組會提供應用程式可能需要的其他功能與特性。 起始移轉流程之前,請務必驗證來源 PostgreSQL 執行個體上的延伸模組。
在目標適用於 PostgreSQL 的 Azure 資料庫彈性伺服器上,啟用來源 PostgreSQL 執行個體中識別出的支援延伸模組。
如需延伸模組的詳細資訊,請參閱適用於 PostgreSQL 的 Azure 資料庫中的延伸模組。
注意
當 shared_preload_libraries
參數有任何變更時,就需要重新啟動。
檢查伺服器參數
這些參數不會自動移轉至目標環境,必須手動設定。
在目標中停用高可用性 (可靠性) 和讀取複本
開始使用
如果您不熟悉 Microsoft Azure,請建立帳戶來評估這些供應項目。
從 Azure CLI 安裝頁面安裝您作業系統的最新 Azure CLI。
如果已安裝 Azure CLI,請使用 az version
命令來檢查版本。 版本應該是 2.50.0 或更新版本,才能使用移轉 CLI 命令。 如果不是,請更新 Azure CLI 版本。
執行 az login
命令:
az login
瀏覽器視窗隨即開啟,其中包含 Azure 登入頁面。 請提供您的 Azure 認證以執行成功的驗證。 如需使用 Azure CLI 登入的其他方式,請參閱這篇文章。
移轉 CLI 命令 (離線)
移轉服務隨附於便於使用的 CLI 命令,可執行移轉相關工作。 所有 CLI 命令都會以 az postgres flexible-server migration
開頭。 請務必先將延伸模組加入允許清單,再起始移轉。
如需說明以了解與命令相關聯的選項及建立正確語法的框架,您可以使用 --help
參數:
az postgres flexible-server migration --help
執行前一個命令會傳回下列輸出:
該輸出會列出支援的移轉命令及其動作。 讓我們詳細來看這些命令。
使用 Azure CLI 建立移轉
create
命令可協助建立從來源伺服器到目標伺服器的移轉:
az postgres flexible-server migration create --help
執行前一個命令會傳回下列輸出:
列出預期的引數並具有範例語法,可成功建立從來源伺服器到目標伺服器的移轉。 以下是用於建立新移轉的 CLI 命令:
az postgres flexible-server migration create [--subscription]
[--resource-group]
[--name]
[--migration-name]
[--migration-mode]
[--properties]
參數 |
描述 |
subscription |
彈性伺服器目標的訂閱識別碼。 |
resource-group |
彈性伺服器目標的資源群組。 |
name |
彈性伺服器目標的名稱。 |
migration-name |
每個至此彈性伺服器目標之移轉的唯一識別碼。 此欄位只接受英數字元,不接受任何特殊字元,但底線 (_) 和連字號 (-) 除外。 名稱必須以英數字元開頭和結束。 目標伺服器的名稱也必須是唯一,因為不會有兩個至相同彈性伺服器目標的移轉可以具有相同名稱。 |
migration-mode |
這是選擇性參數。 預設值:離線。 離線移轉涉及在某個時間點將來源資料庫複製到目標伺服器。 |
properties |
具有單一伺服器來源相關資訊之 JSON 檔案的絕對路徑。 |
例如:
az postgres flexible-server migration create --subscription 11111111-1111-1111-1111-111111111111 --resource-group my-learning-rg --name myflexibleserver --migration-name migration1 --properties "./migrationBody.json" --migration-mode offline
create
命令中使用的 migration-name
引數會用於其他 CLI 命令,例如 update
、delete
和 show.
。在所有這些命令中,它會唯一識別對應動作中的移轉嘗試。
最後,create
命令需要將 JSON 檔案作為其 properties
引數的一部分傳遞。
JSON 的結構如下:
{
"properties": {
"sourceDbServerResourceId": "/subscriptions/<subscriptionid>/resourceGroups/<sourceServerResourceGroup>/providers/Microsoft.DBforPostgreSQL/servers/<sourceServer>",
"secretParameters": {
"adminCredentials": {
"sourceServerPassword": "<password>",
"targetServerPassword": "<password>"
}
},
"sourceServerUserName": "<username>@<servername>",
"targetServerUserName": "<username>",
"dbsToMigrate": ["<db1>", "<db2>"],
"overwriteDbsInTarget": "true"
}
}
進入 JSON 檔案格式的 create
參數如下所示:
參數 |
類型 |
描述 |
sourceDbServerResourceId |
必要 |
此參數是單一伺服器來源的資源識別碼。 |
adminCredentials |
必要 |
此參數會同時列出單一伺服器來源和彈性伺服器目標的管理使用者密碼。 這些密碼有助於向來源伺服器和目標伺服器進行驗證, |
sourceServerUserName |
必要 |
預設值是在建立單一伺服器期間指定的管理使用者,而提供的密碼會用於驗證此使用者。 如果您未使用預設使用者,此參數是執行移轉之來源伺服器上的使用者或角色。 此使用者應該在移轉所涉及的資料庫物件上擁有必要的權限和所有權,而且應該是 azure_pg_admin 角色的成員。 |
targetServerUserName |
必要 |
預設值是在建立彈性伺服器期間建立的管理使用者,而提供的密碼會用於驗證此使用者。 如果您未使用預設使用者,此參數是用來執行移轉之目標伺服器上的使用者或角色。 此使用者應該是 azure_pg_admin、pg_read_all_settings、pg_read_all_stats、pg_stat_scan_tables 角色的成員,而且應該具有建立角色、建立資料庫屬性。 |
dbsToMigrate |
必要 |
指定您要移轉到彈性伺服器的資料庫清單。 僅會移轉使用者資料庫。 系統資料庫或範本資料庫 (例如 template0 和 template1) 不會移轉。 |
overwriteDbsInTarget |
必要 |
設定為 True 時,如果目標伺服器的現有資料庫剛好與您嘗試移轉的資料庫同名,則移轉服務會自動覆寫資料庫。 |
setupLogicalReplicationOnSourceDBIfNeeded |
選擇性 |
您可以將此屬性設定為 true ,自動在來源伺服器上啟用邏輯複寫。 伺服器設定中的這項變更需要重新啟動伺服器,停機時間為兩到三分鐘。 |
sourceDBServerFullyQualifiedDomainName |
選擇性 |
當使用自訂 DNS 伺服器進行虛擬網路的名稱解析時,請使用該參數。 請根據此屬性的自訂 DNS 伺服器,提供單一伺服器來源的 FQDN。 |
targetDBServerFullyQualifiedDomainName |
選擇性 |
當使用自訂 DNS 伺服器在虛擬網路內進行名稱解析時,請使用該參數。 請根據自訂 DNS 伺服器,提供彈性伺服器目標的 FQDN。 僅在使用自訂 DNS 伺服器進行名稱解析而不是 Azure 提供之 DNS 的罕見情況下,才包含 sourceDBServerFullyQualifiedDomainName 和 targetDBServerFullyQualifiedDomainName 作為 JSON 的一部分。 否則,請勿包含這些參數作為 JSON 檔案。 |
請注意命令回應的這些重點:
- 觸發
create
命令時,移轉就會進入 InProgress
狀態和 PerformingPreRequisiteSteps
子狀態。 移轉工作流程需要幾分鐘的時間,才能部署移轉基礎結構,並在來源和目標之間設定連線。
- 當
PerformingPreRequisiteSteps
子狀態完成之後,移轉就會進入 Migrating Data,
的子狀態,以進行資料庫複製。
- 每個要移轉的資料庫都有自己的區段,其中包含所有移轉詳細資料,例如資料表計數、累加式插入數、刪除數和擱置的位元組數。
Migrating Data
子狀態完成所需的時間取決於要移轉的資料庫大小。
- 一旦
Migrating Data
子狀態成功完成,移轉就會進入 Succeeded
狀態。 如果 Migrating Data
子狀態發生問題,移轉就會進入 Failed
狀態。
列出移轉
list
命令會列出對彈性伺服器目標所做的所有移轉嘗試:
az postgres flexible-server migration list [--subscription]
[--resource-group]
[--name]
[--filter]
filter
參數有兩個選項:
Active
:列出對目標伺服器的目前作用中 (進行中) 移轉嘗試。 不會包含已失敗、已取消或成功的移轉。
All
:列出對目標伺服器的所有移轉嘗試。 這包含作用中和完成的移轉,而不論狀態為何。
如需此命令的詳細資訊,請使用 --help
參數:
az postgres flexible-server migration list --help
監視移轉
--show
命令可協助您監視進行中的移轉,並提供移轉的目前狀態和子狀態。
az postgres flexible-server migration show [--subscription]
[--resource-group]
[--name]
[--migration-name]
migration_name
參數是在 create
命令期間指派給移轉的名稱。 以下是 CLI 命令的範例回應快照集,其中顯示詳細資料:
如需此命令的詳細資訊,請使用 --help
參數:
az postgres flexible-server migration show --help
下表描述移轉狀態和子狀態。
移轉狀態 |
描述 |
InProgress |
已設定移轉基礎結構,或實際的資料移轉進行中。 |
Canceled |
已取消或已刪除移轉。 |
Failed |
移轉失敗。 |
Succeeded |
移轉成功且已完成。 |
ValidationFailed |
移轉在移轉前驗證期間失敗。 |
移轉子狀態 |
描述 |
PerformingPreRequisiteSteps |
基礎結構已設定並準備進行資料移轉。 |
MigratingData |
資料移轉正在進行中。 |
CompletingMigration |
正在完成移轉流程。 |
Completed |
移轉已完成,而不論是否處於成功狀態。 |
CancelingRequestedDBMigrations |
正在取消移轉。 |
ValidationInProgress |
驗證正在進行中。 |
必要條件 (線上)
在使用適用於 PostgreSQL 的 Azure 資料庫中的移轉服務開始進行移轉之前,請先滿足下列適用於離線移轉案例的必要條件。
驗證來源版本
來源 PostgreSQL 版本應該是 >= 9.5
。 如果來源 PostgreSQL 版本小於 9.5
,請先將來源 PostgreSQL 版本升級至 9.5
或更新版本,再進行移轉。
設定線上移轉參數
針對線上移轉,應在來源 PostgreSQL 伺服器的 [複寫設定] 下將複製支援設為 [邏輯]。 此外,伺服器參數 max_wal_senders
和 max_replication_slots
值應該大於需要移轉的資料庫數目。 您可以在 Azure 入口網站中的 [設定] -> [伺服器參數] 下設定參數,或使用下列命令在命令列中進行設定:
- ALTER SYSTEM SET wal_level = 邏輯;
- ALTER SYSTEM SET max_wal_senders =
number of databases to migrate
+ 1;
- ALTER SYSTEM SET max_replication_slots =
number of databases to migrate
+ 1;
請確定沒有 長時間執行的交易。 長時間執行的交易不允許建立複寫位置。 如果認可或回復所有長時間執行的交易,複寫位置的建立將會成功。 完成所有線上移轉必要條件之後,您必須重新啟動來源 PostgreSQL 伺服器。
注意
針對使用適用於 PostgreSQL 的 Azure 資料庫單一伺服器進行線上移轉,Azure 複寫支援會在 Azure 入口網站中單一伺服器頁面的 [復寫設定] 底下的 [邏輯]。
若要防止連線移轉用盡可儲存記錄的儲存體,請確定您有足夠的資料表空間使用已佈建的受控磁碟。 若要達成此目的,請在移轉期間停用彈性伺服器上的伺服器參數 azure.enable_temp_tablespaces_on_local_ssd
,並在移轉之後將其還原為原始狀態。
設定目標
移轉前必須先在 Azure 中設定適用於 PostgreSQL 的 Azure 資料庫。
為適用於 PostgreSQL 的 Azure 資料庫選擇的 SKU 應與來源資料庫的規格對應,以確保相容性和適當的效能。
關於如何建立新的適用於 PostgreSQL 的 Azure 資料庫,如需詳細指示,請參閱下列連結:快速入門:建立伺服器。
伺服器參數 max_replication_slots
應該大於需要移轉的資料庫數目。 可以在 Azure 入口網站中的 [設定] -> [伺服器參數] 下設定參數,或使用下列命令在命令列中進行設定:
ALTER SYSTEM SET max_replication_slots = number of databases to migrate
+ 1;
設定網路
網路設定對於讓移轉服務能夠正常運作至關重要。 請確定來源 PostgreSQL 伺服器可以與目標適用於 PostgreSQL 的 Azure 資料庫伺服器通訊。 下列網路設定對於成功移轉而言非常重要。
如需網路設定的相關資訊,請參閱移轉服務的網路指南。
啟用延伸模組
若要確保能在適用於 PostgreSQL 的 Azure 資料庫中使用移轉服務成功移轉,您可能需要驗證來源 PostgreSQL 執行個體的延伸模組。 延伸模組會提供應用程式可能需要的其他功能與特性。 起始移轉流程之前,請務必驗證來源 PostgreSQL 執行個體上的延伸模組。
在目標適用於 PostgreSQL 的 Azure 資料庫彈性伺服器上,啟用來源 PostgreSQL 執行個體中識別出的支援延伸模組。
如需延伸模組的詳細資訊,請參閱適用於 PostgreSQL 的 Azure 資料庫中的延伸模組。
注意
當 shared_preload_libraries
參數有任何變更時,就需要重新啟動。
伺服器參數
這些參數不會自動移轉至目標環境,必須手動設定。
在目標中停用高可用性 (可靠性) 和讀取複本
注意
某些限制適用於連線移轉,而這些限制記載在這裡。 請確定您的資料庫符合執行連線移轉的規範。
開始使用
如果您不熟悉 Microsoft Azure,請建立帳戶來評估這些供應項目。
從 Azure CLI 安裝頁面安裝您作業系統的最新 Azure CLI。
如果已安裝 Azure CLI,請使用 az version
命令來檢查版本。 版本應該是 2.50.0 或更新版本,才能使用移轉 CLI 命令。 如果不是,請更新 Azure CLI 版本。
執行 az login
命令:
az login
瀏覽器視窗隨即開啟,其中包含 Azure 登入頁面。 請提供您的 Azure 認證以執行成功的驗證。 如需使用 Azure CLI 登入的其他方式,請參閱這篇文章。
移轉 CLI 命令 (線上)
移轉服務隨附於便於使用的 CLI 命令,可執行移轉相關工作。 所有 CLI 命令都會以 az postgres flexible-server migration
開頭。 請務必先將延伸模組加入允許清單,再起始移轉。
如需說明以了解與命令相關聯的選項及建立正確語法的框架,您可以使用 --help
參數:
az postgres flexible-server migration --help
執行前一個命令會傳回下列輸出:
該輸出會列出支援的移轉命令及其動作。 讓我們詳細來看這些命令。
使用 Azure CLI 建立移轉
create
命令可協助建立從來源伺服器到目標伺服器的移轉:
az postgres flexible-server migration create --help
執行前一個命令會傳回下列輸出:
列出預期的引數並具有範例語法,可成功建立從來源伺服器到目標伺服器的移轉。 以下是用於建立新移轉的 CLI 命令:
az postgres flexible-server migration create [--subscription]
[--resource-group]
[--name]
[--migration-name]
[--migration-mode]
[--properties]
參數 |
描述 |
subscription |
彈性伺服器目標的訂閱識別碼。 |
resource-group |
彈性伺服器目標的資源群組。 |
name |
彈性伺服器目標的名稱。 |
migration-name |
每個至此彈性伺服器目標之移轉的唯一識別碼。 此欄位只接受英數字元,不接受任何特殊字元,但底線 (_) 和連字號 (-) 除外。 名稱必須以英數字元開頭和結束。 目標伺服器的名稱也必須是唯一,因為不會有兩個至相同彈性伺服器目標的移轉可以具有相同名稱。 |
migration-mode |
這是選擇性參數。 預設值為 Offline 。 針對線上移轉,您必須傳遞 Online 。 |
properties |
具有單一伺服器來源相關資訊之 JSON 檔案的絕對路徑。 |
例如:
az postgres flexible-server migration create --subscription 11111111-1111-1111-1111-111111111111 --resource-group my-learning-rg --name myflexibleserver --migration-name migration1 --properties "./migrationBody.json" --migration-mode online
create
命令中使用的 migration-name
引數會用於其他 CLI 命令,例如 update
、delete
和 show.
。在所有這些命令中,它會唯一識別對應動作中的移轉嘗試。
最後,create
命令需要將 JSON 檔案作為其 properties
引數的一部分傳遞。
JSON 的結構如下:
{
"properties": {
"sourceDbServerResourceId": "/subscriptions/<subscriptionid>/resourceGroups/<sourceServerResourceGroup>/providers/Microsoft.DBforPostgreSQL/servers/<sourceServer>",
"secretParameters": {
"adminCredentials": {
"sourceServerPassword": "<password>",
"targetServerPassword": "<password>"
}
},
"sourceServerUserName": "<username>@<servername>",
"targetServerUserName": "<username>",
"dbsToMigrate": ["<db1>", "<db2>"],
"overwriteDbsInTarget": "true"
}
}
進入 JSON 檔案格式的 create
參數如下所示:
參數 |
類型 |
描述 |
sourceDbServerResourceId |
必要 |
此參數是單一伺服器來源的資源識別碼。 |
adminCredentials |
必要 |
此參數會同時列出單一伺服器來源和彈性伺服器目標的管理使用者密碼。 這些密碼有助於向來源伺服器和目標伺服器進行驗證, |
sourceServerUserName |
必要 |
預設值是在建立單一伺服器期間指定的管理使用者,而提供的密碼會用於驗證此使用者。 如果您未使用預設使用者,此參數是執行移轉之來源伺服器上的使用者或角色。 此使用者應該在移轉所涉及的資料庫物件上擁有必要的權限和所有權,而且應該是 azure_pg_admin 角色的成員。 |
targetServerUserName |
必要 |
預設值是在建立彈性伺服器期間建立的管理使用者,而提供的密碼會用於驗證此使用者。 如果您未使用預設使用者,此參數是用來執行移轉之目標伺服器上的使用者或角色。 此使用者應該是 azure_pg_admin、pg_read_all_settings、pg_read_all_stats、pg_stat_scan_tables 角色的成員,而且應該具有建立角色、建立資料庫屬性。 |
dbsToMigrate |
必要 |
指定您要移轉到彈性伺服器的資料庫清單。 僅會移轉使用者資料庫。 系統資料庫或範本資料庫 (例如 template0 和 template1) 不會移轉。 |
overwriteDbsInTarget |
必要 |
設定為 True 時,如果目標伺服器的現有資料庫剛好與您嘗試移轉的資料庫同名,則移轉服務會自動覆寫資料庫。 |
setupLogicalReplicationOnSourceDBIfNeeded |
選擇性 |
您可以將此屬性設定為 true ,自動在來源伺服器上啟用邏輯複寫。 伺服器設定中的這項變更需要重新啟動伺服器,停機時間為兩到三分鐘。 |
sourceDBServerFullyQualifiedDomainName |
選擇性 |
當使用自訂 DNS 伺服器進行虛擬網路的名稱解析時,請使用該參數。 請根據此屬性的自訂 DNS 伺服器,提供單一伺服器來源的 FQDN。 |
targetDBServerFullyQualifiedDomainName |
選擇性 |
當使用自訂 DNS 伺服器在虛擬網路內進行名稱解析時,請使用該參數。 請根據自訂 DNS 伺服器,提供彈性伺服器目標的 FQDN。 僅在使用自訂 DNS 伺服器進行名稱解析而不是 Azure 提供之 DNS 的罕見情況下,才包含 sourceDBServerFullyQualifiedDomainName 和 targetDBServerFullyQualifiedDomainName 作為 JSON 的一部分。 否則,請勿包含這些參數作為 JSON 檔案。 |
請注意命令回應的這些重點:
- 觸發
create
命令時,移轉就會進入 InProgress
狀態和 PerformingPreRequisiteSteps
子狀態。 移轉工作流程需要幾分鐘的時間,才能部署移轉基礎結構,並在來源和目標之間設定連線。
- 當
PerformingPreRequisiteSteps
子狀態完成之後,移轉就會進入 Migrating Data,
的子狀態,以進行資料庫複製。
- 每個要移轉的資料庫都有自己的區段,其中包含所有移轉詳細資料,例如資料表計數、累加式插入數、刪除數和擱置的位元組數。
Migrating Data
子狀態完成所需的時間取決於要移轉的資料庫大小。
- 一旦
Migrating Data
子狀態成功完成,移轉就會進入 Succeeded
狀態。 如果 Migrating Data
子狀態發生問題,移轉就會進入 Failed
狀態。
設定複寫
針對線上移轉模式,必須在來源單一伺服器中開啟邏輯複寫。 如果未開啟,當 setupLogicalReplicationOnSourceDBIfNeeded
參數以隨附於 JSON 檔案中的 true
值傳遞時,移轉服務會自動在來源單一伺服器上開啟邏輯複寫。 您也可以使用下列命令,在開始移轉之後,在來源手動設定複寫。 開啟邏輯複寫的任一種方法都會重新啟動來源單一伺服器。
例如:
az postgres flexible-server migration update --subscription 11111111-1111-1111-1111-111111111111 --resource-group my-learning-rg --name myflexibleserver --migration-name CLIMigrationExample --setup-replication
當彈性伺服器處於 WaitingForLogicalReplicationSetupRequestOnSourceDB
狀態等候時,需要此命令才能進行移轉。
若要執行線上移轉,請使用:
az postgres flexible-server migration create --subscription 11111111-1111-1111-1111-111111111111 --resource-group my-learning-rg --name myflexibleserver --migration-name migration1 --properties "./migrationBody.json" --migration-mode online
列出移轉
list
命令會列出對彈性伺服器目標所做的所有移轉嘗試:
az postgres flexible-server migration list [--subscription]
[--resource-group]
[--name]
[--filter]
filter
參數有兩個選項:
Active
:列出對目標伺服器的目前作用中 (進行中) 移轉嘗試。 不會包含已失敗、已取消或成功的移轉。
All
:列出對目標伺服器的所有移轉嘗試。 這包含作用中和完成的移轉,而不論狀態為何。
如需此命令的詳細資訊,請使用 --help
參數:
az postgres flexible-server migration list --help
監視移轉
show
命令可協助您監視進行中的移轉,並提供移轉的目前狀態和子狀態。
az postgres flexible-server migration show [--subscription]
[--resource-group]
[--name]
[--migration-name]
migration_name
參數是在 create
命令期間指派給移轉的名稱。 以下是 CLI 命令的範例回應快照集,其中顯示詳細資料:
如需此命令的詳細資訊,請使用 --help
參數:
az postgres flexible-server migration show --help
下表描述移轉狀態和子狀態。
移轉狀態 |
描述 |
InProgress |
已設定移轉基礎結構,或實際的資料移轉進行中。 |
Canceled |
已取消或已刪除移轉。 |
Failed |
移轉失敗。 |
Succeeded |
移轉成功且已完成。 |
ValidationFailed |
移轉在移轉前驗證期間失敗。 |
移轉子狀態 |
描述 |
PerformingPreRequisiteSteps |
基礎結構已設定並準備進行資料移轉。 |
MigratingData |
資料移轉正在進行中。 |
WaitingForCutoverTrigger |
資料移轉工作已完成,並等候使用者觸發完全移轉。 |
CompletingMigration |
正在完成移轉流程。 |
Completed |
移轉已完成,而不論是否處於成功狀態。 |
CancelingRequestedDBMigrations |
正在取消移轉。 |
ValidationInProgress |
驗證正在進行中。 |
完全移轉
在線上移轉中,在基礎資料移轉完成之後,移轉工作會進入 WaitingForCutoverTrigger
子狀態。 在此狀態下,使用者可以使用下列命令透過 CLI 觸發完全移轉。 您也可以從入口網站選取移轉方格中的移轉名稱來觸發完全移轉。
例如:
az postgres flexible-server migration update --subscription 11111111-1111-1111-1111-111111111111 --resource-group my-learning-rg --name myflexibleserver --migration-name CLIMigrationExample --cutover
在起始完全移轉之前,請務必確保:
- 停止寫入至來源:
latency
參數為 0 或接近 0
latency
參數指出目標上次與來源同步的時間。 例如,以下是兩個資料庫的 201 和 202,如下圖所示。 這表示來源過去 ~200 秒內發生的變更尚未同步至目標。 此時,便可以停止寫入至來源並起始完全移轉。 如果來源有大量流量,建議先停止寫入,以便讓 Latency
接近 0,然後起始完全移轉。 完全移轉作業會將來源的所有暫止的變更套用至目標,並完成移轉。 如果您觸發「完全移轉」,即使是非零 Latency
,複寫仍會停止直到該時間點為止。 所有在完全移轉點之前的來源資料,都會套用至目標。 假設延遲在完全移轉點為 15 分鐘,因此最後 15 分鐘內的所有變更資料都會套用至目標上。 花費的時間將取決於過去 15 分鐘內發生的變更待辦項目。 因此,建議您在觸發完全移轉之前,將延遲移至零或接近零。
您可以使用 migration show 命令取得 latency
資訊。
以下是起始完全移轉之前移轉的快照集:
起始完全移轉之後,基礎複製期間發生的所有交易都會循序複製到目標,並完成移轉。
如果完全移轉未成功,則移轉會移至 Failed
狀態。
如需此命令的詳細資訊,請使用 --help
參數:
az postgres flexible-server migration update --help