MySQL 5.7 下的對super使用者唯讀

來源:互聯網
上載者:User

標籤:mysql   super_read_only   read_only   

   在MySQL的主從複製情境下,遇上slave被意外寫入資料是一件比較嚴重的問題,畢竟在一般情況下我們都希望slave僅用唯讀資料庫,如果被意外寫入資料可能會造成資料的不一致,從而導致主從的報錯。因此在MySQL中可以通過設定變數參數read_only

650) this.width=650;" src="https://s5.51cto.com/wyfs02/M02/05/B2/wKiom1mpjYvAi5jgAAHB9B6xfqA068.png-wh_500x0-wm_3-wmp_4-s_1131279051.png" title="MySQL5.6" alt="wKiom1mpjYvAi5jgAAHB9B6xfqA068.png-wh_50" />

使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 = onsuper_read_only = ontx_read_only = on

650) this.width=650;" src="https://s3.51cto.com/wyfs02/M01/05/B2/wKiom1mpkG6ywGxxAAGcVv_RuSE344.png-wh_500x0-wm_3-wmp_4-s_998682234.png" title="MySQL5.7" alt="wKiom1mpkG6ywGxxAAGcVv_RuSE344.png-wh_50" />

本文出自 “Jim的技術隨筆” 部落格,謝絕轉載!

MySQL 5.7 下的對super使用者唯讀

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.