最近在研究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 '檢視匯出檔案field.csv的內容,即庫a中a表的部分字段資料。/var/lib/mysql-files/field.csv
' fields terminated by',
';
(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 '檢視庫b的b表,所需欄位資料已成功遷移過來。/home/kwang/field.csv
'into
table b fields terminated by',
';
【參考鏈結】
[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的大小 實際資料並沒用那麼多 由於伺服器上業務需要,要儘量減少伺服器遷移時的損失。所以遷移時間選在了晚上零點開始,而且要儘量減少遷移所...