14.6.2 Configuring InnoDB for Read-Only Operation

14.6.2 Configuring InnoDB for Read-Only Operation 

配置InnoDB只讀操做 


你能夠查詢InnoDB 表MySQL 數據目錄是一個只讀介質,經過啓用 --innodb-read-only 配置選項在服務啓動前


mysql> show variables like '%innodb-read-only%';
Empty set (0.00 sec)

mysql> show variables like '%innodb_read_only%';
+------------------+-------+
| Variable_name    | Value |
+------------------+-------+
| innodb_read_only | OFF   |
+------------------+-------+
1 row in set (0.00 sec)

如何啓用:

爲了準備一個實例用於只讀操做,確保全部的須要的信息是刷新到數據文件在存儲到只讀介質上,


讓整個MySQL 實例啓用只讀模式, 指定下面的培訓選項在啓動時:

--innodb-read-only=1


若是實例是在只讀介質上的好比DVD或者CD,或者 /var目錄根本不可寫, --pid-file= 在可寫設備上


Usage Scenarios

這個操做的模式是使用這些狀況好比:

1. 分配一個MySQL 應用,或者MySQL數據集,在一個只讀介質 好比DVD或者CD

2.多個MySQL 實例同時查詢相同的數據目錄,典型的在一個數據倉庫配置。

你可能使用這個技術來避免瓶頸 當一個負載沉重的MySQL實例,

或者你可能使用不一樣的配置選項 對於各個實例來調整特定的查詢


3.查詢數據已經放放入到一個只讀狀態 對於安全或者數據的完整性的緣由,好比歸檔的數據備份

它是如何工做的:

當服務器是運行在只讀模式經過 --innodb-read-only選項, 某些InnoDB 功能和組件是被關閉或者徹底關閉的


1,沒有 change buffering,特別是沒有合併從change buffer.

2. 沒有crash recovery 節點在啓動時, 實例必須執行一個緩慢的關閉在進入只讀模式前

3.由於redo log 在只讀操做是不使用的,你能夠設置innodb_log_file_size 到最小值

4.除了I/O thread 線程外全部的後臺進程都會被關閉,做爲一個結果,只能實例不會遇到任何死鎖

5.信息關於死鎖,監控輸出,不寫到臨時文件,做爲一個結果, SHOW ENGINE INNODB STATUS 不產生任何輸出


6.MVCC 處理是強制隔離級別被關閉。全部的查詢讀取最新的記錄的版本,由於Update和delete 是不容許的
相關文章
相關標籤/搜索