MySQL資料庫的庫表遷移

2022-05-29 21:45:12 字數 2126 閱讀 8044

最近在研究mysql資料庫的庫表遷移問題,主要分為兩種情況,一種情況是遷移資料庫的表的全部字段,另一種是遷移資料庫的表的部分字段。前一種情況是直接使用mysqldump命令來實現,後一種情況則是採用資料寫入本地再匯入mysql的思路。顯然前一種情況也可以採用後一種情況的思路實現,但使用mysqldump命令的效率明顯要高。

需求:a庫的a表遷移到b庫,a庫和b庫已經存在。

思路:使用mysqldump命令將a庫的資訊寫入sql指令碼,然後向b庫中執行該指令碼。

使用mysqldump命令只需兩個步驟就能完成庫表的遷移。

(1) 將a庫的建表和插入資料的操作寫入sql指令碼。

mysqldump -uroot -p a > a_dump.sql
可以檢視一下匯出的sql指令碼內容:

(2) 將匯出的sql指令碼應用到b庫。

mysql -uroot -p b < a_dump.sql
檢視b庫中的資料,發現資料已遷移過來。

需求:將a庫所在機器的a表的部分字段資料遷移到b庫所在機器的b表,比如表a(id,name,age,address),表b(id,name,age)。

思路:從a庫的a表中讀出b庫b表所需字段的資料,寫入到本地檔案,然後匯入到b庫b表。

(1) 庫a,表a,所在機器10.20.14.47

a表中內容

將庫a中表a的字段資料匯出,載入到本地檔案中,執行如下命令發現會報錯。

select id,name,age from a into outfile '

/home/kwang/field.csv

' fields terminated by',

';

報錯資訊:

error 1290 (hy000): the mysql server is running with the --secure-file-priv option so it cannot execute this statement
報錯的原因時由於mysql服務具有檔案保護機制,不予許使用者匯出檔案到任意目錄。

查閱相關資料後,發現mysql有乙個安全資料夾,且允許使用者匯出資料到該資料夾中,通過「select @@global.secure_file_priv;

」命令可以檢視該資料夾的路徑。

於是,通過以下命令可以匯出資料到本地檔案:

select id,name,age from a into outfile '

/var/lib/mysql-files/field.csv

' fields terminated by',

';

檢視匯出檔案field.csv的內容,即庫a中a表的部分字段資料。

(2) 庫b,表b,所在機器10.20.14.43

將a庫所在機器匯出的檔案拷貝到本地

scp [email protected]:/var/lib/mysql-files/field.csv /root
進入mysql,將csv檔案裡的資料載入到庫b的表b中。

load data local infile '

/home/kwang/field.csv

'into

table b fields terminated by',

';

檢視庫b的b表,所需欄位資料已成功遷移過來。

【參考鏈結】

[1] pursuer.chen, mysql mysqldump資料匯出詳解.

mysql庫遷移 mysql資料庫遷移

由於yum安裝mysql的時候,資料庫的data目錄預設是在 var lib下,出於資料安全性的考慮需要把它挪到 data分割槽。步驟如下 一 關閉apache和mysql.複製 如下 二 將 var lib下的mysql目錄mv 移動 到data目錄。為什麼要用mv命令,而不用cp命令呢?應為li...

MYSQL資料庫遷移

因為今天公司換了新電腦,所以需要把之前電腦的mysql資料庫遷移到新 電腦上 匯出整個資料庫 mysqldump u 使用者名稱 p 資料庫名 匯出的檔名 mysqldump u dbuser p dbname dbname.sql 一般要是沒指定檔案路徑則.sql檔案生成在cmd當前路徑下 匯入資...

MySQL資料庫遷移

mysql資料庫遷移 資料檔案直接遷移 在今年10月下旬的時候,公司的伺服器需要遷移,其中涉及到了mysql資料庫遷移。檢視了一下mysql資料檔案的大小,接近60g的大小 實際資料並沒用那麼多 由於伺服器上業務需要,要儘量減少伺服器遷移時的損失。所以遷移時間選在了晚上零點開始,而且要儘量減少遷移所...