数据库备份方法:修订间差异
(创建页面,内容为“==使用MySQL Enterprise Backup进行热备份== MySQL Enterprise Edition的客户可以使用MySQL Enterprise Backup工具对整个实例或选定的数据库、表等进行物理备份。该工具支持增量备份和压缩备份功能。相比于诸如mysqldump命令等逻辑备份技术,备份物理数据库文件可以加快恢复速度。使用热备份机制可以复制InnoDB表(理想情况下,InnoDB表应占据大部分数据)。而其他存储…”) |
无编辑摘要 |
||
第26行: | 第26行: | ||
==创建分隔文本文件备份== | ==创建分隔文本文件备份== | ||
要创建包含表格数据的文本文件,可以使用SELECT * INTO OUTFILE 'file_name' FROM | 要创建包含表格数据的文本文件,可以使用SELECT * INTO OUTFILE 'file_name' FROM tbl_name语句。该文件将在MySQL服务器主机上创建,而不是客户端主机上。对于此语句,输出文件不能已经存在,因为允许覆盖文件构成安全风险。此方法适用于任何类型的数据文件,但仅保存表格数据,不包括表格结构。 | ||
第40行: | 第40行: | ||
在进行增量备份时(包含自上次完全备份或增量备份以来发生的所有更改),您应该使用FLUSH | 在进行增量备份时(包含自上次完全备份或增量备份以来发生的所有更改),您应该使用FLUSH LOGS命令来轮换二进制日志。完成后,您需要将从上次完全备份或增量备份时刻到倒数第二个二进制日志之间的所有二进制日志复制到备份位置。这些二进制日志就是增量备份;在恢复时,您可以按照“时点恢复(增量恢复)”中的说明应用它们。下次进行完全备份时,您还应该使用FLUSH LOGS或mysqldump --flush-logs命令来轮换二进制日志。 | ||
2023年7月13日 (四) 16:21的最新版本
使用MySQL Enterprise Backup进行热备份
MySQL Enterprise Edition的客户可以使用MySQL Enterprise Backup工具对整个实例或选定的数据库、表等进行物理备份。该工具支持增量备份和压缩备份功能。相比于诸如mysqldump命令等逻辑备份技术,备份物理数据库文件可以加快恢复速度。使用热备份机制可以复制InnoDB表(理想情况下,InnoDB表应占据大部分数据)。而其他存储引擎的表则使用温备份机制进行复制。
使用mysqldump进行备份
mysqldump程序可用于备份数据。它可以备份各种类型的表格。
对于InnoDB表,可以通过在mysqldump命令中使用--single-transaction选项进行在线备份,而无需对表格进行锁定。
通过复制表文件进行备份
MyISAM表可以通过复制表文件(*.MYD、*.MYI文件以及关联的*.sdi文件)进行备份。要获得一致的备份,需要停止服务器或锁定并刷新相关表格:
FLUSH TABLES tbl_list WITH READ LOCK;
只需要读锁定即可,这样其他客户端在您复制数据库目录中的文件时仍可以继续查询表格。执行刷新操作是为了确保在开始备份之前所有活动的索引页都被写入磁盘。
只要服务器没有在进行更新操作,您也可以通过简单地复制表文件来创建二进制备份。(但请注意,如果数据库中包含InnoDB表,表文件复制方法将无法使用。此外,即使服务器没有主动更新数据,InnoDB仍可能在内存中缓存已修改的数据且尚未刷新到磁盘上。)
创建分隔文本文件备份
要创建包含表格数据的文本文件,可以使用SELECT * INTO OUTFILE 'file_name' FROM tbl_name语句。该文件将在MySQL服务器主机上创建,而不是客户端主机上。对于此语句,输出文件不能已经存在,因为允许覆盖文件构成安全风险。此方法适用于任何类型的数据文件,但仅保存表格数据,不包括表格结构。
另一种创建文本数据文件(以及包含备份表的CREATE TABLE语句的文件)的方法是使用带有--tab选项的mysqldump命令。
要重新加载分隔文本数据文件,请使用LOAD DATA或mysqlimport命令。
通过启用二进制日志进行增量备份
MySQL支持使用二进制日志进行增量备份。二进制日志文件提供了在执行备份后对数据库进行的更改的复制信息。因此,为了使服务器能够恢复到特定时间点,必须在服务器上启用二进制日志记录,这是MySQL 8.0的默认设置。
在进行增量备份时(包含自上次完全备份或增量备份以来发生的所有更改),您应该使用FLUSH LOGS命令来轮换二进制日志。完成后,您需要将从上次完全备份或增量备份时刻到倒数第二个二进制日志之间的所有二进制日志复制到备份位置。这些二进制日志就是增量备份;在恢复时,您可以按照“时点恢复(增量恢复)”中的说明应用它们。下次进行完全备份时,您还应该使用FLUSH LOGS或mysqldump --flush-logs命令来轮换二进制日志。
使用副本进行备份 如果在备份时服务器出现性能问题,一种有助于解决问题的策略是设置复制,并在副本上进行备份,而不是在源服务器上进行备份。
如果您正在备份一个副本,不论选择的备份方法如何,都应该在备份副本的数据库时备份连接元数据存储库和应用程序元数据存储库。在恢复副本数据后,这些信息是恢复复制所必需的。如果您的副本正在复制LOAD DATA语句,还应备份副本在此目的地使用的目录中存在的任何SQL_LOAD-*文件。副本需要这些文件来恢复任何中断的LOAD DATA操作的复制。此目录的位置是系统变量replica_load_tmpdir(MySQL 8.0.26及更高版本)或slave_load_tmpdir(MySQL 8.0.26之前版本)的值。如果服务器未使用设置该变量启动,则该目录位置是tmpdir系统变量的值。
恢复损坏的表格 如果必须恢复损坏的MyISAM表格,首先尝试使用REPAIR TABLE或myisamchk -r进行修复。在99.9%的情况下,这应该会起作用。
使用文件系统快照进行备份
如果您使用的是Veritas文件系统,可以按照以下步骤进行备份:
- 从客户端程序中执行FLUSH TABLES WITH READ LOCK。
- 在另一个shell中执行mount vxfs snapshot。
- 从第一个客户端中执行UNLOCK TABLES。
- 从快照中复制文件。
- 卸载快照。
其他文件系统,如LVM或ZFS,可能也具有类似的快照功能。