Loading [MathJax]/jax/input/TeX/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >基于mysqldump聊一聊MySQL的备份和恢复

基于mysqldump聊一聊MySQL的备份和恢复

原创
作者头像
麦洛
修改于 2020-06-02 02:30:39
修改于 2020-06-02 02:30:39
2.4K0
举报

前言

Hi,大家好,我是麦洛,今天我们聊聊MySQL的备份和恢复,在下面文章中,你会了解到MySQL常见的备份类型,以及基于mysqldump命令在日常开发中如何做MySQL数据库以及表的备份和恢复。最近开始玩公众号了,喜欢的小伙伴可以关注我

0.png
0.png

一.为什么要做备份?

  • 数据丢失的情况下快速恢复数据。
  • 作为实验数据的来源:
    • 将生产数据拷贝一份到到本地测试库用于测试,不影响生产数据
    • 升级数据库版本时,需要将生产数据拷贝到本地,然后在本地测试是否兼容,找出潜在不安全性
哎呀,手抖了,删库了
哎呀,手抖了,删库了

二 数据库备份的类型

1 物理备份(原始备份)与逻辑备份

1.1 物理备份

物理备份指将数据库内容的目录和数据文件、日志文件及配置文件的原始副本全部备份,适用于大型重要的数据库在出现问题时需要快速恢复的场景。

1.1.1 物理备份方法具有以下特征
  • 物理备份包括数据库目录和文件的精确副本。 通常这是 MySQL 数据目录的全部或部分副本。
  • 物理备份方法比逻辑备份方法快,因为它们只涉及文件复制而不设计文件转换。
  • 物理备份可以在 MySQL 服务器停止时执行备份。 如果服务器正在运行,则需要执行适当的锁定,以便服务器在备份期间不更改数据库内容。 MySQL Enterprise BackupMySQL 提供企业级备份和恢复。 它可以在多种平台上提供热备份、在线备份和非阻塞备份)可以自动锁定需要备份的表。
  • 除了数据文件之外,备份还可以包括任何相关文件,如日志或配置文件。
  • 物理备份工具包括 mysqlbackupMySQL Enterprise Backup 组件的一部分),或 MyISAM 表的文件系统命令(如 cp、 scp、 tar、 rsync)。
1.1.2 物理备份恢复
  • MySQL Enterprise Backup 恢复 InnoDB 和其他已备份的表
  • ndb_restore还原恢复 NDB 表(NDB引擎)
  • 使用文件系统命令复制的文件可以使用文件系统命令复制回原来的位置
1.2 逻辑备份

逻辑备份是指将数据库的逻辑结构(CREATE DATABASECREATE TABLE 语句)和内容(INSERT 语句或带分隔符的文本文件)备份。 它适用于小量的数据,我们可以直接编辑备份的数据,修改表结构或者内容,然后在不同的服务器上面重新构建数据;

1.2.1 逻辑备份方法具有以下特征
  • 逻辑备份是通过查询 MySQL 服务器获取数据库表结构和表内容信息来完成的。
  • 逻辑备份比物理备份方法慢,因为服务器必须访问数据库的信息并将其转换为逻辑格式。 如果输出是在客户端写的,服务器还必须将其发送到客户端侧,网络传输也是影响的一方面。
  • 逻辑备份是在运行 MySQL 服务器的情况下执行的。服务器不需要停机。
  • 逻辑备份工具包括 mysqldump 程序和 SELECT... INTO OUTFILE 语句。
  • 备份不包括日志或配置文件。
  • 要还原逻辑备份,可以使用 mysql 客户端(Navicat)处理 sql 格式的转储文件。 若要加载带分隔符的文本文件,请使用 loaddata 语句或 mysqlimport 客户端。

2 在线备份和离线备份

MySQL 服务器运行期间进行备份,称为在线备份。反之服务器停止时进行备份。称为离线备份。 通常也可以称为“热备份”和“冷备份” ;

1 在线备份方法具有以下特征
  • 在线备份对其他客户端的干扰较小,这些客户端可以在备份期间连接到 MySQL 服务器,并且可以访问数据。
  • 必须注意施加适当的锁定,防止备份期间数据修改导致备份数据不完整。 MySQL Enterprise Backup产品会自动执行这种锁定。
2 离线备份方法具有以下特征
  • 客户端可能会受到负面影响,因为服务器在备份期间不可用。 由于这个原因,这些备份数据通常是从从服务器上(主从复制)获取的,当然是在不影响可用性的情况下离线执行。
  • 备份过程更简单,因为不存在客户端活动干扰的可能性。

在备份期间,客户端能够在备份数据时读取数据。 恢复修改数据并且不只是读取数据,因此在还原数据时必须阻止客户端访问数据。

3 本地备份与远程备份

本地备份指在运行 MySQL 服务器的同一台主机上执行备份操作,而远程备份是在另一台主机上执行备份操作。 对于某些类型的备份,即使备份输出是在服务器上,但可能是从远程主机启动备份。

  • mysqldump可以连接到本地或远程服务器。
  • SELECT ... INTO OUTFILE 可以从本地或远程客户端主机启动 SELECT... INTO OUTFILE,但是输出文件是在服务器主机上创建的。
代码语言:txt
AI代码解释
复制
更多内容阅读:
mysqldump : https://dev.mysql.com/doc/refman/5.7/en/mysqldump.html
SELECT ... INTO OUTFILE : https://dev.mysql.com/doc/refman/5.7/en/select-into.html

4 完全备份与增量备份

完全备份指备份 MySQL 服务器在给定时间点管理的所有数据。 增量备份指备份给定时间范围内(从一个时间点到另一个时间点)对数据所做的更改。 Mysql 有不同的方法来执行完全备份,如前面所述。 通过启用 MySQL 服务器的binlog二进制日志(服务器用于记录数据更改) ,可以进行增量备份。

5 完全恢复与时间点(增量)恢复

完全恢复还原备份的所有数据。这会将服务器的数据恢复到备份时的状态。如果该状态不是当前的,可以在完全恢复之后进行增量恢复,从而使服务器达到更新的状态。

增量恢复是对给定时间跨度内所做的更改进行恢复。这也称为时间点恢复。时点恢复基于binlog二进制日志,通常在完全恢复备份文件之后进行,然后将写入二进制日志文件中的数据更改作为增量恢复应用于重做数据修改,并将服务器带到所需的时间点。

三 . 使用mysqldump进行备份

1备份SQL格式的数据

首先,我们看看我们的演示数据

1.1 备份所有数据库

进入MySQL安装bin目录下面执行命令,接下来操作保持一致

代码语言:txt
AI代码解释
复制
C:\Program Files\MySQL\MySQL Server 5.7\bin>mysqldump --all-databases --hex-blob >d:\alldatabases.sql
  • --hex-blob :使用十六进制符号转储二进制字符串解决导出中文乱码问题

结果:

1.2 备份特定数据库
代码语言:txt
AI代码解释
复制
mysqldump --databases girls > d:\girls.sql

结果:

说明:

在单数据库情况下,可以忽略以下 --databases选项

如果不带此选项,生成文件会不包含CREATE DATABASE

1.3 备份数据库的特点表
代码语言:txt
AI代码解释
复制
mysqldump girls boys >d:\boys.sql

结果:

2.重载SQL格式的备份

2.1 不创建Database

如果备份文件是由mysqldump使用 --all-databases--databases选项创建的 ,则备份文件包含CREATE DATABASEUSE语句,所以无需指定默认数据库就可以直接将数据重载;

首先,我们删库跑路..........

代码语言:txt
AI代码解释
复制
C:\Program Files\MySQL\MySQL Server 5.7\bin>mysql <d:\alldatabases.sql

结果:

2.2 创建Database

备份文件不包含CREATE DATABASEUSE语句 ,请首先创建数据库(如有必要):

代码语言:txt
AI代码解释
复制
#创建数据库db1
mysqladmin create db1

结果:(关闭数据库连接,重复开启,皆可以看到)

代码语言:txt
复制

我们重新生成一个不不包含CREATE DATABASEUSE语句的文件

代码语言:txt
AI代码解释
复制
mysqldump girls > d:\nodatabasegirls.sql
img
img

彩蛋:如果遇到这个,就重启下mysql服务吧,我也不知道为什么,哈哈

代码语言:txt
AI代码解释
复制
mysqldump: Got error: 1045: Access denied for user 'ODBC'@'localhost' (using password: NO) when trying to connect

db1数据库重载我们的数据

代码语言:txt
AI代码解释
复制
mysql db1<d:\nodatabasegirls.sql

结果:

四.mysqldump的应用场景

1 制作数据库副本

代码语言:txt
AI代码解释
复制
shell> mysqldump db1 > dump.sql
shell> mysqladmin create db2
shell> mysql db2 < dump.sql

2 将数据库从一台服务器复制到另一台服务器

代码语言:txt
AI代码解释
复制
# 在服务器1上:
shell> mysqldump --databases db1 > dump.sql
# 在服务器2上:
shell> mysql < dump.sql
# 您可以--databases从 mysqldump命令中省略,然后自己创建数据库
# 在服务器1上:
mysqldump db1 > dump.sql
# 在服务器2上:
shell> mysqladmin create db1
shell> mysql db1 < dump.sql

3 转储表定义和内容

代码语言:txt
AI代码解释
复制
# 不转储表数据
shell> mysqldump --no-data test > dump-defs.sql
#不输出CREATE语句,只包含表数据
shell> mysqldump --no-create-info test > dump-data.sql

4 使用mysqldump测试升级不兼容性

在考虑进行MySQL升级时,应将新版本与当前生产版本分开安装。然后,您可以从生产服务器中转储数据库和表定义,并将它们加载到新服务器中,以验证它们是否正常。(这对于测试降级也很有用。)

代码语言:txt
AI代码解释
复制
#生产服务器
shell> mysqldump --all-databases --no-data --routines --events > dump-defs.sql
#升级服务器
shell> mysql < dump-defs.sql

验证表定义正常后,在导入数据测试

代码语言:txt
AI代码解释
复制
#生产服务器
shell> mysqldump --all-databases --no-create-info > dump-data.sql
#升级服务器
shell> mysql < dump-data.sql

这时候,可以进行一些简单查询测试,观察是否正常

五 总结

在本文中,我们只是简单介绍了mysqldump的基础操作,关于它的选项总共有113个,大家可以根据自己需要自行去官网https://dev.mysql.com/doc/refman/5.7/en/mysqldump.html查阅学习

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
mysql 数据库备份和恢复
物理备份是指直接复制包含数据的文件夹和文件。这种类型的备份适用于大数据量且非常重要,遇到问题需要快速回复的数据库。
WindWant
2020/09/11
4.2K0
使用 mysqldump 备份 MySQL
mysqldump是一个客户端应用程序,可用于进行逻辑备份。它将生成必要的 SQL 语句来重现原始数据库。
用户4235284
2023/10/14
1.3K0
使用 mysqldump 备份 MySQL
第7章、备份与恢复
默认情况下mysqldump导出的是标准的SQL语法,因此你可以使用标准输出写入文件。
幺鹿
2018/08/21
9340
第7章、备份与恢复
mysql备份与恢复
对于DBA来说,备份和恢复是一项最基本的操作,在服务器宕机、磁盘损坏、RAID卡损坏等意外情况下,要保证数据不丢失或者丢失量在可接受范围内,每个DBA应该时刻关注所负责的数据库备份情况。个人认为,一个合格的DBA每天来公司的第一件事不应该是倒水喝茶,而应该是查看数据库的备份情况。这里我们首先来看备份的一些方法,根据备份的方法不同可以讲备份分为:
AsiaYe
2019/11/06
2.4K0
使用mysqldump导出数据库
    mysqldump是mysql用于转存储数据库的客户端程序。它主要产生一系列的SQL语句,可以封装到文件,该文件包含有所有重建您的数据库所需要的SQL命令如CREATE DATABASE,CREATE TABLE,INSERT等等。可以用来实现轻量级的快速迁移或恢复数据库。是mysql数据库实现逻辑备份的一种方式。本文描述了mysqldump的一些重要参数以及给出了相关示例供大家参考。
Leshami
2018/08/13
4.2K0
MySQL数据库备份与恢复-使用MySQLDump记录
最近接了一个新需求,需要把 MySQL 备份做成可视化界面进行操作,使用代码去调用 MySQLdump 程序进程备份,使用 MySQL 程序进程恢复。
框架师
2021/11/22
5.3K0
mysql数据备份与恢复
MySQL数据备份与恢复 #1. 物理备份: 直接复制数据库文件,适用于大型数据库环境。但不能恢复到异构系统中如Windows。 #2. 逻辑备份: 备份的是建表、建库、插入等操作所执行SQL语句,适用于中小型数据库,效率相对较低。 #3. 导出表: 将表导入到文本文件中。 一、使用mysqldump实现逻辑备份 #语法: # mysqldump -h 服务器 -u用户名 -p密码 数据库名 > 备份文件.sql (本地使用可以省略 -h 服务器名) 当用户登陆不需要密码时(密码为空或在配置文件中已
用户1214487
2018/01/24
3.4K0
MySQL 备份与恢复详解
物理备份是指通过拷贝数据库文件的方式完成备份,这种备份方式适用于数据库很大,数据重要且需要快速恢复的数据库
星哥玩云
2022/08/17
1.3K0
MySQL 备份与恢复详解
MySQL mysqldump数据导出详解
 在日常维护工作当中经常会需要对数据进行导出操作,而mysqldump是导出数据过程中使用非常频繁的一个工具;它自带的功能参数非常多,文章中会列举出一些常用的操作,在文章末尾会将所有的参数详细说明列出来。
拓荒者
2019/03/15
13.2K0
MySQL mysqldump数据导出详解
揭秘MySQL 8.4新版备份利器:全面解读Mysqldump参数与实战技巧
MysqlDump是MySQL数据库管理系统提供的一个实用工具,用于创建数据库的逻辑备份。它通过生成 SQL 脚本文件,将数据库中的数据和结构导出,以便进行备份和恢复。这个工具非常适用于需要迁移数据库、备份数据、或者将数据库内容导出为 SQL 文件的场景。
DBA实战
2024/09/06
6120
揭秘MySQL 8.4新版备份利器:全面解读Mysqldump参数与实战技巧
Mysql-12-mysql的备份和恢复
1.数据库的备份   备份=拷贝加管理,防止数据的丢失同时记录用户的操作记录。其中最有效的备份是对IT架构进行备份。 原则: (1)数据库要定期备份,备份的周期应当根据应用数据系统可承受的恢复时间,而且定期备份的时间应当在系统负荷最低的时候进行。对于重要的数据,要保证在极端情况下的损失都可以正常恢复。 (2)定期备份后,同样需要定期做恢复测试,了解备份的正确可靠性,确保备份的有意义的、可恢复的。 (3)根据系统需要来确定是否采用增量备份,增量备份只需要备份每天的增量数据,备份花费的时间少,对系统负载的压力也
用户1173509
2018/01/17
1.6K0
Mysql-12-mysql的备份和恢复
MySQL 备份恢复(一)
数据是很重要的,没有备份,删库就只能跑路了,当然这只是玩笑话了。但当数据损坏或者误操作删除数据时,备份就显得尤为重要了,备份可以恢复误删除的数据,备份可以作为我们最后的“救命稻草”。MySQL 也是可以按照服务运行状态分为冷备和热备(即停机和非停机),热备份又可以分为逻辑备份和裸设备备份。按照备份后的内容量又可以分为全量备份和增量备份。
JiekeXu之路
2019/06/19
3.9K0
使用mysqldump备份MySQL或MariaDB
在日常维护工作当中经常会需要对数据进行导出操作,而mysqldump是导出数据过程中使用非常频繁的一个工具。本文将简介MySQL如何使用mysqldump工具进行数据备份。
无敌小笼包
2018/08/15
1.8K0
mysqldump备份技巧分享
mysqldump 是日常比较常用的一个工具了,在对数据库进行导出工作时,经常会用到 mysqldump 。本篇文章将介绍 mysqldump 工具的使用方法并分享几点备份技巧。
MySQL技术
2021/07/29
2.2K0
mysqldump备份技巧分享
MySQL数据备份mysqldump的简单使用
MySQLdump是一个数据库逻辑备份程序,可以使用对一个或者多个mysql数据库进行备份或者将数据传输到其他mysql服务器。执行mysqldump时需要账户拥有select权限才可以进行备份数据表,show view权限用于备份视图,trigger权限用于备份触发器等。
星哥玩云
2022/08/17
1.6K0
入门MySQL——备份与恢复
前面几篇文章为大家介绍了 MySQL 各种语句语法的用法及用户权限相关知识。本篇文章将主要讲解 MySQL 数据库数据备份与恢复相关知识,主要聚焦于逻辑备份,介绍mysqldump工具的使用以及恢复方法。
MySQL技术
2019/09/08
8470
使用mysqldump导入导出功能备份恢复
MySQL 5.7迁移到另一台MySQL 8,然后使用mysqldump导入导出功能来实现升级。
繁华是客
2025/03/01
4221
【MySQL基础】数据库的备份与还原
https://blog.csdn.net/2301_80220607/category_12971838.html?spm=1001.2014.3001.5482
GG Bond1
2025/06/08
4940
数据库管理的MySQL备份和恢复命令
mysqldump 是一个命令行客户端程序,用于转储本地或远程 MySQL 用于备份到单个平面文件中的数据库或数据库集合。 如何备份和恢复 MySQL 数据库 如何备份 MySQL 数据库? 备份 MySQL数据库或数据库,该数据库必须存在于数据库服务器中并且你必须有权访问它。命令的格式是。 # mysqldump -u [username] –p[password] [database_name] > [dump_file.sql] 所述命令的参数如下。 [username] :有效的 MySQL 用户
入门笔记
2022/06/02
1.7K0
MySQL的数据备份与恢复
备份就是在数据库发生宕机的情况下保证数据不丢失,或者最小程度丢失的解决方法。Mysql 提供了 mysqldump、ibbackup、replication 工具来备份,当然也有第三方工具,如 xtrabacup、LVM快照等
晚上没宵夜
2021/10/29
10K1
MySQL的数据备份与恢复
相关推荐
mysql 数据库备份和恢复
更多 >
交个朋友
加入腾讯云官网粉丝站
蹲全网底价单品 享第一手活动信息
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档