Mysql
如何將數據庫從一台伺服器移動到另一台伺服器?
如何將 MySQL 表從一台物理伺服器移動到另一台?
例如這個確切的場景: 我有一個使用 innodb 表的 MySQL 伺服器,大小約為 20GB。
我想將其移至新伺服器,最有效的方法是什麼?
我最喜歡的方法是將 sqldump 命令通過管道傳遞給 sql 命令。您可以執行所有數據庫或特定數據庫。所以,例如,
mysqldump -uuser -ppassword myDatabase | mysql -hremoteserver -uremoteuser -premoteserverpassword
您可以使用所有數據庫
mysqldump --all-databases -uuser -ppassword | mysql -hremoteserver -uremoteuser -premoteserver
唯一的問題是當數據庫太大並且管道崩潰時。在這種情況下,您可以逐個表格或下面提到的任何其他方法進行。
我最近使用以下策略移動了一個 30GB 的數據庫:
舊伺服器
- 停止mysql伺服器
- 將datadir的內容複製到磁碟上的另一個位置 (
~/mysqldata/*
)- 再次啟動 mysql 伺服器(停機時間為 10-15 分鐘)
- 壓縮數據 (
tar -czvf mysqldata.tar.gz ~/mysqldata
)- 將壓縮文件複製到新伺服器
新伺服器
- 安裝mysql(不要啟動)
- 解壓壓縮文件 (
tar -xzvf mysqldata.tar.gz
)- 將mysqldata的內容移動到datadir
- 確保您的 innodb_log_file_size 在新伺服器上是相同的,或者如果不是,請不要複製舊的日誌文件(mysql 將生成這些文件)
- 啟動mysql