我如何在MySQL中备份大型数据库? 数据库的文件夹大小超过5GB,包含1.5个拉赫表。
我试图通过phpmyadmin备份服务器,但没有运气。
在5GB的数据大小,你几乎肯定不能也不应该使用一个转储(myslqdump,phpmyadmin等)作为备份。 原因不是备份。 原因是因为还原将需要很长时间,可能会有很多天,具体取决于表结构和服务器硬件。 您需要某种types的文件备份。 无论是使用LVM快照还是使用Percona XtraBackup或者其他软件,都将取决于您使用的存储引擎,硬件,文件系统以及其他一些因素。 这个问题太复杂了,没有更多的细节来回答,但我可以简化如下:
检查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最适合您,取决于系统负载。