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工具第一把交椅,有內建的好精靈,不用嗎?
使用步驟
- 在首頁上方的標籤中找到Database>migration wizard
- 在遷移之前,記得先將雲端資料庫connection設定好。
- 選擇原有資料庫跟目標資料庫(也就是要遷移過去的資料庫)後,wizard會自動跑程序
- 選擇要遷移的schema
- 選擇要遷移的tables,按預設值會遷移所有的tables,不需特別排除某個tables的話就依預設值,繼續下一步
- 如果出現錯誤,會跳error請你看一下什麼狀況
- 如果沒出error,照著wizard就會完成遷移了!
我遇到的error請接著往下看。
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資料庫,不妨好好利用這個內建的小精靈!