MySQL 配置InnoDB為只讀操作

eric0435發表於2022-04-09

配置InnoDB為只讀操作
透過在伺服器啟動時啟用--innodb-read-only配置選項,您現在可以查詢MySQL資料目錄在只讀介質上的InnoDB表。

如何啟用只讀
要為只讀操作準備例項,請確保在將資料檔案儲存到只讀介質之前將所有必要的資訊重新整理到資料檔案。以禁用改變緩衝區的方式執行MySQL(innodb_change_buffering=0)伺服器,並緩慢關閉。

要為整個MySQL例項啟用只讀模式,請在伺服器啟動時指定以下配置選項
.--innodb-read->

.如果例項位於只讀介質(如DVD或CD)上,或者/var目錄不是所有人都可寫的:
--pid-file=path_on_writeable_media和--event-scheduler=disabled

.--innodb_temp_data_file_path。該選項指定InnoDB臨時表空間資料檔案的路徑、檔名和檔案大小。預設設定為ibtmp1:12M;autoextend,在資料目錄下建立ibtmp1臨時表空間資料檔案。為只讀操作準備一個例項,需要將innodb_temp_data_file_path設定為資料目錄之外的位置。該路徑必須相對於資料目錄;例如:
--innodb_temp_data_file_path=../../../tmp/ibtmp1:12M:autoextend

使用場景
這種操作方式適用於以下情況:
.分發一個MySQL應用程式或一組MySQL資料到只讀儲存介質上,如DVD或CD。

.通常在資料倉儲配置中,多個MySQL例項同時查詢相同的資料目錄。您可以使用這種技術來避免過載MySQL例項可能出現的瓶頸,或者您可以為不同的例項使用不同的配置選項來針對特定型別的查詢調優每個例項。

.查詢由於安全或資料完整性原因而處於只讀狀態的資料,如已歸檔的備份資料。

注意:這個特性主要是為了實現分發和部署中的靈活性,而不是基於只讀方面的原始效能。

工作原理
當伺服器透過--innodb-read-only選項以只讀模式執行時,某些InnoDB特性和元件會減少或完全關閉:
.沒有進行更改緩衝,特別是沒有從更改緩衝區進行合併。當你準備例項進行只讀操作時,為了確保更改緩衝區是空的,禁用更改緩衝區(innodb_change_buffering=0),並先做一個緩慢的關閉。

.在啟動時沒有崩潰恢復階段。例項必須在進入只讀狀態之前執行了緩慢關閉。

.因為重做日誌不用於只讀操作,所以在使例項只讀之前,可以將innodb_log_file_size設定為最小的大小(1MB)。

.除I/O讀執行緒外的所有後臺執行緒都被關閉。因此,只讀例項不會遇到任何死鎖。

.關於死鎖、監視器輸出等資訊不會寫入臨時檔案。因此,SHOW ENGINE INNODB STATUS不會產生任何輸出。

.如果MySQL伺服器以--innodb-read-only啟動,但資料目錄仍然在可寫介質上,root使用者仍然可以執行DCL操作,如GRANT和REVOKE。

.對配置選項設定的更改通常會改變寫操作的行為,但在伺服器處於只讀模式時沒有影響。

.用於MVCC處理的隔離級別被強制關閉。所有查詢都讀取記錄的最新版本,因為不可能進行更新和刪除。

.未使用undo日誌。禁用innodb_undo_tablespaces和innodb_undo_directory配置選項的任何設定。


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/26015009/viewspace-2886307/,如需轉載,請註明出處,否則將追究法律責任。

相關文章