mysql数据迁移
一.借助Navicat工具
- 导出
双击打开数据库,右键 -- 转储SQL文件,根据实际需求选择“结构和数据” or “仅结构”,选择保存路径即可。 - 导入
右键数据库连接名 -- 新建数据库 -- 右键数据名 -- 运行SQL文件 -- 选择SQL文件路径即可。
导入可能出现的错误提示:1153 - Got a packet bigger than 'max_allowed_packet' bytes
解决方法:
临时修改:
set global max_allowed_packet=524288000
; (512M,如果还报错,值再设大,需登录MySQL执行)
永久修改:修改my.cnf(Windows下my.ini),需要重启MySQL。在[MySQLd]部分设置:max_allowed_packet=256M
。可通过命令show VARIABLES like '%max_allowed_packet%’
查看是否修改成功。
二.命令行方式
-
导出数据和表结构
mysqldump -u用户名 -p 数据库名 > 数据库名.sql
,比如:mysqldump -uroot -p dbname > dbname.sql
-
只导出表结构,使用-d
mysqldump -uroot -p -d dbname > dbname.sql
-
导入数据库
mysql -uroot -p dbname < dbname.sql
-
导出所有数据库
mysqldump -uroot -p --all-databases > all.sql
-
导入所有数据库
mysql -uroot -p < all.sql
错误提示:-bash: mysqldump: command not found
解决方法:由于linux系统默认会查找/usr/bin下的命令,所以需要映射一个链接到/usr/bin目录下。ln -s /home/mysql/bin/mysqldump /usr/bin
三.拷贝文件
- 在MySQL的安装目录找到data文件夹,比如:
/home/mysql/data/
- 将数据库对应的文件夹(数据库和文件夹同名)拷贝到另一个MySQL的data目录下。比如:下图中的 datacenter 库。
image.png注意:可能没有data目录,可通过cat /etc/my.cnf查看datadir路径。比如:datadir=/var/lib/mysql。mysql就是data目录。
- 如果没有生效,重启MySQL:service mysqld restart