掃二維碼與項目經(jīng)理溝通
我們在微信上24小時期待你的聲音
解答本文疑問/技術咨詢/運營咨詢/技術建議/互聯(lián)網(wǎng)交流
遷移MySQL數(shù)據(jù)庫通常只需要幾個簡單的步驟,但是由于您要轉移的數(shù)據(jù)量可能比較龐大,因此一般耗時也會比較長。

創(chuàng)新互聯(lián)公司是專業(yè)的雙遼網(wǎng)站建設公司,雙遼接單;提供網(wǎng)站建設、成都網(wǎng)站建設,網(wǎng)頁設計,網(wǎng)站設計,建網(wǎng)站,PHP網(wǎng)站建設等專業(yè)做網(wǎng)站服務;采用PHP框架,可快速的進行雙遼網(wǎng)站開發(fā)網(wǎng)頁制作和功能擴展;專業(yè)做搜索引擎喜愛的網(wǎng)站,專業(yè)的做網(wǎng)站團隊,希望更多企業(yè)前來合作!
下面的步驟將指導您如何從舊的服務器上導出MySQL數(shù)據(jù)庫,對它進行安全加固;然后將其復制并導入到新的服務器上,以保證數(shù)據(jù)的完整。
將MySQL數(shù)據(jù)庫導出至轉儲文件(dump file)
Oracle提供了一個名為mysqldump的工具,允許您輕松地將數(shù)據(jù)庫結構和其數(shù)據(jù)導出到一個SQL的轉儲文件。您可以使用如下的命令:
- mysqldump -u root -p --opt [database name] > [database name].sql
不過,請注意如下幾點:
安全加固備份文件
在大多數(shù)情況下,數(shù)據(jù)是一家企業(yè)的最重要的資產(chǎn)。因此,我們不希望數(shù)據(jù)庫的各種備份被暴露在不受保護的服務器上,因為這樣有可能會造成錯誤地泄露,甚至會出現(xiàn)被黑客竊取等更為糟糕的狀況。
因此,通常您可以嘗試的做法是:壓縮、加密文件,然后刪除原文件。在Linux操作系統(tǒng)上,請使用以下的命令對已壓縮文件進行加密:
- zip --encrypt dump.zip db.sql
在壓縮開始之前,系統(tǒng)將提示您輸入密碼。
傳輸備份文件
至此,我們已經(jīng)獲得了一個加密的轉儲文件。下面讓我們通過網(wǎng)絡使用SCP命令,將其傳輸?shù)叫碌姆掌魃希?/p>
- scp /path/to/source-file user@host:/path/to/destination-folder/
將MySQL轉儲導入新服務器
通過上面一步,我們已將備份文件傳到了新的服務器上,下面讓我們來進行解密和提?。?/p>
- unzip -P your-password dump.zip
為了存儲空間和安全方面的原因,一旦文件導入成功,請記得刪除其對應的轉儲文件。
您可以使用以下的命令來導入文件:
- mysql -u root -p newdatabase < /path/to/newdatabase.sql
在新服務器上驗證導入的數(shù)據(jù)
現(xiàn)在我們在新服務器上已經(jīng)導入了數(shù)據(jù)庫,那么我們就需要一種方法來驗證數(shù)據(jù)的真實存在,并確保沒有任何遺漏。
我建議您同時在舊的和新的數(shù)據(jù)庫上運行如下查詢,并將獲得的結果進行對比。
該查詢會在所有的表里計算行數(shù),以顯示出新、舊數(shù)據(jù)庫中的數(shù)據(jù)量。
- SELECT
- TABLE_NAME,
- TABLE_ROWS
- FROM
- `information_schema`.`tables`
- WHERE
- `table_schema` = 'YOUR_DB_NAME';
此外,我建議您檢查各個表中數(shù)字列的MIN和MAX記錄,以確保數(shù)據(jù)本身是有效的,而不僅僅是看數(shù)據(jù)的總量(雖然這是查詢所唯一能夠讀出的值)。另一種可供測試的選擇是將數(shù)據(jù)庫從新的服務器導出為SQL轉儲文件,并將其與舊服務器的SQL轉儲文件做比較。
此外,在應用程序被遷移之前,我建議您先將一個應用程序的實例重定向到新的數(shù)據(jù)庫上,以確認一切運行正常。
另一種導出和導入的選項
我們之所以把該選項放在***,是因為我們的確不建議您去使用它。
該方法實現(xiàn)起來非常的容易,因為它僅使用一個命令,便能一次性將轉儲文件導出、傳輸、并將其數(shù)據(jù)導入到新的數(shù)據(jù)庫之中。
而它的不足之處在于,一旦其網(wǎng)絡鏈接斷掉,您就需要重新啟動它了。
因此,我們認為它并不值得被推薦,尤其是在大型數(shù)據(jù)庫中,可能會非常不適用。
當然,如果您非要嘗試一下的話,可以使用如下的命令:
- mysqldump -u root -pPassword --all-databases | ssh user@new_host.host.com 'cat - | mysql -u root -pPassword'
重要提示
祝您數(shù)據(jù)庫遷移順利!
【原標題】 How to Transfer a MySQL Database Between Two Servers,作者: Tomer Shimshilashvili
【譯稿,合作站點轉載請注明原文譯者和出處為.com】

我們在微信上24小時期待你的聲音
解答本文疑問/技術咨詢/運營咨詢/技術建議/互聯(lián)網(wǎng)交流