mysql 使用mysqldump命令 從遠程服務器複製表數據到目標機器的操作記錄

關於mysqldump更多詳細內容請參考:https://www.cnblogs.com/chenmh/p/5300370.html

背景:

服務器A上部署了新的項目,並且在此服務器建了新的數據表(新的數據表中沒有數據),所以需要自己導入一下數據(因爲某些原因吧)。因爲之前在測試服務器上(叫它服務器B)已經導入過了相應的數據,所以就可以把服務器B數據庫裏的數據導入到服務器A的數據庫中。

目標:

把服務器B數據庫中的數據 導入到 服務器A的數據庫中(B-->A)。

思路:

使用mysqldump命令做導出和導入(其實我想要的並不是備份,只是把服務器B中的數據導出,然後在服務器A中做insert)。

一般情況下,在做數據備份或者導出數據的時候,總會遇到一些問題,所以,建議是,在數據表數據較少的時候,直接遠程連接並備份(或導出)數據是一個不錯的選擇,表大小大約在20~30M左右。如果要備份整個數據庫,就去掉TABLENAME,直接使用DATABASE,本地的數據庫備份的話,就不用寫端口信息,去掉 -h 參數和遠程IP地址就好。

命令示例:

mysqldump -uUSERNAME -p -h 192.168.0.1 DATABASE TABLENAME > /localpath/datafile.sql

但大多數情況下需要操作的的數據量比較大,數據庫遠程連接資源一般都會有一定的連接限制,常常會遇到數據導出到一半就自動斷開。這樣的話就考慮在遠程數據庫服務器的環境下導出備份腳本,然後再到目標服務器中執行腳本,這樣的操作效率很高。

操作記錄:

  1. 連接到服務器B,在服務器B中使用語句生成sql腳本文件
    mysqldump -uroot -p database table_1 > hotarea_sql/table_1.sql
    

    這樣就生成了數據表table_1的數據備份腳本。

  2. 使用scp命令,將文件傳輸到服務器A
    scp table_1.sql xxx.xxx.xxx.xxx:~/

     

  3. 連接到服務器A,並登陸到mysql數據庫
    mysql>use [database];
    mysql>set names utf8; --設置傳輸編碼,避免中文亂碼
    mysql>source [~/table_1.sql]; -- source 文件路徑

    使用這個source命令執行sql腳本效率可以說是相當快了,四萬多條數據的insert,還沒眨眼就執行完了。

  4. 最後可以使用sql驗證一下數據是否全部insert成功:select count(*) from table1;

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章