我知道在SO和其他地方都有类似/相关的问题,我至少认为我理解各种选择。
我们有一个带有InnoDB表的大型MySQL(社区版)数据库。我想每天将数据库的shapshots备份到异地。目前我使用的是由cron.daily运行的mysqldump脚本。但是,写出副本需要3个小时。所以 - 必须增量。
由于我们是社区版并且买不起企业,我们没有InnoDB hotcopy,因为它是非阻塞的,所以它是一个可行的解决方案。另一种选择是打开二进制日志记录并进行增量更新。但这似乎是一个巨大的痛苦,容易出错:冲洗和旋转日志,记录时间戳等。如果可能,建议似乎是避免这种情况。
所以最后一个选项是使用Master-Slave配置设置复制。我已经扫描了文档,但我不清楚是什么构成了“大师”,什么构成了“奴隶”。所以有几个问题:
谢谢理查德
答案 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解释的那样,它从主人那里拉出来)
然而,
你可以看待复制只是一种允许所有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