Mysql大型数据库备份

我如何在MySQL中备份大型数据库? 数据库的文件夹大小超过5GB,包含1.5个拉赫表。

我试图通过phpmyadmin备份服务器,但没有运气。

在5GB的数据大小,你几乎肯定不能也不应该使用一个转储(myslqdump,phpmyadmin等)作为备份。 原因不是备份。 原因是因为还原将需要很长时间,可能会有很多天,具体取决于表结构和服务器硬件。 您需要某种types的文件备份。 无论是使用LVM快照还是使用Percona XtraBackup或者其他软件,都将取决于您使用的存储引擎,硬件,文件系统以及其他一些因素。 这个问题太复杂了,没有更多的细节来回答,但我可以简化如下:

  • 无论你做什么都应该是以恢复为重点,而不是以备份为重点,所以首先确定你的RPO(恢复点目标)和RTO(恢复时间目标),并确保你的解决scheme将满足这些要求。
  • 如果你只使用InnoDB,或者主要是InnoDB,除了系统表和其他一些小而不经常更新的表,那么Percona XtraBackup可能是一个不错的select。
  • 否则,您应该考虑文件系统(LVM)快照技术。
  • 如果你不能做到这一点,那么你可能需要从副本进行备份,无论如何你也可以这样做。 但是,首先设置副本需要备份,而且还需要使用Percona Toolkit的pt-table-checksum来定期validation副本的数据完整性(每周至less)。

检查MySQL二进制日志 。 它可以用来设置增量备份。 您也可以使用mysqldump ,但是如果数据库太大,可能会出现一些停机时间来执行完整备份。

我们使用Percona XtraBackup。 它将做大型数据库的非阻塞备份。 这是相当快的。 而且一直很可靠。 它创build数据库的可用副本。 我们备份到一个单独的分区,数据可以从那里复制到数据分区,或者我们可以交换分区直接使用备份。 它是免费的。

对于大型的活动数据库,可以创build一个可以脱机备份的复制副本。

然后可以通过停止复制并运行mysqldump或停止mysqld并将物理文件夹复制到备份位置来完成备份。 http://www.howtoforge.com/back_up_mysql_dbs_without_interruptions

无论哪种方式,它可能是最好直接做到这一点,而不是通过phpMyAdmin,因为转储文件将是太大,浏览器不能有效处理。

一旦mysql.com重新上线,请点击这里阅读http://dev.mysql.com/doc/refman/5.1/en/backup-methods.html

我的一个系统的数据发生了变化,使用binlog作为备份是没有意义的。 ibdata文件有131GB。 为此,我使用以下内容:

/usr/bin/mysqldump -u $1$MYSQLPASSWORD -f --opt --single-transaction --all-databases | lzma -3 

Bacula然后拿起产生的压缩文件,并将其写入系统备份,与任何其他文件一样。

请注意,当你说“文件夹大小”,你意味着你没有使用InnoDB。 这可能会使一致的快照更多地成为挑战。

其他一些常用方法包括快照+二进制日志增量,文件系统快照和备用从服务器。 还有Percona工具可以直接从InnoDB文件进行热备份读取。 哪种解决scheme最适合您,取决于系统负载。