如何將 MySQL 資料庫轉移到 Microsoft SQL Server 與 Azure SQL Database
代發北科大劉建昌同學所撰寫之技術文件
MySQL 是相當常用之資料庫伺服器,而微軟雲端服務 Microsoft Azure 上 Azure SQL Database 是一個功能強大且經濟實惠的選擇,透過本篇文章,使用 SQL Server Migration Assistant ( 以下簡稱 : SSMA ) 利用幾個簡單的步驟,可將您的 MySQL 資料庫移轉到 Microsoft SQL Server 或是 Azure SQL Database 上。
SQL Server 移轉小幫手
SSMA 支援多種架構的資料庫 (Sybase、Oracle、MySQL) 快速移轉到 Azure SQL Database 或 Microsoft SQL Server。它將移轉資料庫的主要步驟;例如 : 結構 (Schema) 轉換、SQL 陳述式轉換、資料表格移轉等加以自動化,來減少從不同架構的資料庫移轉至 Azure SQL Database 或 Microsoft SQL Server 的時間和風險。SSMA 目前提供以下多種版本:
- 支援 Oracle 之 Microsoft SQL Server 移轉小幫手 (Version 6.0)
- 支援 MySQL 之 Microsoft SQL Server 移轉小幫手 (Version 6.0)
- 支援 Sybase 之 Microsoft SQL Server 移轉小幫手 (Version 6.0)
- 支援 Access 之 Microsoft SQL Server移轉小幫手 (Version 6.0)
關於安裝步驟,詳情請參考 : SQL Server Migration Assistant Team's Blog
將 MySQL 資料庫移轉到 Microsoft SQL Server 步驟
1. 下載並且安裝 Microsoft SQL Server Migration Assistant for MySQL
2. 開啟 Microsoft SQL Server Migration Assistant for MySQL
接著點選 File 來新增一個新的資料庫物件(object)。
在新增物件的對話方塊中,會要求輸入物件名稱以及要將 MySQL 資料庫移轉到哪個版本的 Microsoft SQL Server 或是 Azure SQL Database ( 舊名 SQL Azure )。本範例中我們選擇將 MySQL 資料庫移轉到 Microsoft SQL Server 2008 Express 版。
選取 "OK",則新的資料庫物件就建立好了。
注意 : 若是您目前的 SQL Server 版本是舊版本 (例如 : SQL Server 2008),則您資料庫物件轉移選項不能夠高於此版本。
3. 建立 MySQL 資料庫連線
選取左上角的 "Connect to MySql"
輸入 MySQL 的伺服器名稱、連結的通訊端口、使用者名稱與密碼
注意 :
- 要連結 MySQL 的話,還需要安裝 MySQL-Connector-odbc (版本5.1以上),若先前沒有下載的話,在上圖頁面中會被提醒要下載 MySQL ODBC,您可至 https://dev.mysql.com/downloads/connector/odbc/ 下載安裝
- MySQL-Connector-odbc 無法連接 MySQL 4.0 與更舊版本的 MySQL
輸入完畢之後,點選 "Connect" 按鈕,接著如下圖所示。在左上邊的 MySQL Metadata Explorer 會顯示出我們想要轉移的 MySQL 資料庫 (world),而在最下方輸出列中會顯示 SQL Server Migration Assistant 已經成功的連接到 MySQL。
上圖右方則是可以讓我們設定對映的 Type、Schema 等移轉的選項。
4. 連接 Microsoft SQL Server 。
選取左上角"Connect to SQL Server"
接著輸入 SQL Server 的伺服器名稱、目標資料庫名稱以及使用者帳密。
輸入完畢之後,會看到以下的警告訊息。
會出現以下原因為 SQL Server 2008 Express R2 不提供SQL Agent,但是這並不影響移轉的結果,這邊選擇繼續。
若您輸入的資料庫在 SQL Server 中不存在的話,會有提示告訴您要建立一個。
如同步驟三一樣,在最下方工具列上,可以看到 SQL Server Migration Assistant 已經成功的連到了目標 SQL Server
5. 轉換結構描述 (Convert Schema)
目前 SQL Server Migration Assistant 已經連接上了 MySQL 和 SQL Server,接著我們要來轉換結構描述,將 MySQL 資料庫中的欄位、欄位類型、主鍵 (primary key)、外鍵 (foreign key) 等結構轉換適用到 SQL Server。
點選要轉換的MySQL資料庫,選取上方工具列的"Convert Schema"。
完成轉換後,我們可以看到 SQL Server 裡面已經有與 MySQL 資料庫中相同的 Schema。
6. 同步 (Synchronize)
上述步驟已經將 MySQL 的表單和 Schema 轉換到 SQL Server 上。下一個步驟,我們要使用 SSMA 將 SQL Server 與資料庫物件做同步。
在SQL Server資料庫中,點擊滑鼠右鍵,選取 "Synchronize with database "
在最下方的輸出列中可以看到同步已經完成了。
7. 將MySQL 的資料轉移到 SQL Server
最後一個步驟就是將 MySQL 資料庫內的所有資料全部轉移到 SQL Server 之中。
選取工具列上的 "Migrate Data"
資料轉移結束之後,可以從資料轉移報告上看到資料移轉的情況
從下圖可以看到資料成功的從 MySQL 資料庫移轉到 SQL Sever上
將 MySQL 資料庫移轉到 Azure SQL Database
將 MySQL 資料庫移轉到Azure SQL Database 的步驟其實與上面所述相當接近,只有在建立資料庫物件與建立連線上有些許的差別。
1. 點選 File來新增一個新的資料庫物件 (object)。
與上述有差別的地方就是,在建立物件的對話框中,我們要選取移轉的資料庫為 ”SQL Azure” ( Azure SQL Database 舊名)
當資料庫物件建立完成,並且與 MySQL 資料庫連接 (上述步驟3),此時我們要來建立與目標 Azure SQL Database 的連結。
2. 首先要先在 Microsoft Azure 上建立一個 Azure SQL Database。
詳細的方式請參閱這裡
3. 建立好了 Azure SQL Database 之後,我們進入 Azure 管理頁面,並且選擇 ”SQL 資料庫”
4. 在這項服務中,可以看到訂閱帳戶中的所有Azure SQL Database。
點選移轉目標的資料庫後,在儀表板的右下角可以看到 Azure SQL Database 的伺服器名稱,這個名稱就是在下個步驟中,要建立SSMA 與 Azure SQL Database 連線時,所要輸入的伺服器名稱。
5. 由於在步驟1已經告知 SSMA 要移轉的目標為Azure SQL Database,也因此在工具列選項也與上述不同。
選取”Connect to SQL Azure”
在這裡需要輸入步驟4的伺服器名稱、伺服器帳號密碼、目標資料庫名稱
建立完成之後,在左手邊的 "SQL Azure Metadata Explorer" 視窗可以看到,SSMA 已經與您的 Azure SQL Database 完成連線。
6. 建立完SSMA與Azure SQL Database 的連線之後,剩餘的動作包括:轉換結構描述、同步、移轉資料等步驟都與上述相同。
下圖顯示資料已經成功的移轉到Azure SQL Database
7. 完成最後一項步驟之後,透過 Microsoft Azure 的管理網站,我們可以直接使用SQL Database Management Portal 來管理資料庫,在此之前我們需要先取得存取資料庫權限。
進入到Azure SQL Database 的管理頁面,在最下方工具列選取管理。
此時會跳出對話框,詢問您是否要將您目前的 IP 位址加至防火牆規則中,選取"是",這樣 Azure 就會自動將您的 IP 加至規則中,如此才能夠進入 Azure SQL Database 的管理頁面。
您也可以透過伺服器管理頁面,將您所在的 IP 位址加至允許存取伺服器的 IP 範圍中
8. 取得管理權限之後,就可以使用SQL Database Management Portal 進入到資料庫內部進行管理。
輸入伺服器使用者名稱與密碼 (先前在新增步驟時所建立的)
透過 Azure SQL Database 的管理介面可以看到,MySQL 資料庫的 Schema 和資料已經成功的移轉到Azure SQL Database上。