mysql backup/restore 大型数据集(超过 15GB)的策略

mysql backup/restore strategy for large datasets (more than 15GB)

我正在处理几个增长非常快的数据库。现在它大约是 12GB,在接下来的几个月里它会超过 15GB。在这种情况下,我在cronjob中只有传统的备份过程mysqldump 运行。我发现整个数据库的备份和恢复时间(数小时,甚至数天)明显延迟。知道物理备份比逻辑备份快得多,我找到了这两个,但由于某些限制和公司政策无法实施。

MySQL Enterprise Backup : 这是商业

Percona XtraBackup :Percona 附带此工具专门用于 Linux 环境。并非所有公司都会同意使用 3rd 方工具,即使它是开源的。

特别是InnodbMyISAM混用的大数据库,请指点其他更好的备份和恢复机制。在 snapshots

上寻找一些好的建议

首先,我会尝试将“--single-transaction”与 mysqldump 一起使用,只要你所有的 tables 都是 innodb 并且你没有在期间修改 table 结构倾倒。这将尝试从单个时间点进行转储,但前提是可以在不锁定 tables 的情况下执行。

我还没有尝试过 xtrabackup,但看起来它也能满足您的需求。

您也可以尝试设置 mysql 从从服务器的复制和转储。

最后是 LVM 快照,但这需要更多的工作。

我个人使用过 Percona XtraBackup 工具集。当它完成正常存储时,它会做一些简单的过程来获取 innodb binlog 中所有已提交的数据。阅读有关 MySQL 企业备份也可以做到这一点。

增量 backups/snapshots 可以同时使用 Percona XtraBackup 和 MySQL Enterprise,如果您正在寻找的话。

使用只读slave,可以保持读锁分离。如果您使用 mysql 免费工具进行备份,这将使您的锁不会被主读取。

如果你有一个从站,另一个选择是你可以关闭从站并在某处 rsync 数据进行备份。