MySQL:InnoDB表的自动增量备份

时间:2011-09-01 09:19:13

标签: mysql backup innodb

我知道在SO和其他地方都有类似/相关的问题,我至少认为我理解各种选择。

我们有一个带有InnoDB表的大型MySQL(社区版)数据库。我想每天将数据库的shapshots备份到异地。目前我使用的是由cron.daily运行的mysqldump脚本。但是,写出副本需要3个小时。所以 - 必须增量。

由于我们是社区版并且买不起企业,我们没有InnoDB hotcopy,因为它是非阻塞的,所以它是一个可行的解决方案。另一种选择是打开二进制日志记录并进行增量更新。但这似乎是一个巨大的痛苦,容易出错:冲洗和旋转日志,记录时间戳等。如果可能,建议似乎是避免这种情况。

所以最后一个选项是使用Master-Slave配置设置复制。我已经扫描了文档,但我不清楚是什么构成了“大师”,什么构成了“奴隶”。所以有几个问题:

  • 奴隶是一个单独的mysqld进程吗?
  • 奴隶可以在与主人相同的机器上运行吗?
  • 一旦设置并运行是否需要任何干预,或者主人会忠实地推送所有更新?
  • 要在不影响Master的情况下进行备份,大概我可以在slave上运行mysqldump吗?
  • 最后,这是一个合理的解决方案来维护异地复制的备份吗?

谢谢理查德

2 个答案:

答案 0 :(得分:2)

  

奴隶是一个单独的mysqld进程吗?

没有必要使用单独的mysql守护进程,
在master中启用二进制日志
在slave中配置relay-bin,以及master上的相关信息 (见http://dev.mysql.com/doc/refman/5.0/en/replication-howto.html

  

奴隶可以在与主人相同的机器上运行吗?

是的,但不要这样做
因为一旦机器坠毁, 你的主人和奴隶都不见了 (DTP)

  

一旦设置并运行是否需要任何干预,或者主人会忠实地推送所有更新吗?

master将忠实推送所有更新
master将写入sqls写入二进制日志,
和奴隶应该获得二进制日志(正如@Johan解释的那样,它从主人那里拉出来)

然而,

  1. 表锁定可能导致从属
  2. 上的复制延迟
  3. 无法写入无法在slave上执行的查询
  4. 你可以看待复制只是一种允许所有sqls在master上执行的方法,
    复制到奴隶,
    并按接收顺序再次执行
    (这是二进制日志的作用)

      

    要在不影响Master的情况下进行备份,大概我可以在slave上运行mysqldump吗?

    当然,这是奴隶的目的 但是,会有一些延迟......
    当你转储数据时,
    你可能会阻止表写(假设innodb影响较小),
    而主人可以进一步写作

      

    最后,这是一个合理的解决方案来维护异地复制的备份吗?

    是的,这被认为是一个mysql灾难恢复

答案 1 :(得分:1)

  

奴隶是一个单独的mysqld进程吗?

它可以,但更常见的是安装在不同机器上的单独MySQL服务器。

  

奴隶可以和主人在同一台机器上运行吗?

是的,如果必须,只需为其分配不同的端口号和不同的server_id 请注意,如果它位于同一台计算机上,那么备份就不多了。

  

一旦设置并运行是否需要任何干预,或者主人会忠实地推送所有更新?

主人没有push任何东西,奴隶pulls更新。

  

要在不影响Master的情况下进行备份,大概我可以在slave上运行mysqldump吗?

是的,但如果主设备和从设备在同一台计算机上运行,​​则运行mysqldunmp 减慢该服务器的速度。

  

最后,这是一个合理的解决方案来维护异地复制的备份吗?

是的, off site 是此处的关键字 我会把奴隶放在场外,这比在同一台机器上让奴隶更有意义。

这是一个教程
http://www.howtoforge.com/mysql_master_master_replication