Mysql

如何將數據庫從一台伺服器移動到另一台伺服器?

  • June 2, 2019

如何將 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

引用自:https://dba.stackexchange.com/questions/174