首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >备份MySQL DB的最佳实践

备份MySQL DB的最佳实践
EN

Database Administration用户
提问于 2013-09-27 16:02:04
回答 3查看 37.5K关注 0票数 28

我最近发现,我们使用MySQL运行的生产web服务器没有定期备份(或者根本没有备份)。我习惯于备份Server,但对MySQL数据库没有太多的经验。使用mysqldump或任何其他DB备份工具的最佳实践是什么?

我可能会安排日程,这样它就可以在夜间完成,然后用我的备份系统备份文件。

谢谢。

EN

回答 3

Database Administration用户

回答已采纳

发布于 2013-10-04 11:18:57

采用

服务器备份的MySQL最佳实践:

MySQL复制

在MySQL中设置复制。您必须设置主服务器和从服务器。所有对数据库的读写都可以转到您的从服务器上。拥有复制的优点是您可以从从服务器获取备份而不中断主服务器,您的应用程序将继续在Master上工作而不需要任何停机时间。

使用MySQL转储

如果你的数据集很小(我知道“小”是一个相对术语。)要对其进行限定,假设是<10 it ),那么mysqldump可能会工作得很好。这很简单,在线,而且非常灵活。mysqldump能做的只有几件事:备份所有的东西,或者只是备份特定的数据库或表,只备份DDL,优化转储,以便更快地恢复,从而使结果的sql文件与其他RDBMSes和更多的东西更加兼容。

但是,最重要的选项与备份的一致性有关。我最喜欢的选项是:--单事务:如果(并且只有当)表使用InnoDB存储引擎时,此选项提供一致的备份。如果您有任何非只读的MyISAM表,那么在备份它们时不要使用此选项。-master-data=2:此选项将确保转储是一致的(除非您添加了选项--单事务),否则执行一个锁所有表。

关于mysqldump的最后注意事项:请记住,恢复时间可能比备份时间长得多。这将取决于几个因素,例如,有多少个索引。

LVM快照

对于那些拥有较大数据集的人来说,物理备份是可行的。虽然您可以进行冷备份(即关闭MySQL服务、复制数据目录、重新启动服务),但许多人不希望停机。我最喜欢的解决方案是快照。这可能是热的(对于InnoDB),或者需要一个简短的锁(对于MyISAM)。不要忘记包含所有的数据(包括ib_logfiles)。Lenz提供了一个很好的实用程序来帮助解决这个问题:http://www.lenzg.net/mylvmbackup/

使用MySQL企业备份

使用MySQL企业备份的优点:

  • InnoDB表的“热”备份完全在线进行,而不阻塞只备份特定表或表空间。
  • 只备份自先前备份后更改的数据。
  • 压缩备份-节省存储高达90%和更多..。

参考资料:http://www.mysql.com/products/enterprise/backup/features.html http://www.mysql.com/products/enterprise/backup.html

票数 32
EN

Database Administration用户

发布于 2013-09-27 19:27:28

我建议设置一个用于备份的专用复制品。这将使您可以在不影响主任务的情况下执行任何备份任务。由于这确实增加了体系结构的复杂性,因此您需要监视复制滞后,以确保一切正常工作。

至于实际的过程,您有两个选项,没有任何第三方工具。快照可以使用mysqldump命令(假设您使用的是InnoDB):mysqldump --all-databases --single-transaction > all_databases.sql。根据数据大小,最好关闭MySQL并直接备份数据文件。当副本被重新启动时,它将重播主接收到的所有事件。如果您使用的是MySQL企业,那么mysqlbackup实用程序就会这样做。

可以通过在副本上启用二进制日志来进行增量备份。显然,这只记录了变异数据的事件,因此您需要将其与上面的快照结合起来。

票数 9
EN

Database Administration用户

发布于 2022-07-11 15:21:33

应用于所有DBMS的

通用实践,包括MySQL

Keep 3 copies of any important file: 1 primary and 2 backups Keep the files on 2 different media types to protect against different types of hazards Store 1 copy offsite (e.g., outside your home or business facility)

  • 政府财政司司长(祖父-父子)是一种基于周期的备份和存储策略,每天、每周和每个月(或类似的时间表)进行备份。这样的备份保留策略允许在数据可回收性和备份基础设施所花费的成本之间找到一个合理的平衡。
  • 压缩。备份是很好的压缩。考虑使用7zip。此实用工具允许您微调所消耗的资源(线程数、处理器数或压缩算法)。
  • 加密。如果您的备份是加密的,那么如果您的存储被破坏,黑客将无法访问您的数据。
  • 自动化。备份应该是自动化的,如果备份成功或失败,自动化脚本应该发送通知。
  • 测试。在测试环境中不时地再现紧急情况和从备份中恢复测试非常重要。
  • 后备外包。自己执行一个完美的备份是可能的,但是编写脚本和维护这些脚本需要花费很多时间。你不需要自己做任何事。有许多付费服务将负责备份。

MySQL

的特定良好实践

选择如何创建备份的方法,

mysqldump.sql格式创建逻辑备份。这是一个与MySQL服务器一起安装的标准实用程序。这个工具对小型数据库很好。它支持Windows和Linux。

mysqlbackup创建物理数据库备份。此实用程序包含在MySQL企业版包中。通过mysqlbackup工具,备份比通过mysqldump执行得更快。这些备份只能还原到与原始数据库相同的MySQL服务器版本。它非常适合那些已经购买了MySQL企业版的人。它支持Windows和Linux。

XtraBackup创建物理备份。通过XtraBackup创建的备份非常类似于通过mysqlbackup创建的备份。由Percona公司开发,免费分发。比较实用程序可以查看这里。Percona XtraBackup适用于大型数据库。它只支持Linux,但经过一些努力,它也可以通过docker (链接)在Windows上运行。

执行增量备份

增量备份允许显著增加还原点的数量。

如果您通过mysqldump执行备份,则建议也备份绑定日志。对于视窗Linux有单独的说明。

mysqlbackup支持增量备份。链接

XtraBackup也支持增量备份。链接

增量备份与GFS备份策略非常匹配。完全备份可以是每周和每月进行,增量备份则是每天进行的。

考虑引擎的特性:

InnoDB是MySQL的默认引擎。由于行级锁定、行版本控制和事务支持,这也是一个理想的备份引擎。

但是,如果使用带有替代引擎的表,则了解它们在备份期间是如何工作的。为了保持一致性,在执行备份时,应该启用只读模式.

关于复制

的几句话

数据库可能存在两种问题:

  • 对物理媒体的损坏,如服务器故障
  • 数据损坏,如意外删除数据

复制只保护防止第一个问题。如果删除重要数据,这将立即传播到副本。

备份保护不受这两种失败方案的影响。

最好的方法是对副本执行备份,这样就可以卸载主服务器。

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

https://dba.stackexchange.com/questions/50664

复制
相关文章

相似问题

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