场景
系统升级时,需要将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