必要條件(離線)
在使用適用於 PostgreSQL 的 Azure 資料庫中的移轉服務開始進行移轉之前,請先滿足下列適用於離線移轉案例的必要條件。
驗證來源版本
來源 PostgreSQL 版本應該是 >= 9.5
。 如果來源 PostgreSQL 版本小於 9.5
,請先將來源 PostgreSQL 版本升級至 9.5
或更新版本,再進行移轉。
目標設定
移轉前必須先在 Azure 中設定適用於 PostgreSQL 的 Azure 資料庫。
為適用於 PostgreSQL 的 Azure 資料庫選擇的 SKU 應與來源資料庫的規格對應,以確保相容性和適當的效能。
關於如何建立新的適用於 PostgreSQL 的 Azure 資料庫,如需詳細指示,請參閱下列連結:快速入門:建立伺服器。
網路設定
必須正確設定網路,才能在移轉期間確保來源與目標能成功連線。 以下指南可協助您為不同案例建立網路連線:
移轉的網路需求:
ExpressRoute/IPsec VPN/VPN 通道:在將內部部署/AWS 來源連線至 Azure 時,可能需要設定 ExpressRoute、IPsec VPN 或 VPN 通道,以便能安全地傳輸資料。
VNET 對等互連:在兩個不同的 VNet 之間建立虛擬網路對等互連,以便能進行直接的網路連線,這是在 Azure VM 與適用於 PostgreSQL 的 Azure 資料庫之間進行移轉時的必要條件。
連線能力案例:
下表可協助設定來源與目標之間的網路。
來源 |
Target |
連線能力秘訣 |
公開 |
公開 |
如果來源已列入目標防火牆規則的允許清單,則不需要採取任何其他動作。 |
私人 |
公用 |
不支援此設定;請使用 pg_dump/pg_restore 來傳輸資料。 |
公開 |
私人 |
如果來源已列入目標防火牆規則的允許清單,則不需要採取任何其他動作。 |
私人 |
私人 |
在來源與目標之間建立 ExpressRoute、IPsec VPN、VPN 通道或虛擬網路對等互連。 |
私人 |
私人端點 |
不支援此設定;請連絡 Microsoft 支援服務。 |
其他網路考量:
- pg_hba.conf 設定:為了能在來源與目標 PostgreSQL 執行個體之間進行連線,請務必驗證並可能要修改 pg_hba.conf 檔案。 此檔案包含用戶端驗證,且必須設定為允許目標 PostgreSQL 連線到來源。 對 pg_hba.conf 檔案的變更通常需要重新啟動來源 PostgreSQL 執行個體才會生效。
注意
pg_hba.conf 檔案位於 PostgreSQL 安裝的資料目錄中。 如果來源資料庫是內部部署 PostgreSQL 伺服器或裝載在 Azure VM 上的 PostgreSQL 伺服器,則應該檢查並設定此檔案。 若為 AWS RDS 或類似受控服務上的 PostgreSQL 執行個體,則無法直接存取或不適用 pg_hba.conf 檔案。 相反地,要透過服務所提供的安全性和網路存取設定來控制存取。
如需網路設定的詳細資訊,請瀏覽適用於 PostgreSQL 的 Azure 資料庫 - 彈性伺服器中的移轉服務網路指引。
擴充
延伸模組是可新增至 PostgreSQL 以增強其功能的額外功能。 適用於 PostgreSQL 的 Azure 資料庫支援延伸模組,但必須以手動方式加以啟用。 若要啟用延伸模組,請遵循下列步驟:
在來源中使用 select 命令列出要使用的所有延伸模組 - select extname,extversion from pg_extension;
在適用於 PostgreSQL 的 Azure 資料庫上的 [伺服器參數] 頁面上,搜尋 azure.extensions 伺服器參數。 啟用在 PostgreSQL 內的來源中找到的延伸模組。
儲存參數變更,並視需要重新啟動適用於 PostgreSQL 的 Azure 資料庫以套用新的設定。
檢查清單中是否包含下列任何延伸模組:
- PG_CRON
- PG_HINT_PLAN
- PG_PARTMAN_BGW
- PG_PREWARM
- PG_STAT_STATEMENTS
- PG_AUDIT
- PGLOGICAL
- WAL2JSON
如果有,請在伺服器參數頁面中搜尋 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 "C:\Users\Administrator\Documents\migrationBody.JSON" --migration-mode offline
migration-name
命令中使用的create
自變數會用於其他 CLI 命令,例如update
、 delete
和 show.
它可唯一識別所有命令中對應動作中的移轉嘗試。
最後,create
命令需要將 JSON 檔案作為其 properties
引數的一部分傳遞。
JSON 的結構如下:
{
"properties": {
"sourceDbServerResourceId":"/subscriptions/<subscriptionid>/resourceGroups/<src_ rg_name>/providers/Microsoft.DBforPostgreSQL/servers/<source server name>",
"secretParameters": {
"adminCredentials":
{
"sourceServerPassword": "<password>",
"targetServerPassword": "<password>"
},
"sourceServerUserName": "<username>@<servername>",
"targetServerUserName": "<username>"
},
"dbsToMigrate":
[
"<db1>","<db2>"
],
"overwriteDbsInTarget":"true"
}
}
create
進入 JSON 檔案格式的參數如下所示:
參數 |
類型 |
描述 |
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 ,以自動啟用來源伺服器上的邏輯複寫。 伺服器設定中的這項變更需要伺服器重新啟動,且停機時間為 2 到 3 分鐘。 |
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
狀態。
設定複寫
如果選取 [ 在線 移轉預覽],則必須在來源單一伺服器中開啟邏輯複寫。 如果未開啟,當參數以隨附 JSON 檔案中的 值true
傳遞時SetupLogicalReplicationOnSourceDBIfNeeded
,移轉服務會自動在來源 Single 伺服器上開啟邏輯複寫。 使用下列命令啟動移轉之後,也可以在來源手動設定複寫。 開啟邏輯復寫的任一方法會重新啟動來源單一伺服器。
例如:
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 "C:\Users\Administrator\Documents\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 |
移轉成功且已完成。 |
移轉子狀態 |
描述 |
PerformingPreRequisiteSteps |
已設定基礎結構並準備進行資料移轉。 |
MigratingData |
資料移轉正在進行中。 |
CompletingMigration |
完全移轉進行中。 |
Completed |
完全移轉成功,且移轉已完成。 |
必要條件(線上)
在使用適用於 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 中設定適用於 PostgreSQL 的 Azure 資料庫。
為適用於 PostgreSQL 的 Azure 資料庫選擇的 SKU 應與來源資料庫的規格對應,以確保相容性和適當的效能。
關於如何建立新的適用於 PostgreSQL 的 Azure 資料庫,如需詳細指示,請參閱下列連結:快速入門:建立伺服器。
伺服器參數 max_replication_slots
應大於需要移轉的資料庫數目。 它可以在 設定-Server> Parameters 底下的 Azure 入口網站 中設定,或使用下列命令在命令行中設定:
ALTER SYSTEM SET max_replication_slots = number of databases to migrate
+ 1;
網路設定
必須正確設定網路,才能在移轉期間確保來源與目標能成功連線。 以下指南可協助您為不同案例建立網路連線:
移轉的網路需求:
ExpressRoute/IPsec VPN/VPN 通道:在將內部部署/AWS 來源連線至 Azure 時,可能需要設定 ExpressRoute、IPsec VPN 或 VPN 通道,以便能安全地傳輸資料。
VNET 對等互連:在兩個不同的 VNet 之間建立虛擬網路對等互連,以便能進行直接的網路連線,這是在 Azure VM 與適用於 PostgreSQL 的 Azure 資料庫之間進行移轉時的必要條件。
連線能力案例:
下表可協助設定來源與目標之間的網路。
來源 |
Target |
連線能力秘訣 |
公開 |
公開 |
如果來源列在目標防火牆規則中,則不需要採取任何其他動作。 |
私用 |
公用 |
不支援此設定;請使用 pg_dump/pg_restore 來傳輸資料。 |
公開 |
私人 |
如果來源列在目標防火牆規則中,則不需要採取任何其他動作。 |
私用 |
私人 |
在來源與目標之間建立 ExpressRoute、IPsec VPN、VPN 通道或虛擬網路對等互連。 |
私人 |
私人端點 |
不支援此設定;請連絡 Microsoft 支援服務。 |
如需網路設定的詳細資訊,請瀏覽適用於 PostgreSQL 的 Azure 資料庫 - 彈性伺服器中的移轉服務網路指引。
擴充
延伸模組是可新增至 PostgreSQL 以增強其功能的額外功能。 適用於 PostgreSQL 的 Azure 資料庫支援延伸模組,但必須以手動方式加以啟用。 若要啟用延伸模組,請遵循下列步驟:
在來源中使用 select 命令列出要使用的所有延伸模組 - select extname,extversion from pg_extension;
在適用於 PostgreSQL 的 Azure 資料庫上的 [伺服器參數] 頁面上,搜尋 azure.extensions 伺服器參數。 啟用在 PostgreSQL 內的來源中找到的延伸模組。
儲存參數變更,並視需要重新啟動適用於 PostgreSQL 的 Azure 資料庫以套用新的設定。
檢查清單中是否包含下列任何延伸模組:
- PG_CRON
- PG_HINT_PLAN
- PG_PARTMAN_BGW
- PG_PREWARM
- PG_STAT_STATEMENTS
- PG_AUDIT
- PGLOGICAL
- WAL2JSON
如果有,請在伺服器參數頁面中搜尋 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 "C:\Users\Administrator\Documents\migrationBody.JSON" --migration-mode offline
migration-name
命令中使用的create
自變數會用於其他 CLI 命令,例如update
、 delete
和 show.
它可唯一識別所有命令中對應動作中的移轉嘗試。
最後,create
命令需要將 JSON 檔案作為其 properties
引數的一部分傳遞。
JSON 的結構如下:
{
"properties": {
"sourceDbServerResourceId":"/subscriptions/<subscriptionid>/resourceGroups/<src_ rg_name>/providers/Microsoft.DBforPostgreSQL/servers/<source server name>",
"secretParameters": {
"adminCredentials":
{
"sourceServerPassword": "<password>",
"targetServerPassword": "<password>"
},
"sourceServerUserName": "<username>@<servername>",
"targetServerUserName": "<username>"
},
"dbsToMigrate":
[
"<db1>","<db2>"
],
"overwriteDbsInTarget":"true"
}
}
create
進入 JSON 檔案格式的參數如下所示:
參數 |
類型 |
描述 |
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 ,以自動啟用來源伺服器上的邏輯複寫。 伺服器設定中的這項變更需要伺服器重新啟動,且停機時間為 2 到 3 分鐘。 |
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
狀態。
設定複寫
如果選取 [ 在線 移轉預覽],則必須在來源單一伺服器中開啟邏輯複寫。 如果未開啟,當參數以隨附 JSON 檔案中的 值true
傳遞時SetupLogicalReplicationOnSourceDBIfNeeded
,移轉服務會自動在來源 Single 伺服器上開啟邏輯複寫。 使用下列命令啟動移轉之後,也可以在來源手動設定複寫。 開啟邏輯復寫的任一方法會重新啟動來源單一伺服器。
例如:
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 "C:\Users\Administrator\Documents\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 |
移轉成功且已完成。 |
移轉子狀態 |
描述 |
PerformingPreRequisiteSteps |
已設定基礎結構並準備進行資料移轉。 |
MigratingData |
資料移轉正在進行中。 |
CompletingMigration |
完全移轉進行中。 |
Completed |
完全移轉成功,且移轉已完成。 |
完全移轉
在線上移轉中,在基礎資料移轉完成之後,移轉工作會移至 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