應用程式移轉

已完成

在資料庫從內部部署移轉至 Azure 後,您需要更新現有的應用程式,以便其在新的位置上存取 MySQL。

原始內部部署伺服器和資料庫將包含定義與使用者相關聯權限的角色,以及其可執行的作業和執行作業的物件。 Azure MySQL Database 使用和內部部署執行的 PostgreSQL 相同的驗證與授權。

在此單元中,您將探索需要對應用程式進行的更新,以連線至新移轉的 Azure MySQL Database。

手動建立使用者

原始內部部署伺服器和資料庫會包含使用者、其執行的作業,以及其執行作業的物件。 Azure MySQL Database 使用的驗證和授權,與內部部署執行的 MySQL 相同。

使用 Azure 資料庫移轉服務將 MySQL 資料庫傳輸至 Azure MySQL Database 時,系統不會複製使用者。 您必須為目標資料庫中的資料表管理員和使用者,手動重新建立必要的使用者帳戶。 若要執行此工作,您需使用 SQL 語言或如 MySQL Workbench 的公用程式。 執行 CREATE USER 命令。 您可以使用 GRANT 命令,指定必要權限給使用者。 例如:

CREATE USER 'myuseraccount'@'%' IDENTIFIED BY 'mY!P@ss0rd';
GRANT ALL PRIVILEGES ON DATABASE [Database Name].* TO myuseraccount;
FLUSH PRIVILEGES;

若要在內部部署資料庫中查看現有的授權,請執行下列 SQL 陳述式:

USE [Database Name];

SHOW GRANTS FOR 'myuseraccount'@'%';;

重新設定應用程式

重新設定應用程式以連線到 Azure MySQL Database 是簡單明瞭的流程。 然而,您必須制定出適用於移轉流程的策略。

重新設定 MySQL 應用程式時需考慮的事項

在公司環境中,您可能擁有許多使用相同 MySQL 資料庫執行的應用程式。 可能有大量的使用者執行這些應用程式。 您想要確認從現有系統切換至 Azure MySQL Database 時,系統仍可運作,使用者可以持續執行工作,而業務關鍵性作業仍可運作。 第 1 課程模組、第 2 單元:移轉考慮事項討論了許多一般層面的問題。

移轉 MySQL 資料庫至 Azure 時,則有一些要考慮的特定內容:

  • 若您執行的是離線移轉,而舊資料庫仍在使用中,則原始 MySQL 資料庫中的資料與在 Azure 上執行的新資料庫中的資料之間,可能很快就會發生分歧。 若系統能短暫停止作業,並在再次開機後切換所有應用程式至新的系統,則適合使用離線移轉。 業務關鍵系統可能無法使用這種方法。 若您是移轉至在 Azure 虛擬機器上執行的 MySQL,則可以設定內部部署系統與在 Azure 中執行的系統間的 MySQL 複寫。 原生 MySQL 複寫僅可單向操作,但協力廠商的解決方案可用於支援 MySQL 伺服器間的雙向複寫。 這些解決方案無法用於 Azure MySQL Database。
  • 若您執行的是線上移轉,Azure MySQL Database 會設定從內部部署資料庫複寫至在 Azure 中執行的資料庫。 初始資料傳輸後,複寫能確保在內部部署資料庫中所做的變更,會複製到 Azure 中的資料庫,但無法反向複寫。

在這兩種情況下,您應確保沒有在意外覆寫過程中遺失即時資料。 例如,在線上移轉的案例中,應用程式連線至於 Azure MySQL Database 執行的資料庫,仍使用內部部署資料庫的應用程式可能會盲目覆寫該應用程式的變更。 因此,您應考慮採取下列方法:

  • 根據應用程式的工作負載類型來移轉應用程式。 僅讀取資料的應用程式可安全移動至在 Azure MySQL Database 執行的資料庫,並能看到仍使用內部部署資料庫的應用程式所做的所有變更。 若唯讀應用程式不需要完整的最新資料,您可以採用反向策略。
  • 根據使用者的工作負載類型來移轉使用者。 此策略與上述策略相似,除了您可能有僅在其他使用者修改資料時,才會產生報告的使用者。 您可以根據使用者的需求,設定該應用程式連線至適當的資料庫。
  • 根據所使用的資料集來移轉應用程式。 若不同應用程式使用不同的資料子集,您可能可以獨立移轉這些應用程式。

重新設定應用程式

若要重新設定應用程式,您需要在資料庫中為其指向。 大部分妥善撰寫的應用程式會將連線邏輯隔離出來,所以應該只需要變更這部分的程式碼。 在許多情況下,連線資訊可能儲存為設定資訊,因此您僅需更新該資訊。

您可以在 Azure 入口網站中,Azure MySQL Database 的 [連線字串] 頁面上,找到相關的連線資訊。 Azure 提供許多常見程式設計語言和架構的資訊。

Image showing the Connection strings page for Azure Database for MySQL item in the Azure portal

開啟網路連接埠

如本課程模組的第 1 單元所述,Azure MySQL Database 是在防火牆後方執行的受保護服務。 除非服務可辨識其 IP 位址,否則用戶端無法連線。 若用戶端執行的應用程式需要連線至您的資料庫,您必須為其新增 IP 位址或位址區塊範圍。

測試和驗證應用程式

切換應用程式和使用者至新的資料庫前,請務必確認已正確設定所有項目。

從「測試版」應用程式開始,使用每個角色進行連線,以確保正確功能可供使用。

接下來,執行「浸泡試驗」以模擬一段時間內同時執行一般工作負載的使用者數目。 監視系統,並驗證您已配置足夠資源至適用於 MySQL 服務的 Azure 資料庫。

您現在可以開始推出系統給使用者。 實作某種形式的「Canary 測試」可能會有所助益,其中一小部分的使用者會在不知情的情況下移轉到該系統。 這將提供您無偏差的意見,讓您更了解使用者是否在新的資料庫中有相同、更好或更糟的體驗。