mysql之 redo log
重做日誌(redo log)
前言:之前一直弄不清楚 mysql 裡面 bin log 和 innodb log 檔案的區別,在腦子裡面一直有個疑問 binlog 日誌檔案已經可以用來進行
資料庫的日誌備份恢復了,怎麼又多了一個 redo log 檔案了。相信也有很多人有這個疑惑,現在把整個過程文件整理出來,希望對大家有所幫忙。
如果對 Oracle 很瞭解,那麼在整個學習 innoDB log 的時候,可以把聯
機重做日誌的那套理論套在學習 innoDB log 上面,幾乎是一樣的;
1、innodb log 的基礎知識
innodb log 顧名思義:即 innodb 儲存引擎產生的日誌,也可以稱為
重做日誌檔案,預設在 innodb_data_home_dir 下面有兩個檔案
ib_logfile0 和 ib_logfile1。MySQL 官方手冊中將這兩個檔案叫文
InnoDB 儲存引擎的日誌檔案;
檢視日誌檔案位置:
[root@rh55 ~]# cat /etc/my.cnf
# Uncomment the following if you are using InnoDB tables
#innodb_data_home_dir = /usr/local/mysql/data
#innodb_data_file_path = ibdata1:10M:autoextend
#innodb_log_group_home_dir = /usr/local/mysql/data
# You can set .._buffer_pool_size up to 50 - 80 %
# of RAM but beware of setting memory usage too high
#innodb_buffer_pool_size = 16M
#innodb_additional_mem_pool_size = 2M
# Set .._log_file_size to 25 % of buffer pool size
#innodb_log_file_size = 5M
#innodb_log_buffer_size = 8M
#innodb_flush_log_at_trx_commit = 1
#innodb_lock_wait_timeout = 50
[root@rh55 ~]# cd /usr/local/mysql/data/
[root@rh55 data]# ls -l
total 28732
-rw-rw---- 1 mysql mysql 18874368 Jun 10 16:52 ibdata1
-rw-rw---- 1 mysql mysql 5242880 Jun 10 16:52 ib_logfile0
-rw-rw---- 1 mysql mysql 5242880 Jun 10 16:52 ib_logfile1
drwxr-xr-x 5 mysql mysql 4096 Jun 19 14:12 mysql
drwx------ 2 mysql mysql 4096 Jun 10 16:52
performance_schema
drwxr-xr-x 2 mysql mysql 4096 Jun 10 16:18 test
innodb log 的作用:當 MySQL 的例項和介質失敗的時候,Innodb儲存引擎就會使用 innodb log 檔案進行恢復,保證資料庫的完整性;
innodb log 的寫原理:(請容許我再放下 InnoDB 的原理圖,並且建議把這張圖看到吐)
每個 InnDB 儲存引擎至少有 1 個重做日誌檔案組(group),每個檔案組下至少有兩個重做日誌檔案,預設的為 ib_logfile0、ib_logfile1;
日誌組中每個重做日誌的大小一致,並迴圈使用;
InnoDB 儲存引擎先寫重做日誌檔案,當檔案滿了的時候,會自動切換到日誌檔案 2,當重做日誌檔案 2 也寫滿時,會再切換到重做日
志檔案 1;為了保證安全和效能,請設定每個重做日誌檔案設定映象,並分配到不同的磁碟上面;
(發現以上特性跟 ORACLE 的連線重做日誌檔案簡直是一樣的)
2、innodb log 的相關引數
執行指令碼:show variables like 'innodb%log%'; 檢視重做日誌的相關引數
mysql> show variables like 'innodb%log%';
常用設定的引數有:
innodb_mirrored_log_groups 映象組的數量,預設為 1,沒有映象;
innodb_log_group_home_dir 日誌組所在的路徑,預設為 data 的home 目錄;
innodb_log_files_in_group 日誌組的數量,預設為 2;
innodb_log_file_size 日誌組的大小,預設為 5M;
innodb_log_buffer_size 日誌緩衝池的大小,圖上為 30M
3、引數的相關調優
3.1 重做日誌檔案的大小設定跟 ORACLE 一樣,面臨的問題是相似的。
當 innodb log 設定過大的時候,可能會導致系統崩潰後恢復需要很長的時間;
當 innodb log 設定過小的時候,當一個事務產生大量的日誌的時候,需要多次切換重做日誌檔案,會產生類似如下的報警;
130702 12:53:13 InnoDB: ERROR: the age of the last checkpoint
is 2863217109,
InnoDB: which exceeds the log group capacity 566222311.
InnoDB: If you are using big BLOB or TEXT rows, you must set the
InnoDB: combined size of log files at least 10 times bigger than the
4、重做日誌與二進位制日誌的區別
4.1 記錄的範圍不同:二進位制日誌會記錄 MySQL 的所有儲存引擎的日誌記錄(包括 InnoDB、MyISAM 等),而 InnoDB 儲存引擎的重做日誌只會記錄其本身的事務日誌。
4.2 記錄的內容不同:二進位制日誌檔案記錄的格式可以為STATEMENT 或者 ROW 也可以是 MIXED,其記錄的都是關於一個事務的具體操作內容。
InnoDB 儲存引擎的重做日誌檔案記錄的關於每個頁的更改的物理情況。
4.3 寫入的時間也不同:二進位制日誌檔案是在事務提交前進行記錄的,而在事務進行的過程中,不斷有重做日誌條目被寫入到重做日誌檔案中。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31383567/viewspace-2212831/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- MySQL:Redo & binlogMySql
- MySQL學習之change buffer 和 redo logMySql
- 深入理解MySQL系列之redo log、undo log和binlogMySql
- MySQL的Redo log 以及Bin logMySql
- MySQL中的redo log和undo logMySql
- MySQL Undo Log和Redo Log介紹MySql
- MySQL重做日誌(redo log)MySql
- MySQL redo log最佳化MySql
- MySQL 日誌系統 redo log、binlogMySql
- 【Mysql】三大日誌 redo log、bin log、undo logMySql
- MySQL中的redo log和checkpointMySql
- oracle redo internal 之 dump logfileOracle Redo
- oracle redo internal 之 dump logfileOracle
- oracle檔案管理之 redo logOracle
- MySQL binlog和redo的組提交MySql
- mysql日誌:redo log、binlog、undo log 區別與作用MySql
- MySQL中redo log、undo log、binlog關係以及區別MySql
- Redo Log之一:理解Oracle redo logOracle Redo
- 資料庫篇:mysql日誌型別之 redo、undo、binlog資料庫MySql型別
- Oracle redo解析之-1、oracle redo log結構計算Oracle Redo
- MySQL如何計算統計redo log大小MySql
- undo log和redo log
- MySQL Redo log頁內邏輯怎麼理解MySql
- 【聽海日誌】之DATAGUARD新增redo log
- MySQL更新資料時,日誌(redo log、binlog)執行流程MySql
- 基於Redo Log和Undo Log的MySQL崩潰恢復流程MySql
- 一生摯友redo log、binlog《死磕MySQL系列 二》MySql
- MYSQL 是如何保證binlog 和redo log同時提交的?MySql
- 必須瞭解的mysql三大日誌-binlog、redo log和undo logMySql
- MySQL redoMySql
- oracle redo log operationOracle Redo
- 2 萬字 + 30 張圖 | 細聊 MySQL undo log、redo log、binlog 有什麼用?MySql
- MySQL中Redo Log相關的重要引數總結MySql
- 3000幀動畫圖解MySQL為什麼需要binlog、redo log和undo log動畫圖解MySql
- standby redo log的理解
- redo_log_switch_date
- redo log file 優化優化
- Oracle redo log重組Oracle Redo