【问题标题】:How to flush binary logs如何刷新二进制日志
【发布时间】:2011-04-20 10:14:11
【问题描述】:

我阅读了另一篇文章的评论,说 InnoDB 可以通过不在每次提交时刷新二进制日志来优化速度。

这是我第一次听说这个,那么这些二进制日志是什么?这个刷新是怎么回事?我为什么要这样做(以及何时不这样做)以及如何做?

【问题讨论】:

    标签: php mysql database innodb


    【解决方案1】:

    MySQL 的二进制日志充当数据库,相当于日志文件系统中的日志。每个查询都会记录在其中,因此如果数据库在某个时候崩溃,您可以“重放”二进制日志并以最小的痛苦重建数据库。它也用于复制。

    更多详情:http://dev.mysql.com/doc/refman/5.1/en/binary-log.html

    【讨论】:

    【解决方案2】:

    InnoDB 通过重放日志从崩溃中恢复。它还用于将主服务器复制到从服务器。

    【讨论】:

      【解决方案3】:

      二进制日志用于崩溃恢复和复制。假设它们已启用,有关刷新的两个主要适用设置是:

      • innodb_flush_log_at_trx_commit=2
      • sync_binlog=0

      这些设置有利于速度而不是“保证”可靠性,因为它们允许操作系统延迟将缓冲区刷新到磁盘。

      如果您在廉价的磁盘控制器上运行(大多数人都是这样),那么在每次提交时刷新日志都会非常慢。在一个进行大量写入的网站上,我看到页面执行时间下降了 10 到 100 倍!运行您自己的基准测试并查看它对您的影响很容易。

      非常清楚,如果您想要最大的恢复优势,您必须将这两个值都设置为 1。如上配置,在系统崩溃的情况下您可能会丢失几秒钟的数据。对于某些网站,这是不可接受的。对于博客和论坛,这可能是一个值得权衡的选择。

      您可以在此处阅读有关设置的更多信息:

      http://dev.mysql.com/doc/refman/5.0/en/innodb-parameters.html

      还有许多与内存相关的选项,例如“innodb_buffer_pool_size”需要配置。搜索 MySQL InnoDB 调优应该会有所帮助。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-09-17
        • 2012-10-21
        • 1970-01-01
        • 2013-01-23
        • 1970-01-01
        • 2013-07-27
        • 2016-11-07
        • 1970-01-01
        相关资源
        最近更新 更多