MySQL 8.4 參考手冊  /  升級 MySQL  /  將 MySQL 資料庫複製到另一台機器

3.15 將 MySQL 資料庫複製到另一台機器

在需要於不同架構之間傳輸資料庫的情況下,您可以使用 mysqldump 來建立包含 SQL 陳述式的檔案。然後,您可以將該檔案傳輸到另一台機器,並將其作為 mysql 用戶端的輸入。

使用 mysqldump --help 來查看有哪些選項可用。

注意

如果在使用 GTID 的伺服器上建立傾印(gtid_mode=ON),預設情況下,mysqldump 會在傾印中包含 gtid_executed 集合的內容,以便將這些內容傳輸到新機器。結果會因涉及的 MySQL 伺服器版本而異。請查看 mysqldump --set-gtid-purged 選項的說明,以了解您正在使用的版本會發生什麼情況,以及如果預設行為的結果不適合您的情況,如何變更行為。

在兩台機器之間移動資料庫最簡單(儘管不是最快)的方法是在資料庫所在的機器上執行以下命令

mysqladmin -h 'other_hostname' create db_name
mysqldump db_name | mysql -h 'other_hostname' db_name

如果要透過速度較慢的網路從遠端機器複製資料庫,可以使用這些命令

mysqladmin create db_name
mysqldump -h 'other_hostname' --compress db_name | mysql db_name

您也可以將傾印儲存在檔案中,將檔案傳輸到目標機器,然後將檔案載入到那裡的資料庫中。例如,您可以將資料庫傾印到來源機器上的壓縮檔案中,如下所示

mysqldump --quick db_name | gzip > db_name.gz

將包含資料庫內容的檔案傳輸到目標機器,並在那裡執行這些命令

mysqladmin create db_name
gunzip < db_name.gz | mysql db_name

您也可以使用 mysqldumpmysqlimport 來傳輸資料庫。對於大型表格,這比單純使用 mysqldump 快得多。在以下命令中,DUMPDIR 代表您用來儲存 mysqldump 輸出的目錄完整路徑名稱。

首先,建立輸出檔案的目錄並傾印資料庫

mkdir DUMPDIR
mysqldump --tab=DUMPDIR
   db_name

然後將 DUMPDIR 目錄中的檔案傳輸到目標機器上的某些對應目錄,並在那裡將檔案載入到 MySQL 中

mysqladmin create db_name           # create database
cat DUMPDIR/*.sql | mysql db_name   # create tables in database
mysqlimport db_name
   DUMPDIR/*.txt   # load data into tables

不要忘記複製 mysql 資料庫,因為授權表格儲存在該處。您可能必須在新機器上以 MySQL root 使用者身分執行命令,直到您將 mysql 資料庫就定位為止。

在新機器上匯入 mysql 資料庫後,請執行 mysqladmin flush-privileges,以便伺服器重新載入授權表格資訊。