Percona xtrabackup 是我 500GB MySQL 备份的正确选择吗?

Noa*_*oam 8 mysql innodb myisam backup xtrabackup

我有一个 500GB 的 MySQL 数据库,主要由 Innodb 表和一个大 (200GB) MyISAM 表组成。我当前的备份策略是将 db 文件复制到外部硬盘驱动器。这会导致约 4 小时的停机时间。我的需求:

  1. 低成本。
  2. 恢复时间可能很长。无需实时复制。
  3. 可以处理 1 周到 2 周范围内的数据丢失。
  4. 希望备份的停机时间尽可能短,但最多可以忍受 2 小时。

目前正在考虑尝试迁移到 Percona xtrabackup。它是否适合我的用例?我特别担心它会锁定 MyISAM 表和学习曲线。

Rol*_*DBA 8

从这个声音来看,您可以使用不同的数据库基础架构。

根据您的上述需求,我有一个建议,但需要一些妥协。

建议 #1:在同一服务器但不同磁盘上使用 MySQL 复制

您的第二个需求 ( No need of real-time replication) 将不得不在此建议中稍稍退居次要位置。既然您有足够大的外部硬盘驱动器用于 XtraBackup,为什么不在同一台机器上用作第二个 MySQL 实例的数据目录?

我编写了自己的服务脚本来为端口 3307 - 3399 提供专用的 mysql 实例。这是我过去的帖子:

建议 #2:在不同的服务器上使用 MySQL 复制

考虑到您的第一个需求 ( Low Cost),如果您可以访问具有足够磁盘空间的商用服务器,请将 MySQL 复制设置为该外部服务器。这样你就可以在 Slave 上运行备份,如下所示

  • STOP SLAVE;
  • 超级备份
  • START SLAVE;

您可以在 Master 上以零影响(无服务器负载,无磁盘 I/O)执行此操作

建议 #3:并行 mysqldumps

您可以设置数据库或表的并行 mysqldumps。这可能会导致更短的备份时间窗口。XtraBackup 本质上是使用时间点敏感操作进行检查点事务备份,以便备份的时间点是备份完成时。在不复制的从属服务器上并行 mysqldumps 为您提供备份,其时间点是备份的开始。在停止的从站上执行 mysqldump 将与存储引擎无关。换句话说,表是 InnoDB 还是 MyISAM 并不重要。

如果您将此应用于 SUGGESTION #1,这将导致服务器负载和磁盘 I/O,因为 Master 和 Slave 驻留在同一台机器上。

如果您将此应用于 SUGGESTION #2,Master 不会受到任何惩罚。您可以在 Slave 上随意运行备份。您也不必担心锁定 MyISAM 表。

请参阅我过去关于执行并行 mysqldumps 的帖子


归档时间:

查看次数:

6457 次

最近记录:

12 年,12 月 前