前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >MySQL的备份

MySQL的备份

作者头像
MySQLSE
发布2024-03-02 10:29:55
820
发布2024-03-02 10:29:55
举报

数据库备份是DBA的典型任务,可以将数据从一个系统传输到另外一个系统,也可以基于生产系统的特定状态创建一个开发服务器。除此之外,备份还用于数据库恢复,可以将一个发生故障的系统恢复,也可以将系统恢复到发送用户错误之前的特定状态。利用备份的系统可以将其与生产系统分离,在不影响生产系统的性能的前提下,对数据进行审计和分析。

备份的类型

备份的类型影响应用程序与数据库的交互,主要的备份类型包括如下:

  • 热备份:允许应用程序完整访问数据。
    • 备份可以在数据读取和修改期间进行,系统保留读取和修改数据的能力。在备份期间采用多版本并行控制(MVCC),会使用行锁。
  • 冷备份:不允许应用程序访问数据。
    • 备份时数据无法被用户访问,通常情况下,服务器需要进入拒绝访问模式或关机。用户在备份期间无法读取和修改任何数据。
  • 温备份:允许应用程序进行只读操作,不允许更改数据。
    • 备份时允许用户读取数据,无需完全封闭用户,但缺点是备份期间无法修改数据、可能会导致性能问题。

备份方法

备份可以采取不同的方法与技术进行,方法包括如下:

  • 逻辑备份:通过文本再现,SQL语句或数据文件使用逗号或制表符分隔的文件、XML文件等。备份的结果中包含SQL语句或用于重构数据库的数据。
  • 物理备份:MySQL数据库文件的二进制副本。
  • 基于快照(物理备份)
  • 基于复制(物理或逻辑备份)
  • 增量备份:通过创建和刷新MySQL二进制日志实现

逻辑备份

MySQL的逻辑备份可以通过SQL语句、“mysqldump”,或“mysqlpump”将数据进行转储来实现。数据转储基于一个指定的时间点。逻辑备份的优势在于创建一个SQL脚本,用户可以在MySQL服务器上执行,并可以利用该脚本在不同架构的主机或服务器上重新加载数据。逻辑备份可以备份全部的数据库或其中的一个/部分数据库或表,并且可以备份本地和远程的服务器。其缺点是备份速度慢,默认的情况下需要对表加锁(非innoDB表),以防止用户在备份期间更改数据。此外,备份语句使用的磁盘空间可能会超过实际数据使用的磁盘空间,因为通常情况下,文本数据要比二进制数据消耗更多的磁盘空间,但对于InnoDB而言,由于其在数据页中保存数据,会包含一部分未使用的空间,它所占用的磁盘空间会超过实际数据大小。

逻辑备份的要求

通常情况下逻辑备份属于温备份,使用时有如下要求:

  • 创建备份时,要求MySQL服务器必须运行。
  • 备份期间应用程序可以执行只读操作。
  • 服务器通过读取正在备份的表的结构和内容来创建文件,然后将结构和数据转换为SQL语句或文本文件。
  • 利用InnoDB 的MVCC可以实现热备份,使用“REPEATABLE READ”隔离级别实现一致的时间点备份。

逻辑备份的性能

通常情况下,逻辑备份的速度远慢于物理备份,MySQL服务器必须读取表并解释表的内容,之后将其转换为磁盘文件或者发送到一个客户端程序。逻辑备份的恢复慢于物理备份的恢复,原因在于恢复过程中执行的脚本包含独立的创建和插入语句,这些语句在后台创建表,并插入数据。

物理备份

物理备份主要是指复制数据文件。用户可以使用标准的“tar”,“cp”等命令操作,也可以通过物理镜像、块操作,及快照文件等实现。数据恢复时,必须恢复到相同的MySQL版本和存储引擎。物理备份可以跨服务器架构进行恢复,但要求MySQL的存储引擎层文件必须是二进制格式并能够在不同服务器上使用。

物理备份的优势在于执行备份和恢复时远超逻辑备份的速度,其快速的原因是其作为一个文件或文件系统进行复制,这些副本以MySQL本身在磁盘上存储数据库的完全相同的格式保存数据库,备份文件的大小与数据文件的实际大小相同。

物理备份期间,服务器不能修改文件。InnoDB要求服务器关机,MyISAM要求只读。用户可以使用快照、MySQL复制,DRDB等方法在后台分开数据文件,以降低备份对MySQL和应用程序的影响。

在线磁盘复制

用户可以使用RAID镜像,DRDB等技术进行在线磁盘复制。这些技术提供在线或者接近在线的备份能力,可以在硬件发生故障时快速恢复数据,其缺点是因为它具有实时复制的能力,无法利用该技术处理人为或应用程序导致的数据丢失。

基于快照的备份

基于快照的备份等同于创建了一个具有时间点的数据副本,提供了一个逻辑上冻结的文件系统版本。快照无需包含具有一致性的数据库镜像,当利用快照进行恢复时,InnoDB必须执行它自身的恢复过程,以确保完整的事务。

基于快照的备份使用MySQL外部的快照功能,例如,数据文件在Linux的LVM2 逻辑卷,包含一个ext4的文件系统,用户可以创建一个基于快照的备份。基于快照的备份系统适用于支持事务的存储引擎,使用“Copy-on-write”方法来确保它们几乎是瞬时完成的。“Copy-on-write”方法类似于InnoDB的UNDO日志和MVCC,当执行快照时,LVM标记随后更改的所有块,并记录这些块的快照版本。

基于MySQL复制的备份

MySQL支持单向的异步复制,在复制的拓扑中一台服务器作为主服务器,其余的服务器作为从服务器。备份时,主服务器作为生产环境的服务器使用,从服务器用于备份,该方法的优势是可以最大限度减小对生产环境的影响,缺点则是主从之间可能存在延迟、需要额外的服务器存放数据库的副本。

二进制日志备份

二进制日志备份记录了数据的变更,用于在上次完整备份后恢复到最新数据时使用。其优势是记录了完整的数据更改,用户可以安顺序保存应用多个二进制日志备份。其缺点是用户必须按照顺序从上一次的完整备份结束之后保存日志,恢复时间可能会很长。用户可以使用“mysqlbinlog”创建日志流,例如:

代码语言:javascript
复制
mysqlbinlog --read-from-remote-server --host=server_host --raw --stop-never binlog.000101

用户可以在MySQL的会话级别控制二进制日志的开启,例如:

代码语言:javascript
复制
SET SQL_LOG_BIN = 1

进行逻辑或物理备份时,需要刷新二进制日志进行同步,以用于备份。当需要进行增量备份时,需要复制增量部分的二进制日志。此外,二进制日志也适用于时间点恢复,用户可以识别出错的事务,并跳过该事务进行恢复。

备份策略

备份方法对比

备份和恢复的策略取决于数据记录的完整性和备份频率的要求,以及能够承受的系统宕机时长和恢复数据量的要求。

用户可以根据实际的要求选择不同的备份策略,如果有更高的要求,还可以组合不同的备份方法,实现更为复杂的备份策略。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2024-02-26,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 MySQL解决方案工程师 微信公众号,前往查看

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

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
云数据库 MySQL
腾讯云数据库 MySQL(TencentDB for MySQL)为用户提供安全可靠,性能卓越、易于维护的企业级云数据库服务。其具备6大企业级特性,包括企业级定制内核、企业级高可用、企业级高可靠、企业级安全、企业级扩展以及企业级智能运维。通过使用腾讯云数据库 MySQL,可实现分钟级别的数据库部署、弹性扩展以及全自动化的运维管理,不仅经济实惠,而且稳定可靠,易于运维。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档