
Best way to archive live MySQL database我们有一个实时的MySQL数据库,该数据库的插入率为99%,每秒约100个。 我们希望每天都存档数据,以便我们可以在不影响主实时数据库的情况下对其进行查询。 此外,归档完成后,我们要清除实时数据库。 没有(如果可能)锁定INSERT的最佳方法是什么? 我们对查询使用INSERT DELAYED。 http://www.maatkit.org/具有mk-archiver
另一种选择是每天简单地创建一个新的数据库表。 MyIsam确实具有一些优势,因为到表末尾的INSERT通常不会阻塞,并且存在合并表类型可以将它们全部放在一起。许多网站都将httpd流量记录到这样的表中。 使用Mysql 5.1,还有分区表可以做很多相同的事情。 我使用mysql分区表,并且在各个方面都取得了不错的效果。 听起来复制是最好的解决方案。初始同步后,从站通过二进制日志获取更新,因此完全不影响主数据库。 有关复制的更多信息。 MK-ARCHIVER是用于归档MYSQL数据的优雅工具。 http://www.maatkit.org/doc/mk-archiver.html
MySQL复制将为此完美地工作。 您能否保留两个镜像数据库?写一个,将第二个作为存档。例如,每24小时切换一次(或您认为合适的时长)。在作为存档的数据库中,插入今天的所有活动。然后,两个数据库应该匹配。将此用作新的实时数据库。获取存档的数据库,然后对其执行任何操作。现在,您可以备份/提取/读取您想要的所有内容,因为它们没有被主动写入。 这有点像镜像袭击,您可以将一个驱动器脱机进行备份,重新同步,然后将另一个驱动器取出进行备份。 |