MySQL 5.7 下的對super用戶只讀
阿新 • • 發佈:2017-09-02
mysql super_read_only read_only
在MySQL的主從復制場景下,遇上slave被意外寫入數據是一件比較嚴重的問題,畢竟在一般情況下我們都希望slave僅用只讀數據庫,如果被意外寫入數據可能會造成數據的不一致,從而導致主從的報錯。因此在MySQL中可以通過設置變量參數read_only
使MySQL的slave設置為只讀,在缺省條件下read_only變量參數是關閉的,但是read_only變量參數有一個問題它對super用戶無效,所以如果使用super用戶在開啟read_only的slave下還是可以正常的讀寫。在僅作為只讀的slave下如果出現super用戶誤操作,那勢必會造成一定的故障,而在MySQL 5.7後Oracle對MySQL的大量代碼進行重構調優後添加了一個新的變量參數super_read_only,顧名思義就是super用戶只讀,所以在生產環境下如果沒有一些特殊的需求在slave下可以通過開啟super_read_only變量來警用slave寫入:
mysql> set global super_read_only=ON; Query OK, 0 rows affected (0.00 sec) mysql> show global variables like ‘%read_only%‘; +------------------+-------+ | Variable_name | Value | +------------------+-------+ | innodb_read_only | OFF | | read_only | ON | | super_read_only | ON | | tx_read_only | ON | +------------------+-------+ 4 rows in set (0.00 sec)
再把變量參數寫入my.cnf,使下一次遇上重啟時變量生效
read_only = on super_read_only = on tx_read_only = on
本文出自 “Jim的技術隨筆” 博客,謝絕轉載!
MySQL 5.7 下的對super用戶只讀