本节总结了一些进行备份的一般方法。
使用MySQL企业备份进行热备份
MySQL企业版的客户可以使用MySQL企业备份产品要做物理整个实例或选定的数据库、表或两者的备份。本产品包括以下功能增量而且压缩备份。备份物理数据库文件比逻辑技术(如, mysqldump
命令。InnoDB
方法复制表热备份机制。(理想情况下,InnoDB
表格应该代表绝大多数数据。)方法复制来自其他存储引擎的表热备份机制。有关MySQL企业备份产品的概述,请参见第30.2节,“MySQL企业备份概述”.
使用mysqldump进行备份
的, mysqldump程序可以进行备份。它可以备份各种表。(见7.4节,“使用mysqldump进行备份”.)
为InnoDB
方法执行不对表加锁的在线备份是可能的——单独的事务
选项, mysqldump.看到第7.3.1节“建立备份策略”.
通过复制表文件进行备份
MyISAM表可以通过复制表文件(*.MYD
,*.MYI
相关文件,* .sdi
文件)。要获得一致的备份,请停止服务器或锁定并刷新相关表:
刷新表tbl_list读锁;
你只需要一个读锁;这使其他客户端能够在您复制数据库目录中的文件时继续查询表。需要进行刷新,以确保在启动备份之前将所有活动索引页写入磁盘。看到第13.3.6节,“LOCK TABLES和UNLOCK TABLES语句”,第13.7.8.3节," FLUSH语句".
只要服务器不更新任何内容,您还可以通过复制表文件来创建二进制备份。(但是请注意,如果您的数据库包含InnoDB
表。而且,即使服务器没有主动更新数据,InnoDB
可能仍有已修改的数据缓存在内存中,但未刷新到磁盘。)
该备份方式的示例请参见第13.2.5节,“IMPORT TABLE语句”.
进行分隔文本文件备份
要创建包含表数据的文本文件,可以使用Select * into outfile '
.该文件是在MySQL服务器主机上创建的,而不是在客户端主机上。对于这条语句,输出文件不能已经存在,因为允许文件被覆盖会带来安全风险。看到第13.2.10节," SELECT语句".此方法适用于任何类型的数据文件,但只保存表数据,而不保存表结构。file_name
“从tbl_name
另一种创建文本数据文件(以及包含创建表
语句)使用, mysqldump与——选项卡
选择。看到第7.4.3节,“用mysqldump以分隔文本格式转储数据”.
若要重新加载分隔文本的数据文件,请使用加载数据
或mysqlimport.
通过启用二进制日志进行增量备份
MySQL支持使用二进制日志进行增量备份。二进制日志文件为您提供了将在执行备份之后所做的更改复制到数据库所需的信息。因此,为了允许服务器恢复到某个时间点,必须在其上启用二进制日志记录,这是MySQL 8.0的默认设置;看到第5.4.4节“二进制日志”.
当您希望进行增量备份(包含自上一次完全备份或增量备份以来发生的所有更改)时,您应该使用刷新日志
.完成此操作后,您需要将所有二进制日志复制到备份位置,这些日志的范围从最后一次完全备份或增量备份的时刻到倒数第二个时刻。这些二进制日志是增量备份;在恢复时,您可以在第7.5节,“时间点(增量)恢复”.下次执行完全备份时,还应该使用刷新日志
或, mysqldump——flush-logs.看到“mysqldump -一个数据库备份程序”4.5.4节.
使用副本进行备份
如果在进行备份时服务器出现性能问题,一种可能有帮助的策略是设置复制并在副本(而不是源)上执行备份。看到第17.4.1节“使用复制进行备份”.
如果备份副本,则应该备份其连接元数据存储库和应用程序元数据存储库(请参阅第17.2.4节“中继日志和复制元数据存储库”)备份副本的数据库时,无论您选择何种备份方法。在恢复副本的数据后,总是需要此信息来恢复复制。如果您的副本正在复制加载数据
声明,你也应该备份任何SQL_LOAD - *
副本用于此目的的目录中存在的文件。复制需要这些文件来恢复任何中断的复制加载数据
操作。该目录的位置是系统变量的值replica_load_tmpdir
(从MySQL 8.0.26)slave_load_tmpdir
(在MySQL 8.0.26之前)。如果服务器不是用该变量集启动的,则目录位置为tmpdir
系统变量。
恢复腐败的表
如果你必须恢复MyISAM
已损坏的表,请尝试使用修理表
或myisamchk - r第一。这在99.9%的情况下都是有效的。如果myisamchk失败了,看到第7.6节,“MyISAM表维护和崩溃恢复”.
使用文件系统快照进行备份
如果您使用的是Veritas文件系统,您可以像这样进行备份:
在其他文件系统中也可以使用类似的快照功能,例如LVM或ZFS。