ITPub博客

首页 > 数据库 > > 7.2 数据库备份方式

7.2 数据库备份方式

作者:飘絮絮絮丶 时间:2020-05-14 11:56:41 0 删除 编辑

参考官方文档:

dev.mysql.com/doc/refma




使用MySQL企业备份进行热备份


MySQL企业版的客户可以使用MySQL企业备份产品对整个实例或选定的数据库,表或两者进行物理备份。 本产品包含增量备份和压缩备份的功能。 备份物理数据库文件使恢复比诸如mysqldump命令等逻辑技术快得多。 InnoDB表使用hot备份机制进行复制。 (理想情况下,InnoDB表应该占据绝大部分数据。)其他存储引擎的表使用warm(只读)备份机制进行复制。



使用 mysqldump 创建备份


mysqldump程序可以进行备份。 它可以备份各种表。 (请参见第7.4节“使用mysqldump进行备份”。)


对于InnoDB表,可以使用mysqldump的--single-transaction选项执行不锁定表的online备份。



通过拷贝表文件进行备份


对于使用自己的文件表示每个表的存储引擎,可以通过复制这些文件来备份表。 例如,MyISAM表存储为文件,因此可以通过复制文件(* .frm,* .MYD和* .MYI文件)轻松进行备份。 要获得一致的备份,请停止服务器或锁定并刷新相关表格:


FLUSH TABLES tbl_list WITH READ LOCK;


你只需要一个读锁; 这使其他客户端可以在制作数据库目录中的文件副本时继续查询表。 需要刷新以确保在开始备份之前将所有活动的索引页面写入磁盘。


--这要使用脚本,讲所有的表加上读锁,拷贝完毕后,再释放锁来保证备份数据的一致性。


只要服务器没有更新任何内容,您也可以简单地通过复制所有表文件来创建二进制备份。 (但是请注意,如果数据库包含InnoDB表,表文件复制方法不起作用,即使服务器没有主动更新数据,InnoDB仍可能修改了缓存在内存中的数据,而不是刷新到磁盘。)



使用分隔文本文件备份


要创建包含表格数据的文本文件,可以使用SELECT * INTO OUTFILE 'file_name 'FROM tbl_name。 该文件在MySQL服务器主机上创建,而不是在客户端主机上创建。 对于此语句,输出文件不能存在,因为允许文件被覆盖会构成安全风险。 请参见第13.2.9节“SELECT语法”。 此方法适用于任何类型的数据文件,但仅保存表数据,而不保存表结构。



创建文本数据文件的另一种方式(以及包含备份表的CREATE TABLE语句的文件)是使用mysqldump和--tab选项。



要重新加载分隔文本数据文件,请使用LOAD DATA INFILE或mysqlimport。




通过启用二进制 日志 来进行增量备份



MySQL支持增量备份:您必须使用--log-bin选项启动服务器才能启用二进制日志记录; 请参见第5.4.4节“二进制日志”。 二进制日志文件为您提供复制数据库更改所需的信息,这些更改是在执行备份的位置之后进行的。 在您想要进行增量备份(包含自上次完整备份或增量备份以来发生的所有更改)的时候,您应该使用FLUSH LOGS 轮转二进制日志。 完成后,您需要将所有二进制日志复制到备份位置,范围从最后一次完整备份或增量备份时刻到最后一次备份时刻之间的所有二进制日志。 这些二进制日志是增量备份; 在恢复时,按照第7.5节“使用二进制日志进行时间点恢复(增量)恢复”中的说明应用它们。 下次进行完全备份时,还应该使用FLUSH LOGS或mysqldump --flush-logs轮转 二进制日志。



使用 复制 slaves 来进行备份



如果在进行备份时您的主服务器出现性能问题,一种可以帮助的策略是设置复制并在从服务器而不是主服务器上执行备份。



如果要备份从复制服务器,则备份从属数据库时应备份其主数据库信息和中继日志信息存储库(请参见第16.2.4节“复制中继和状态日志”),无论使用什么备份方法 。 恢复从站的数据后,总需要这些信息文件来恢复复制。 如果您的从站正在复制LOAD DATA INFILE语句,则还应备份从站用于此目的的目录中存在的所有SQL_LOAD- *文件。 从站需要这些文件来恢复任何中断的LOAD DATA INFILE操作的复制。 此目录的位置是--slave-load-tmpdir选项的值。 如果服务器未使用该选项启动,则目录位置是tmpdir系统变量的值。


--不仅仅是备份数据,还需要备份一些额外的信息,来恢复主从复制。



恢复损坏的表


如果您必须还原已损坏的MyISAM表,请尝试使用REPAIR TABLE或myisamchk -r首先恢复它们。 这应该在99.9%的案例中起作用。




使用 文件系统快照进行备份


如果您使用的是Veritas文件系统,则可以像这样进行备份:



  1. 从客户端程序中,执行FLUSH TABLES WITH READ LOCK。
  2. 从另一个shell中,执行mount vxfs快照。
  3. 从第一个客户端执行UNLOCK TABLES。
  4. 复制快照中的文件。
  5. unmount 快照。


类似的快照功能可能在其他文件系统中可用,例如LVM或ZFS。

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/69946831/viewspace-3122341/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2019-09-09

  • 博文量
    2646
  • 访问量
    42316