文章目录
- Mysql数据库导出与恢复
- 前言
- 查询mysql安装路径
- Linux
- 导出
- 导出完整数据:表结构+数据
- 只导出 MySQL 的数据表结构
- 只导出 MySQL 的数据表某张表的结构
- 导出 MySQL 的数据表某张表的结构并且导出此表的数据
- 还可以用navicat可视化工具直接操作[比较简单不一一讲解,直接看下面例图即可]
- 导入
- 使用 mysql 命令导入数据库,格式如下:
- 使用 source 命令导入数据库,格式如下:
- Windows
- 导出
- mysqldump导出
- navicat工具
- 导入
- source导入
- source导入报错Error 1366
- mysqldump或者导入数据报: Error 2013备份报错解决办法
- 备份还原或数据导入报错1153:Got a packet bigger than‘max_allowed_packet’bytes的问题
Mysql数据库导出与恢复
前言
最近测试环境要迁移服务器,需要将数据库迁移到新的数据库
Linux和Windows都有数据库要迁移
由于数据量特别大,尝试用navicat的数据传输,但是数据传输太慢了
在前辈们博客的基础上整理并实践了,产出此文
查询mysql安装路径
连上数据库(用navicat和命令行连接都可以)
查找安装路径的命令:SHOW VARIABLES like 'character_sets_dir';
Linux
导出
导出完整数据:表结构+数据
可以使用 mysqldump 命令来导出数据库,语法格式如下:
mysqldump -u用户名 -p 数据库名 > 自定义脚本名称.sql
前提:必须进入mysql的安装路径的bin目录,如下图:
只导出 MySQL 的数据表结构
可以使用 -d 选项,格式此:
mysqldump -u用户名 -p -d 数据库名 > 自定义脚本名称.sql
具体操作可以参考上图
只导出 MySQL 的数据表某张表的结构
mysqldump -u用户名 -p密码 -d 库名 表名 > 自定义脚本名称.sql
导出 MySQL 的数据表某张表的结构并且导出此表的数据
去掉
-d
是导出结构并导出数据,加上-d
是仅导出表结构mysqldump -u用户名 -p密码 -d 库名 表名 > 自定义脚本名称.sql
语法如上具体操作可以参考上图
还可以用navicat可视化工具直接操作[比较简单不一一讲解,直接看下面例图即可]
但是当数据量比较大的时候还是用命令的方式操作效率比较高,推荐使用命令方式导出
导入
使用 mysql 命令导入数据库,格式如下:
需要导入的数据库若不存在,创建即可
mysql -uroot -p 数据库名 < 导入脚本名.sql
使用 source 命令导入数据库,格式如下:
需要先登陆数据库
source 脚本位置/脚本名.sql
Windows
导出
mysqldump导出
和Linux一样都可以使用mysqldump命令导出
进入mysql的安装路径的bin里面操作以下命令mysqldump -u 数据库用户名 -p 数据库名称 > 导出的数据库文件
例图
navicat工具
如果是用navicat工具,小数据量操作还是比较方便的,如果是大数据量的话推荐用命令的方式操作
导入
如果用navicat导出的推荐用navicat工具直接导入,选择数据库直接运行sql文件
` 曾尝试过用mysql命令导入, 但奇怪的是就是倒入不了,如果知道的大佬评论留言一下,🙏
于是就用source命令倒入了,但是导入的时候报Error看下图
`
source导入
mysql> create database test010; # 创建数据库
mysql> use test010; # 使用已创建的数据库
mysql> set names utf8; # 设置编码
mysql> source 绝对路径:/脚本名.sql # 导入备份数据库
例图
source导入报错Error 1366
Error 1366
这个是啥原因呢?
客户端的编码格式和数据库的编码格式不一样------看下图
show variables like '%character%'
这边设置成和数据库一样的utf8
set character_set_client=utf8;
或者连接数据库的时候指定编码格式如下mysql -uroot -p –default-character-set=utf8
再次执行source命令即可
mysqldump或者导入数据报: Error 2013备份报错解决办法
在这里插入代码片
net_read_timeout 默认 :30
net_write_timeout 默认 :60
将值调大一些即可
备份还原或数据导入报错1153:Got a packet bigger than‘max_allowed_packet’bytes的问题
SHOW VARIABLES LIKE '%max_allowed_packet%';
1.临时修改
SET GLOBAL max_allowed_packet = 524288000; #修改 512M
设置完之后需要重新连接数据库才会更改
2.永久修改
修改my.cnf(windows下my.ini),需重启mysql 在 [MySQLd] 部分添加一句(如果存在,调整其值就可以): max_allowed_packet=512M (根据实际情况调整数值)
分享一句我特别喜欢的话:每一天都是一个新的日子,走运当然是好的,不过我情愿做到分毫不差。这样,运气来的时候,你就有准备了。 ————海明威《老人与海》