成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

MySQL設置數據庫為只讀

數據庫 MySQL
默認情況下,我們的 MySQL 實例是可讀寫的。但有些情況下,我們可以將整個實例設置為只讀狀態,比如做遷移維護的時候或者將從庫設為只讀。本篇文章我們來看下 MySQL 設置只讀相關知識。

 前言:

默認情況下,我們的 MySQL 實例是可讀寫的。但有些情況下,我們可以將整個實例設置為只讀狀態,比如做遷移維護的時候或者將從庫設為只讀。本篇文章我們來看下 MySQL 設置只讀相關知識。

[[440204]]

1.關于 read_only 參數

MySQL系統中,提供有 read_only 和 super_read_only 兩個只讀參數,參考官方文檔,這里介紹下這兩個參數的作用:

read_only 參數默認不開啟,開啟后會阻止沒有 super 權限的用戶執行數據庫變更操作。開啟后,普通權限用戶執行插入、更新、刪除等操作時,會提示 --read-only 錯誤。但具有 super 權限的用戶仍可執行變更操作。

super_read_only 參數同樣默認關閉,開啟后不僅會阻止普通用戶,也會阻止具有 super 權限的用戶對數據庫進行變更操作。

read_only 和 super_read_only 是有關聯的,二者之間的關系如下:

  • 設置 super_read_only=on ,也就隱式地設置了 read_only=on。
  • 設置 read_only=off ,也就隱式地設置了 super_read_only=off。
  • 可以單獨開啟 read_only 而不開啟 super_read_only。

不過,從庫開啟 read_only 并不影響主從同步,即 salve 端仍然會讀取 master 上的日志,并且在 slave 實例中應用日志,保證主從數據庫同步一致。(經測試,從庫端開啟 super_read_only 仍不影響主從同步。)

下面我們具體來操作下,看下 read_only 參數的用法: 

  1. # 查看 read_only 參數 
  2. mysql> show global variables like '%read_only%'
  3. +-----------------------+-------+ 
  4. | Variable_name         | Value | 
  5. +-----------------------+-------+ 
  6. | innodb_read_only      | OFF   | 
  7. | read_only             | OFF   | 
  8. | super_read_only       | OFF   | 
  9. | transaction_read_only | OFF   | 
  10. | tx_read_only          | OFF   | 
  11. +-----------------------+-------+ 
  12.  
  13. # 動態修改 read_only 參數 (若想重啟生效 則需將 read_only = 1 加入配置文件中) 
  14. mysql> set global read_only = 1; 
  15. Query OK, 0 rows affected (0.00 sec) 
  16.  
  17. mysql> show global variables like 'read_only'
  18. +---------------+-------+ 
  19. | Variable_name | Value | 
  20. +---------------+-------+ 
  21. | read_only     | ON    | 
  22. +---------------+-------+ 
  23.  
  24. # read_only 開啟的情況下 操作數據 
  25. # 使用超級權限用戶 
  26. mysql> create table tb_a (a int); 
  27. Query OK, 0 rows affected (0.05 sec) 
  28. # 使用普通權限用戶 
  29. mysql> create table tb_b (b int);  
  30. ERROR 1290 (HY000): The MySQL server is running with the --read-only option so it cannot execute this statement 
  31.  
  32. # 開啟 super_read_only,再次使用超級權限用戶來操作數據 
  33. mysql> set global super_read_only = 1; 
  34. Query OK, 0 rows affected (0.00 sec) 
  35. mysql> show global variables like 'super_read_only'
  36. +-----------------+-------+ 
  37. | Variable_name   | Value | 
  38. +-----------------+-------+ 
  39. | super_read_only | ON    | 
  40. +-----------------+-------+ 
  41. mysql> create table tb_c (c int);   
  42. ERROR 1290 (HY000): The MySQL server is running with the --super-read-only option so it cannot execute this statement 
  43.  
  44. # 關閉 read_only 參數 
  45. mysql> set global read_only = 0; 
  46. Query OK, 0 rows affected (0.00 sec) 

2.flush tables with read lock 設置

除了 read_only 參數外,執行 flush tables with read lock 也可將數據庫設置為只讀狀態,那么二者有什么區別呢?我們先來了解下 flush tables with read lock 的作用。

執行此命令會給數據庫加全局讀鎖,使得數據庫處于只讀狀態,以下語句會被阻塞:數據更新語句(增刪改)、數據定義語句(建表、修改表結構等)和更新類事務的提交語句。下面我們來具體實驗下: 

  1. # 執行FTWRL 
  2. mysql> flush tables with read lock; 
  3. Query OK, 0 rows affected (0.02 sec) 
  4.  
  5. # 進行數據變更操作 
  6. mysql> insert into tb_a values (1); 
  7. ERROR 1223 (HY000): Can't execute the query because you have a conflicting read lock 
  8.  
  9. # 解鎖 
  10. mysql> unlock tables; 
  11. Query OK, 0 rows affected (0.00 sec) 
  12. mysql> insert into tb_a values (1); 
  13. Query OK, 1 row affected (0.01 sec) 

值得注意的是,從庫端執行 flush tables with read lock 會導致 SQL 線程卡住,主備延遲。與開啟 read_only 參數不同的是,執行 flush tables with read lock 后,其余客戶端執行數據變更操作會持續等待而不是立即報錯,極其容易引起數據庫 hang 住,執行這個命令還是要小心的。

以個人數據庫運維經驗來講,一般只有從庫需要設置只讀狀態,從庫端建議開啟 read_only 或 super_read_only,避免人為寫入。flush tables with read lock 適用于進行數據遷移時,可以保證數據庫不發生數據改變,不過要注意及時解鎖。

總結:

本篇文章主要介紹了 MySQL 只讀狀態相關知識,其實除了從庫外,其余實例很少設置全局只讀,只是遇到某種需求的情況下需要將數據庫設為只讀狀態,寫本篇文章的目的也是遇到此類需求時,可以有個參考。

 

責任編輯:華軒 來源: 今日頭條
相關推薦

2021-12-10 07:47:31

MySQL設置數據庫

2011-07-27 09:33:16

MySQL數據庫INNODB數據庫引擎

2017-10-25 15:27:52

MySQL數據庫超時設置

2023-10-09 08:37:39

2010-05-28 18:44:45

2011-08-30 17:57:40

OracleCACHE BUFFE

2019-12-18 08:00:09

MySQL數據庫ORDER BY

2010-06-04 14:25:23

MySQL數據庫權限

2011-05-16 14:07:12

MySQL數據庫設置密碼

2010-05-27 18:44:14

MySQL遠程連接

2010-10-28 15:56:21

ORACLE數據庫設置

2010-06-11 14:23:17

MySQL數據庫

2011-03-03 17:56:52

MySQL數據庫優化

2014-09-29 14:06:54

阿里云RDSRDS只讀實例

2011-05-13 09:42:21

2011-03-08 08:49:55

MySQL優化單機

2011-03-14 13:43:56

2009-05-08 09:56:37

MaxDBMySQL數據庫管理

2010-07-22 10:09:21

2011-02-22 14:26:04

ProFTPD
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 2018中文字幕第一页 | 国产日屁 | 天天操操操操操 | 一区二区国产精品 | 成年人在线视频 | 久久一区二区三区电影 | 伊人久久大香线 | 欧美性受 | 国产精品日日摸夜夜添夜夜av | a毛片| 日韩精品中文字幕一区二区三区 | 欧美精品在线一区二区三区 | 在线免费观看毛片 | 久久大陆 | aaa大片免费观看 | 中国av在线免费观看 | 精品www| 国产精品久久久久一区二区三区 | 久久久成人精品 | 国产成人99久久亚洲综合精品 | 日本不卡一区二区三区在线观看 | www.国产视频 | 国产成人精品一区二区 | 国产精品福利视频 | 极品粉嫩国产48尤物在线播放 | 四虎影院久久 | 午夜激情视频 | 天天干夜夜操视频 | av手机在线播放 | 午夜精品一区二区三区在线观看 | 久久久精品网站 | 一区二区精品 | 国产激情在线看 | 欧美激情国产日韩精品一区18 | 日韩视频中文字幕 | 天堂中文av | 最新国产精品 | 一区二区高清 | 欧美精品一区二区三区四区 在线 | 91社区在线观看 | 久久精品91 |