DB Migration: using MySQL Workbench 遷移資料庫資料

--

本地跟雲端的關係

我在將本機專案部署上雲端的時候,意識到一個問題:本機資料庫是本機資料庫;雲端資料庫是雲端資料庫。我那些建好的資料們都在本機,並沒辦法要求雲端資料庫通靈呀!所以,我需要遷移(migrate)這些資料。

詢問chatGPT大神發現遷移資料大致有幾種做法:
1. 使用mysqldump:mysqldump是MySQL內建提供的工具,可以將本機資料庫的資料匯出成檔案,再匯入到雲端資料庫中。大概就像將舊iphone的資料備份後,到新機子上還原的概念。
2. 雲端提供者的遷移工具:有的雲端服務提供者會提供遷移工具,例如 AWS Database Migration Service。
3. MySQL Workbench內建的Migration Wizard:MySQL Workbench是管理MySQL資料庫的GUI工具第一把交椅,有內建的好精靈,不用嗎?

使用步驟

不需進資料庫,在首頁就可以開啟migration wizard
跟著步驟一步步來,基本上指令蠻直觀明確的,新手友善!
  1. 在首頁上方的標籤中找到Database>migration wizard
  2. 在遷移之前,記得先將雲端資料庫connection設定好。
  3. 選擇原有資料庫跟目標資料庫(也就是要遷移過去的資料庫)後,wizard會自動跑程序
  4. 選擇要遷移的schema
  5. 選擇要遷移的tables,按預設值會遷移所有的tables,不需特別排除某個tables的話就依預設值,繼續下一步
  6. 如果出現錯誤,會跳error請你看一下什麼狀況
  7. 如果沒出error,照著wizard就會完成遷移了!
    我遇到的error請接著往下看。
4.選擇要遷移的schema
沒意外都是按照預設值點選next即可
5.選擇要遷移的tables,按預設值會遷移所有的tables
6.如果出現錯誤,會跳error請你看一下什麼狀況
可以重新命名schemas跟tables,但需要小心,因為APP中的程式碼也會需要更動
完成後會出一個report給你看遷移了些什麼

Error:可能遇到的錯誤

無訪問權限

在執行遷移時,在目標資料庫創建tables被拒絕,可能是因為目標資料庫拒絕被wizard訪問,也就是沒有授權給外界訪問。

可能的解法:檢查目標資料庫的user name跟password是否正確

目標資料庫創建時會設定user name跟password,通常會在創建就需要特別記起來,之後不一定能再查得到。如果真的不幸沒記到,不如快速砍掉重建一個DB,這次記得好好記下來~

後記

第一次遷移時,目標資料庫(雲端資料庫)是使用FreeMysqlHosting的服務,雖然很順利的在部署平台render上連結了雲端資料庫,但怎樣也無法順利使用這個內建的migration wizard遷移。我甚至查了怎麼開mysql的權限,最後仍然失敗,只能手動重新創建新的資料。

第二次改用AWS的RDS DB,雖然AWS的設定比較複雜,但是順利連接好資料庫後,migration wizard倒是一次就成功了。看到tables無縫接軌地遷移完成,真的有夠感動~

如果你也都用MySQL Workbench在管理MySQL資料庫,不妨好好利用這個內建的小精靈!

--

--

SzuPeiChen && Lydia

具備四年網站專案管理經驗的後端工程師,專長於 JavaScript、Node.js、MySQL 和 MongoDB,具備 AWS 雲端部署經驗。 | szupei21@gmail.com | www.linkedin.com/in/lydia-szu-pei-chen-18045896