簡體   English   中英

如何刷新二進制日志

[英]How to flush binary logs

我在另一篇文章中讀到一篇評論,指出可以通過不在每次提交時刷新二進制日志來優化InnoDB的速度。

這是我第一次聽說此消息,那么這些二進制日志是什么?刷新的內容是什么? 我為什么要這樣做(什么時候不這樣做)以及如何做?

MySQL的二進制日志充當相當於日志文件系統中日志的數據庫。 每個查詢都會記錄在其中,因此,如果數據庫在某個時刻崩潰,則可以“重播”二進制日志並以最小的代價重建數據庫。 它也用於復制。

此處有更多詳細信息: http : //dev.mysql.com/doc/refman/5.1/en/binary-log.html

二進制日志用於崩潰恢復和復制。 假設已啟用它們,則有關沖洗的兩個主要適用設置為:

  • innodb_flush_log_at_trx_commit = 2
  • sync_binlog = 0

這些設置優先於速度而不是“保證的”可靠性,因為它們允許操作系統延遲將緩沖區刷新到磁盤上。

slow. 如果您在便宜的磁盤控制器上運行(大多數人都在使用),則每次提交都刷新日志慢。 在執行大量寫操作的網站上,我看到頁面執行時間減少了10x-100x! 運行您自己的基准測試並查看其如何影響您很容易。

明確地說,如果要獲得最大的恢復收益,則必須將這兩個值都設置為1。如上所述,在系統崩潰的情況下,您可能會丟失幾秒鍾的數據。 對於某些網站,這是不可接受的。 對於博客和論壇,這可能是一個值得權衡的問題。

您可以在此處閱讀有關設置的更多信息:

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

還有許多與內存相關的選項,例如“ innodb_buffer_pool_size”也要配置。 有關MySQL InnoDB調優的搜索應該會有所幫助。

InnoDB通過重播日志從崩潰中恢復。 而且它還用於將主服務器復制到從服務器。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM