從 PostgreSQL 線上移轉到適用於 PostgreSQL 的 Azure 資料庫的已知問題/限制
下列小節描述從 PostgreSQL 線上移轉到適用於 PostgreSQL 的 Azure 資料庫的相關已知問題和限制。
線上移轉組態
來源 PostgreSQL 伺服器必須執行 9.4、9.5、9.6.、10 或 11 版。 如需詳細資訊,請參閱支援的 PostgreSQL 資料庫版本。
只支援移轉至相同或更高的版本。 例如,支援將 PostgreSQL 9.5 移轉至適用於 PostgreSQL 9.6 或 10 的 Azure 資料庫。 不支援從 PostgreSQL 11 移轉至 PostgreSQL 9.6。
若要在來源 PostgreSQL postgresql.conf 檔案中啟用邏輯複寫,請設定下列參數:
- wal_level:設為邏輯。
- max_replication_slots:至少要設定移轉的資料庫數目上限。 如果您想移轉四個資料庫,請至少將值設為 4。
- max_wal_senders:設定同時執行的資料庫數目。 建議值是 10。
將 DMS 代理程式 IP 新增到來源 PostgresSQL pg_hba.conf。
完成 Azure 資料庫移轉服務執行個體的佈建之後,請記下 DMS IP 位址。
將該 IP 位址新增到 pg_hba.conf 檔案:
host all 172.16.136.18/10 md5 host replication postgres 172.16.136.18/10 md5
使用者在裝載來源資料庫的伺服器上必須具有複寫角色。
來源和目標資料庫結構描述必須相符。
大小限制
- 您可以使用單一 DMS 服務,將最多 1 TB 的資料從 PostgreSQL 移轉至適用於 PostgreSQL 的 Azure 資料庫。
- DMS 可讓使用者在想要移轉的資料庫內挑選資料表。
在畫面後方,有一個 pg_dump 命令,可用來使用下列其中一個選項來備份選取的資料表:
- -T 以包含 UI 中挑選的資料表名稱
- -t 以排除使用者未挑選的資料表名稱
在 -t 或 -T 選項之後,可以包含 7,500 個字元上限,以作為 pg_dump 命令的一部分。 pg_dump 命令會針對選取或未選取的資料表使用字元計數,以較低者為準。 如果所選和未選取資料表的字元計數超過 7,500,則 pg_dump 命令會失敗並出現錯誤。
在上述範例中,pg_dump 命令會是:
pg_dump -h hostname -u username -d databasename -T "\"public\".\"table_1\"" -T "\"public\".\"table_2\""
在上一個命令中,字元數為 55 (包含雙引號、空格、-T 和斜線)
資料類型限制
限制:如果資料表上沒有主索引鍵,變更可能不會同步至目標資料庫。
因應措施:暫時設定資料表的主索引鍵讓移轉繼續。 在資料移轉完成之後,移除主索引鍵。
從 AWS RDS PostgreSQL 線上移轉的限制
當您嘗試從 Amazon Web Service (AWS) 關係資料庫 (RDS) PostgreSQL 執行線上移轉至適用於 PostgreSQL 的 Azure 資料庫時,可能會遇到下列錯誤:
錯誤:在資料庫 '{database}' 中,資料表 '{table}' 之資料行 '{column}' 的預設值在來源和目標伺服器上不一樣。 來源上為 '{value on source}',而目標上為 '{value on target}'。
限制:如果來源和目標資料庫上的資料行結構描述預設值不同,就會發生此錯誤。
因應措施:確定目標上的結構描述符合來源上的結構描述。 如需移轉結構描述的詳細資訊,請參閱適用於 PostgreSQL 的 Azure 資料庫線上移轉文件。
錯誤:目標資料庫 '{database}' 有 '{number of tables}' 個資料表,而來源資料庫 '{database}' 有 '{number of tables}' 個資料表。 來源和目標資料庫上的資料表數目應相符。
限制:當來源和目標資料庫之間的資料表數目不同時,就會發生此錯誤。
因應措施:確定目標上的結構描述符合來源上的結構描述。 如需移轉結構描述的詳細資訊,請參閱適用於 PostgreSQL 的 Azure 資料庫線上移轉文件。
錯誤:來源資料庫 {database} 為空白。
限制:如果來源資料庫為空白,就會發生此錯誤。 您可能選取了錯誤的資料庫作為來源。
因應措施:請仔細檢查您選取的移轉來源資料庫,然後再試一次。
錯誤:目標資料庫 {database} 為空白。 移轉結構描述。
限制:如果目標資料庫上沒有結構描述,就會發生此錯誤。 請確定來源上的結構描述與目標上的結構描述相符。
因應措施:確定目標上的結構描述符合來源上的結構描述。 如需移轉結構描述的詳細資訊,請參閱適用於 PostgreSQL 的 Azure 資料庫線上移轉文件。
其他限制
- 資料庫名稱不能包含分號 (;)。
- 擷取資料表必須有主索引鍵。 如果資料表沒有主索引鍵,則 DELETE 和 UPDATE 記錄作業將會產生無法預期的結果。
- 系統會忽略主索引鍵片段的更新。 套用此更新將由目標辨識為未更新任何資料列的更新。 結果會是寫入例外狀況資料表的記錄。
- 如果您的資料表有 JSON 資料行,此資料表上的任何 DELETE 或 UPDATE 作業都可能會導致移轉失敗。
- 移轉名稱相同但大小寫不同的多個資料表,可能導致無法預期的行為,且不受支援。 例如,使用 table1、TABLE1 和 Table1。
- 不支援變更 [CREATE | ALTER |DROP | TRUNCATE] 資料表 DDL 的處理。
- 在資料移轉服務中,單一移轉活動只能容納最多四個資料庫。
- 不支援移轉 pg_largeobject 資料表。