場景
系統升級時,需要將1.0的mysql數據遷移2.0,但是相關的表結構可能發生了改變,如果不使用程序,使用sql + mysql工具實現數據的遷移。
導出數據
使用mysqldump命令,將數據導出到文件:
mysqldump -u test-p -h localhost -P 3306 --complete-insert --extended-insert=FALSE --set-gtid-purged=OFF --lock-tables=false --databases=mydb table_1 table_2 > dump_tmp_table_1.sql;
-u:用戶
-p:使用密碼,稍後會讓你輸入
-h:mysql所在的機器
-P:大寫,端口,默認3306
–no-create-info:不包含建表語句
–lock-tables:是否鎖表,爲了維護數據一致性,在備份時,設置爲true,避免dump期間對錶寫操作
如果表結構變了,如果2.0對table_1增減了字段,或更名了字段,該如何處理?
場景:mydb中的表user(id,name,phone),需要將數據遷入新表mydb_new.user_new(id,name,mobile,age)
- 在舊庫創建臨時表user_tmp(id,name,mobile,age)
create temporary table user_tmp select id,name,phone as mobile from user;
- 使用mysqldump命令,導出臨時表的數據
mysqldump -u test -p -h localhost -P 3306 --complete-insert --extended-insert=FALSE --set-gtid-purged=OFF --lock-tables=false --databases=mydb user_tmp > dump_tmp_user.sql;
然後按照下面的步驟導入數據到新表mydb_new.user_new。
導入數據
使用mysql命令就可以導入sql文件
mysql -u test-p -h localhost -P 3306 mydb_new < dump_tmp_table_1.sql;
-u:用戶
-p:使用密碼,稍後會讓你輸入
-h:mysql所在的機器
-P:大寫,端口,默認3306