首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Mysql备份的最佳实践是什么?

问Mysql备份的最佳实践是什么?
EN

Stack Overflow用户
提问于 2014-05-12 08:52:18
回答 3查看 6.8K关注 0票数 5

我们有一个php应用程序和mysql服务器运行在我们的生产服务器之一。Mysql服务器目前的容量是4GB,打算增长到几十甚至几百GB。

我想知道的是,在任何情况下,应用程序必须处于活动状态时,mysql数据库备份的最佳实践是什么?还有什么更好的方法是让mysql复制服务器运行备份脚本,还是在实时服务器上运行呢?如果需要的话,我们有可能增加额外的服务器。我需要在哪里存储mysql转储?是否建议ftp将mysql备份文件复制到远程服务器。

如果服务器实例数量没有问题,那么组织web应用程序备份的最佳实践是什么?

EN

回答 3

Stack Overflow用户

发布于 2014-05-12 10:00:52

MySQL备份方法记录在MySQL文档上。

理想的备份解决方案将是使用MySQL企业备份。这是一种在甲骨文商店销售的授权产品。与mysqldump相比,它非常快。

MySQL企业备份:对MySQL数据库执行热备份的授权产品。它在备份InnoDB表时提供了最大的效率和灵活性,但也可以备份MyISAM和其他类型的表。

如果您正在寻找MySQL社区版本的免费解决方案,那么您可以安装另一个复制服务器,或者运行mysqldump进行备份,或者进行原始数据备份。在复制服务器上备份期间,主主数据库将运行。由于您的数据很大或将变得更大,因此建议备份原始数据文件。它基本上是一个从磁盘复制数据和日志文件的过程。详细信息将在MySQL文档上解释。

对于较大的数据库,其中mysqldump将不切实际或低效,您可以备份原始数据文件。使用原始数据文件选项还意味着您可以备份二进制日志和中继日志,这将使您能够在从服务器故障时重新创建从日志。

最后,您应该将备份文件复制到同一台磁盘上的另一个物理磁盘,以便从磁盘故障中恢复,或者复制到另一个物理服务器,以便轻松地从完全服务器故障中恢复。

票数 3
EN

Stack Overflow用户

发布于 2020-12-19 19:56:05

复制是防止硬件错误的东西,例如硬盘崩溃。

备份-防止软件错误,例如,由于人为因素,数据已从表中删除。

通过运行实用程序在副本上创建备份,将这两种技术结合起来无疑是很好的做法。这不仅减少了产品数据库的负载,而且还涵盖了更多的恢复方案。

在硬件错误的情况下,您可以从副本中恢复最最新的数据,如果数据损坏,您可以考虑从什么日期开始使用备份进行恢复。如果您的主服务器和副本都失败了,那么备份也会拯救您。

做备份的最好方法是什么?

米斯德是小型数据库的一个很好的解决方案。这是一个用于创建逻辑备份nad的实用程序,它包含在MySQL服务器中。在输出端,该实用程序创建一个.sql文件来重新创建数据库。

对于大型数据库,最好使用物理备份。关于如何做到这一点,有两种方法。

mysqlbackup是MySQL企业解决方案中包含的实用工具。因此,您将得到一个二进制文件。这样的备份比使用mysqldump创建的要快得多,而且服务器上的负载也较少。

来自Percona的xtrabackup很像MySQL企业备份实用程序,但它是免费的。更详细的比较可以找到这里。

应该多久备份一次?

备份的频率越高,越好,但是这样的备份不会太多--因为备份存储中的空间会耗尽。有两种方式:

  1. 在备份频率和存储时间之间找到折衷方案。
  2. 使用增量备份。上述实用程序支持增量备份,但此类备份的管理要复杂得多(请阅读更多这里)。

备份应该存储在哪里?

任何您喜欢的地方,但不是在相同的地方与MySQL服务器。总的来说,我认为使用云存储是一个不错的选择。现在几乎每个人都有一个命令行接口。

如何自动备份?

建立定期备份的过程应该是自动化的,只有在失败的情况下,一个人才应该介入。一个良好的备份过程应该包括以下步骤:

  1. 创建备份副本
  2. 压缩加密
  3. 上传到存储
  4. 发送成功\失败通知
  5. 从存储中删除旧备份(使其不会溢出)

实现这一点的最简单脚本可以找到,例如,这里。

还有别的吗?

是的,最重要的是不要创建备份,然后恢复备份。因此,定期测试恢复场景是最佳做法。

备份愉快!

票数 2
EN

Stack Overflow用户

发布于 2018-09-19 13:14:04

更好的方法是让mysql复制服务器运行备份脚本,或者在实时服务器上运行。

这取决于您的db大小(以及使用mysqldump转储它所需的时间)和您的可靠性要求。

如果您的db相对较小,mysqldump在几秒钟内或几分钟内将其转储,那么只运行预定备份就可以了。在大多数情况下,每天备份就足够了,在应用程序大部分空闲的时候(在客户睡觉的晚上)运行备份。为此,您可以使用一个很好的工具自动备份:它关心调度和备份轮转,只需将其添加为cron任务并设置一次配置即可。

只有在下列情况下才需要设置副本:

  1. 您的备份需要很长时间(数十分钟或小时)才能完成,所以您不能只停止服务那么长时间。
  2. 在主db崩溃的情况下,您不能丢失任何历史记录。例如,如果您处理金融事务,您可能希望确保在主db服务器死掉时不会丢失任何东西。

在这种情况下,您可能需要一个备份副本。尽管您必须理解添加复制会增加一个新的问题层:副本可能会失去同步,但会悄然崩溃(当主程序和应用程序运行良好时,您不会注意到)。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23604708

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档