*************************************
* 關于 binlog *
*************************************
--binlog 以一種更有效的格式,并且是事務安全的方式包含更新日志中可用的所有資訊。
--binlog 包含了所有更新了資料或者已經潛在更新了資料(例如,沒有比對任何行的一個DELETE)的所有語句。語句以“事件”的形式儲存,它描述資料更改。
--binlog 還包含關于每個更新資料庫的語句的執行時間資訊。它不包含沒有修改任何資料的語句。如果你想要記錄所有語句(例如,為了識别有問題的查詢),你應使用一般查詢日志。
--binlog 的主要目的是在恢複使能夠最大可能地更新資料庫,因為 binlog 包含備份後進行的所有更新。
--binlog 還用于在主複制伺服器上記錄所有将發送給從伺服器的語句。
--運作伺服器時若啟用 binlog 則性能大約慢1%。但是, binlog 的好處,即用于恢複并允許設定複制超過了這個小小的性能損失。
--當--log-bin[=file_name]選項啟動時,mysqld寫入包含所有更新資料的SQL指令的日志檔案。如果未給出file_name值, 預設名為-bin後面所跟的主機名。如果給出了檔案名,但沒有包含路徑,則檔案被寫入資料目錄。建議指定一個檔案名。如果你在日志名中提供了擴充名(例如,--log-bin=file_name.extension),則擴充名被悄悄除掉并忽略。
--mysqld在每個 binlog 名後面添加一個數字擴充名。每次你啟動伺服器或重新整理日志時該數字則增加。如果目前的日志大小達到max_binlog_size,還會自動建立新的 binlog 。如果你正使用大的事務, binlog 還會超過max_binlog_size:事務全寫入一個 binlog 中,絕對不要寫入不同的 binlog 中。
--為了能夠知道還使用了哪個不同的 binlog 檔案,mysqld還建立一個 binlog 索引檔案,包含所有使用的 binlog 檔案的檔案名。預設情況下與 binlog 檔案的檔案名相同,擴充名為'.index'。你可以用--log-bin-index[=file_name]選項更改 binlog 索引檔案的檔案名。當mysqld在運作時,不應手動編輯該檔案;如果這樣做将會使mysqld變得混亂。
--binlog 格式有一些已知限制,會影響從備份恢複。
--預設情況下,并不是每次寫入時都将 binlog 與硬碟同步。是以如果作業系統或機器(不僅僅是MySQL伺服器)崩潰,有可能 binlog 中最後的語句丢失了。要想防止這種情況,你可以使用sync_binlog全局變量(1是最安全的值,但也是最慢的),使 binlog 在每N次 binlog 寫入後與硬碟同步。
************************************************
* 如何管理 MySQL 的 binlog *
************************************************
1、在 my.ini 中增加下述參數,指定儲存更新到 binlog 的資料庫:db_name,未在此指定的資料庫将不記錄 binlog
--binlog-do-db=db_name
2、在 my.ini 中增加下述參數,指定不儲存更新到 binlog 的資料庫:db_name
--binlog-ignore-db=db_name
3、如果 binlog 已經産生,可以通過 SQL 指令行清除:
RESET MASTER;
PURGE MASTER LOGS TO 'mysql-bin.010';
PURGE MASTER LOGS BEFORE '2006-06-06 06:06:06';
PURGE MASTER LOGS BEFORE DATE_SUB( NOW( ), INTERVAL 3 DAY);
本文來自CSDN部落格,轉載請标明出處:http://blog.csdn.net/ccsdba/archive/2007/10/18/1831193.aspx