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