文章目录

  • 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中mysqldump导出报got error1045 mysqldump导出数据库是空的_sql


mysql中mysqldump导出报got error1045 mysqldump导出数据库是空的_sql_02


mysql中mysqldump导出报got error1045 mysqldump导出数据库是空的_linux_03


mysql中mysqldump导出报got error1045 mysqldump导出数据库是空的_mysql_04


mysql中mysqldump导出报got error1045 mysqldump导出数据库是空的_sql_05

只导出 MySQL 的数据表结构

可以使用 -d 选项,格式此:mysqldump -u用户名 -p -d 数据库名 > 自定义脚本名称.sql具体操作可以参考上图

只导出 MySQL 的数据表某张表的结构

mysqldump -u用户名 -p密码 -d 库名 表名 > 自定义脚本名称.sql

导出 MySQL 的数据表某张表的结构并且导出此表的数据

去掉-d是导出结构并导出数据,加上-d是仅导出表结构
mysqldump -u用户名 -p密码 -d 库名 表名 > 自定义脚本名称.sql 语法如上具体操作可以参考上图

还可以用navicat可视化工具直接操作[比较简单不一一讲解,直接看下面例图即可]

mysql中mysqldump导出报got error1045 mysqldump导出数据库是空的_mysql_06


mysql中mysqldump导出报got error1045 mysqldump导出数据库是空的_linux_07

但是当数据量比较大的时候还是用命令的方式操作效率比较高,推荐使用命令方式导出

导入

使用 mysql 命令导入数据库,格式如下:

需要导入的数据库若不存在,创建即可
mysql -uroot -p 数据库名 < 导入脚本名.sql

使用 source 命令导入数据库,格式如下:

需要先登陆数据库
source 脚本位置/脚本名.sql

Windows

导出

mysqldump导出

和Linux一样都可以使用mysqldump命令导出
进入mysql的安装路径的bin里面操作以下命令
mysqldump -u 数据库用户名 -p 数据库名称 > 导出的数据库文件


例图

mysql中mysqldump导出报got error1045 mysqldump导出数据库是空的_数据库_08

navicat工具

mysql中mysqldump导出报got error1045 mysqldump导出数据库是空的_linux_09

如果是用navicat工具,小数据量操作还是比较方便的,如果是大数据量的话推荐用命令的方式操作

导入

如果用navicat导出的推荐用navicat工具直接导入,选择数据库直接运行sql文件

` 曾尝试过用mysql命令导入,  但奇怪的是就是倒入不了,如果知道的大佬评论留言一下,🙏 

	于是就用source命令倒入了,但是导入的时候报Error看下图
`

source导入

mysql> create database test010;      # 创建数据库
mysql> use test010;                  # 使用已创建的数据库 
mysql> set names utf8;           # 设置编码
mysql> source 绝对路径:/脚本名.sql  # 导入备份数据库

例图

mysql中mysqldump导出报got error1045 mysqldump导出数据库是空的_数据库_10

source导入报错Error 1366

Error 1366

mysql中mysqldump导出报got error1045 mysqldump导出数据库是空的_linux_11


这个是啥原因呢?

客户端的编码格式和数据库的编码格式不一样------看下图

show variables like '%character%'

mysql中mysqldump导出报got error1045 mysqldump导出数据库是空的_linux_12


这边设置成和数据库一样的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
将值调大一些即可

mysql中mysqldump导出报got error1045 mysqldump导出数据库是空的_mysql_13

备份还原或数据导入报错1153:Got a packet bigger than‘max_allowed_packet’bytes的问题

SHOW VARIABLES LIKE '%max_allowed_packet%';

mysql中mysqldump导出报got error1045 mysqldump导出数据库是空的_数据库_14

1.临时修改
SET GLOBAL max_allowed_packet = 524288000; #修改 512M

设置完之后需要重新连接数据库才会更改

mysql中mysqldump导出报got error1045 mysqldump导出数据库是空的_sql_15

2.永久修改

修改my.cnf(windows下my.ini),需重启mysql 在 [MySQLd] 部分添加一句(如果存在,调整其值就可以): max_allowed_packet=512M (根据实际情况调整数值)

分享一句我特别喜欢的话:每一天都是一个新的日子,走运当然是好的,不过我情愿做到分毫不差。这样,运气来的时候,你就有准备了。 ————海明威《老人与海》