首页 / 知识
如何在MySQL中进行备份?
2023-04-14 08:55:00

How do I do backups in MySQL?本问题已经有最佳答案,请猛点这里访问。
如何在MySQL中进行备份? 我希望有比每隔" x"小时运行一次mysqldump更好的东西。 是否有类似SQL Server的功能,您可以每天进行一次完整备份,然后每小时进行一次增量备份,因此,如果数据库死了,则可以还原到最新的备份? 类似于数据库日志,只要日志不会消失,您就可以恢复到数据库死亡的确切位置? 此外,这些东西如何影响锁定? 您可能希望查看增量备份。 mysqldump是一种合理的方法,但是请记住,对于某些引擎,这将在转储期间锁定表-这对于大型生产数据集具有可用性问题。 一个明显的替代方法是来自Maatkit的mk-parallel-dump(http://www.maatkit.org/),您应该真正检查自己是否是mysql管理员。这将使用mysqldump并行转储多个表或数据库,从而减少了转储所需的总时间。 如果您在复制设置中运行(并且如果将MySQL用于生产中的重要数据,则没有任何不这样做的借口),从专用于此目的的复制从站进行转储将防止任何操作锁定问题不会引起麻烦。 下一个明显的替代方法-至少在Linux上-是使用LVM快照。您可以锁定表,快照文件系统,然后再次解锁表。然后使用该快照的装载启动另一个MySQL,然后从那里转储。此处介绍了这种方法:http://www.mysqlperformanceblog.com/2006/08/21/using-lvm-for-mysql-backup-and-replication-setup/ 现在,我开始听起来像是该产品的市场营销人员。我在这里回答了一个问题,然后在这里再次回答了另一个问题。 简而言之,请尝试从webyog尝试sqlyog(针对您的企业)来满足所有mysql要求。它不仅可以安排备份,还可以安排同步,因此您实际上可以将数据库复制到远程服务器。 它具有免费的社区版和企业版。我向您推荐后者,尽管我也建议您从comm版本开始,并首先了解您的喜好。 Percona伙计们开源了innobackup的替代品... Xtrabackup https://launchpad.net/percona-xtrabackup/ 阅读有关XtraDB的文章 我使用mysqlhotcopy,这是一种用于本地MySQL数据库和表的快速在线热备份实用程序。我对此很满意。 我使用一个简单的脚本将mysql数据库转储到tar.gz文件中,并使用gpg对其进行加密,然后将其发送到邮件帐户(Google Mail,但这确实无关紧要)。 该脚本是Python脚本,基本上运行以下命令,并通过电子邮件发送输出文件。 这是整个备份。它还具有Web备份部分,仅tar / gzips /加密文件。这是一个相当小的站点,因此Web备份少于20MB,因此可以毫无问题地发送到GMail帐户(MySQL转储很小,压缩后约为300KB)。这是非常基础的,无法很好地扩展。我每周使用cron运行一次。 我不太确定我们应该如何在回答中加入冗长的脚本,因此我只将其作为代码块使用。.
您可能想用MySQL复制来补充当前的脱机备份方案。 然后,如果您遇到硬件故障,则可以交换计算机。如果您迅速发现故障,您的用户甚至不会注意到任何停机时间或数据丢失。 您可以通过带有" --single-transaction --skip-lock-tables"选项的mysqldump进行InnoDB数据库/表的完全转储,而无需锁定(停机)。对于每周/每天/每小时二进制日志增量制作快照非常有效(#使用二进制日志启用增量备份)。 这是一个非常可靠的Linux shell解决方案。我已经使用了多年了: http://sourceforge.net/projects/automysqlbackup/
二进制日志可能是进行增量备份的正确方法,但是如果您不信任二进制文件格式的永久存储,则可以使用ASCII方式进行增量备份。 mysqldump的格式不是很坏,主要问题是它把一张表输出为一行。以下琐碎的sed将其输出沿记录边界分割: mysqldump --opt -p | sed -e" s /,(/,\\ 生成的文件对diff非常友好,并且我已经相当成功地将它们保存在标准SVN存储库中。如果发现上一个版本令人讨厌并且需要上周的版本,那么这也可以使您保留备份的历史记录。 运行mysql服务器的增量或连续备份的正确方法是使用二进制日志。 首先,锁定所有表或关闭服务器。使用mysql dump进行备份,或仅复制数据目录。您只需要执行一次此操作,或者在任何时候想要完整备份。 在备份服务器之前,请确保已启用二进制日志记录。 要进行增量备份,请登录服务器并发出FLUSH LOGS命令。然后备份最近关闭的二进制日志文件。 如果拥有所有innodb表,则使用带有--single-transaction选项的inno热备份(非免费)或mysqldump更为简单(您最好有很多内存来处理事务)。 > 直接备份mysql数据库文件夹的问题是,备份不一定是一致的,除非您在备份过程中进行了写锁定。 我运行一个遍历所有数据库的脚本,在每个数据库上执行mysqldump和gzip到备份文件夹,然后将该文件夹备份到磁带。 但是,这意味着不存在增量备份之类的事情,因为夜间转储是完整的转储。但是我认为这可能是一件好事,因为从完整备份还原将比从增量备份还原要快得多。而且,如果要备份到磁带,则可能意味着需要在收集磁带之前先收集许多磁带。可以进行完全还原。 在任何情况下,无论采用哪种备份计划,请务必进行一次试还原以确保其有效,并了解可能需要多长时间以及确切地需要执行哪些步骤。 @Jake, 感谢您的信息。 MySQL内置了什么功能来进行像样的备份吗? MySQL官方页面甚至建议诸如"好吧,只要没有更新就可以复制文件"之类的东西。 听起来像您在谈论事务回滚。 因此就您的需求而言,如果您的日志包含所有历史查询,那么这是否已经是备份?为什么需要增量备份,它基本上是数据库日志中所有信息的冗余副本? 如果是这样,为什么不只使用mysqldump并每隔一段时间进行一次备份? @Daniel, 如果您仍然感兴趣,可以使用Paul Galbraith共享的一种新的(对我来说是新的)解决方案,该工具允许从oracle在线备份名为ibbackup的innodb表,并引用Paul,
更多细节可以在Paul的博客中找到 |
最新内容
相关内容
linux关机命令日志?
linux关机命令日志?,系统,工作,命令,时间,用户,表示,终端,进程,操作,指令,linux关机命令shutdown命令 shutdown命令用于安全关闭Linux系统。执linux如何备份命令?
linux如何备份命令?,网站,系统,备份,设备,数据,地址,情况,较大,通讯,密码,利用命令进行简单的增量文件夹备份(win/linux)使用tar命令进行备份:t归档日志命令linux?
归档日志命令linux?,数据,工作,公司,位置,代理,信息,日志,对比,最新,系统,Oracle归档模式的命令及参数说明1、修改为归档模式sys@JSL alter dalinux进程运行命令?
linux进程运行命令?,系统,工作,状态,地址,信息,进程,基础,命令,管理,软件,linux常用命令有哪些1、linux系统常用操作命令linux系统常用操作命文件备份命令linux?
文件备份命令linux?,网站,系统,设备,文件,软件,网络,工具,环境,数据,地址,linux怎么备份数据库(linux如何备份mysql数据库)1、将MYSQL数据放在linux备份对应的命令?
linux备份对应的命令?,系统,文件,图片,设备,认证,密码,通讯,较大,命令,备份,Linux下数据备份命令scp、rsync和后台运行1、scp 是secure copy的linux中备份的命令?
linux中备份的命令?,系统,数据,网络,设备,软件,最新,认证,备份,命令,文件,Linux备份与压缩命令使用说明例1:将压缩文件text.zip在当前目录下解linux运行vim命令?
linux运行vim命令?,系统,工具,官方网站,模式,基础,数据,代码,环境,入口,命令,如何使用Linux系统中的Vim编辑器1、vim编辑器的三种模式:一般模式linux监控命令运行?
linux监控命令运行?,系统,工作,地址,信息,工具,情况,标准,环境,命令,状态,linux服务器监控的几个方法和命令uptime 该命令直观的显示了服务器清空日志命令linux?
清空日志命令linux?,系统,信息,时间,文件,日志,工作,价值,工具,服务,设备,linux定时清理nohup命令下产生的日志1、nohup命令的缺点:日志文件文linux日志外发命令?
linux日志外发命令?,系统,信息,时间,数据,服务,公共,实时,位置,情况,日志,Linux中的查看服务器运行的日志的命令是什么呢第一种:查看实时变化的linux数据库查找命令?
linux数据库查找命令?,位置,名称,状态,服务,软件,信息,系统,命令,名字,密码,在linux中如何用命令查找文件在哪使用查找命令 “find”命令允许