聊一聊MySQL的备份和恢复
一 物理备份(原始备份)与逻辑备份
1.物理备份
物理备份指将数据库内容的目录和数据文件、日志文件及配置文件的原始副本全部备份,适用于大型重要的数据库在出现问题时需要快速恢复的场景。
1.1 物理备份方法具有以下特征
-
物理备份包括数据库目录和文件的精确副本。通常这是 MySQL
数据目录的全部或部分副本。 -
物理备份方法比逻辑备份方法快,因为它们只涉及文件复制而不设计文件转换。 -
物理备份可以在 MySQL
服务器停止时执行备份。如果服务器正在运行,则需要执行适当的锁定,以便服务器在备份期间不更改数据库内容。MySQL Enterprise Backup
(MySQL
提供企业级备份和恢复。它可以在多种平台上提供热备份、在线备份和非阻塞备份)可以自动锁定需要备份的表。 -
除了数据文件之外,备份还可以包括任何相关文件,如日志或配置文件。 -
物理备份工具包括 mysqlbackup
(MySQL Enterprise Backup
组件的一部分),或MyISAM
表的文件系统命令(如cp、 scp、 tar、 rsync
)。
1.2 物理备份恢复
-
MySQL Enterprise Backup
恢复 -
ndb_restore还原恢复 NDB
表(NDB
引擎) -
使用文件系统命令复制的文件可以使用文件系统命令复制回原来的位置
2.逻辑备份
逻辑备份是指将数据库的逻辑结构(CREATE DATABASE
、 CREATE TABLE
语句)和内容(INSERT
语句或带分隔符的文本文件)备份。它适用于小量的数据,我们可以直接编辑备份的数据,修改表结构或者内容,然后在不同的服务器上面重新构建数据;
2.1 逻辑备份方法具有以下特征
-
逻辑备份是通过查询 MySQL
服务器获取数据库表结构和表内容信息来完成的。 -
逻辑备份比物理备份方法慢,因为服务器必须访问数据库的信息并将其转换为逻辑格式。如果输出是在客户端写的,服务器还必须将其发送到客户端侧,网络传输也是影响的一方面。 -
逻辑备份是在运行 MySQL
服务器的情况下执行的。服务器不需要停机。 -
逻辑备份工具包括 mysqldump
程序和SELECT... INTO OUTFILE
语句。 -
备份不包括日志或配置文件。 -
要还原逻辑备份,可以使用 mysql
客户端(Navicat
)处理sql
格式的转储文件。若要加载带分隔符的文本文件,请使用loaddata
语句或mysqlimport
客户端。
二 在线备份和离线备份
在 MySQL
服务器运行期间进行备份,称为在线备份。反之服务器停止时进行备份。称为离线备份。通常也可以称为“热备份”和“冷备份” ;
1 在线备份方法具有以下特征
-
在线备份对其他客户端的干扰较小,这些客户端可以在备份期间连接到 MySQL
服务器,并且可以访问数据。 -
必须注意施加适当的锁定,防止备份期间数据修改导致备份数据不完整。 MySQL Enterprise Backup
产品会自动执行这种锁定。
2 离线备份方法具有以下特征
-
客户端可能会受到负面影响,因为服务器在备份期间不可用。由于这个原因,这些备份数据通常是从从服务器上(主从复制)获取的,当然是在不影响可用性的情况下离线执行。 -
备份过程更简单,因为不存在客户端活动干扰的可能性。
在备份期间,客户端能够在备份数据时读取数据。恢复修改数据并且不只是读取数据,因此在还原数据时必须阻止客户端访问数据。
三 本地备份与远程备份
本地备份指在运行 MySQL
服务器的同一台主机上执行备份操作,而远程备份是在另一台主机上执行备份操作。对于某些类型的备份,即使备份输出是在服务器上,但可能是从远程主机启动备份。
-
mysqldump
可以连接到本地或远程服务器。 -
SELECT ... INTO OUTFILE
可以从本地或远程客户端主机启动SELECT... INTO OUTFILE
,但是输出文件是在服务器主机上创建的。
更多内容阅读:
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
四 完全备份与增量备份
完全备份指备份 MySQL
服务器在给定时间点管理的所有数据。增量备份指备份给定时间范围内(从一个时间点到另一个时间点)对数据所做的更改。Mysql
有不同的方法来执行完全备份,如前面所述。通过启用 MySQL
服务器的binlog
二进制日志(服务器用于记录数据更改) ,可以进行增量备份。
五 完全恢复与时间点(增量)恢复
完全恢复还原备份的所有数据。这会将服务器的数据恢复到备份时的状态。如果该状态不是当前的,可以在完全恢复之后进行增量恢复,从而使服务器达到更新的状态。
增量恢复是对给定时间跨度内所做的更改进行恢复。这也称为时间点恢复。时点恢复基于binlog二进制日志,通常在完全恢复备份文件之后进行,然后将写入二进制日志文件中的数据更改作为增量恢复应用于重做数据修改,并将服务器带到所需的时间点。
百小僧:拥抱.NET 5,从这个极速开发Web应用框架开始,Fur开源了!
提升效率,必须推荐这12款谷歌插件!