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 是不容許的