read_only和super_read_only参数的区别
read_only和super_read_only参数的区别?
在MySQL中,从库经常会被设置成为read_only属性,来防止数据的写入,在开启gtid的情况下,如果我们看到从库上面有多个GTID值,然后其中一个GTID的uuid和从库的uuid一致,那就可以判断,这个从库曾经出现过写入,可能需要校验从库和主库的数据一致性。
类似read_only参数,还有一个super_read_only的参数,这两个参数之间有些细微的关系,今天在这里罗列一下:
1、read_only参数和super_read_only参数默认都是关闭的,read_only参数设置为on的情况下,会组织客户端的更新,但是如果一个账号拥有super权限,那么还是可以进行更新的。而super_read_only会阻止所有的客户端更新,即使客户端拥有super权限也不可以。
2、设置super_read_only参数为on会默认联动的设置read_only为on
3、设置read_only参数为off,会默认联动设置super_read_only为off
1mysql> show variables like '%read_only%';
2+-----------------------+-------+
3| Variable_name | Value |
4+-----------------------+-------+
5| innodb_read_only | OFF |
6| read_only | OFF |
7| super_read_only | OFF |
8| transaction_read_only | OFF |
9+-----------------------+-------+
104 rows in set (0.00 sec)
11
12mysql> set global super_read_only=on;
13Query OK, 0 rows affected (0.00 sec)
14
15mysql> show variables like '%read_only%';
16+-----------------------+-------+
17| Variable_name | Value |
18+-----------------------+-------+
19| innodb_read_only | OFF |
20| read_only | ON |
21| super_read_only | ON |
22| transaction_read_only | OFF |
23+-----------------------+-------+
244 rows in set (0.01 sec)
25
26mysql> set global read_only=off;
27Query OK, 0 rows affected (0.00 sec)
28
29mysql> show variables like '%read_only%';
30+-----------------------+-------+
31| Variable_name | Value |
32+-----------------------+-------+
33| innodb_read_only | OFF |
34| read_only | OFF |
35| super_read_only | OFF |
36| transaction_read_only | OFF |
37+-----------------------+-------+
384 rows in set (0.00 sec)
4、即使你设置了read_only为on的状态,下面的操作也是允许的:
a、从库复制中的更新,也就是说在主从复制场景下,从库设置read_only是有效的,复制不会因此中断。
b、analyze table和optimize table语句可以正常执行,因为他们不会给表中插入语句
c、对临时表的操作是支持的。
d、插入系统日志表的操作是允许的,例如mysql.general_log和mysql.slow_log
5、如果我们设置super_read_only为on,不仅拥有super权限的账号不能进行更新,其他一些动作,例如create function或者install plugin的动作也不能执行,因为这些动作也涉及到mysql系统数据库中表的修改。
1mysql> show variables like '%read_only%';
2+-----------------------+-------+
3| Variable_name | Value |
4+-----------------------+-------+
5| innodb_read_only | OFF |
6| read_only | ON |
7| super_read_only | ON |
8| transaction_read_only | OFF |
9+-----------------------+-------+
104 rows in set (0.00 sec)
11
12mysql>
13mysql> INSTALL PLUGIN rpl_semi_sync_slave SONAME 'semisync_slave.so';
14ERROR 1290 (HY000): The MySQL server is running with the --super-read-only option so it cannot execute this statement
Innodb_Read_Only参数(有点类似super_read_only)
在MySQL中,除了super_read_only和read_only之外,还有一个参数innodb_read_only,这个参数设置为on之后,在MySQL5.7版本中,仅仅会阻止innodb存储引擎的表创建和删除,在MySQL8.0中,会阻止所有存储引擎执行create和drop表的操作,除此之外,启用了innodb_read_only参数,analyze table可能会失败,因为该操作本质上需要更新innodb数据字典中的统计表。除此之外:
alter table tbl_name engine=engine_name
这种语句也会失败,因为它更新了存储在数据字典中的存储引擎名称。
- Quartz.net官方开发指南 第三课:更多关于Jobs和JobDetails
- 为你的WordPress 主题添加结构化数据/丰富文本摘要,高亮搜索结果(下)
- Quartz.net官方开发指南 第四课:关于Triggers更多内容
- 数据分析:寻找Python最优计算性能
- 事件流处理框架NEsper for .NET
- Quartz.net官方开发指南 第五课: SimpleTrigger
- SQL Server Performance Dashboard Reports
- 添加WordPress评论输入邮箱实时显示Gravatar头像功能
- Quartz.net官方开发指南 第六课 : CronTrigger
- WordPress 中禁止某个用户在线编辑主题
- Quartz.net官方开发指南 第七课 : TriggerListeners和JobListeners
- Quartz.net官方开发指南 第八课:SchedulerListeners
- 为WordPress 后台编辑器文本模式(HTML模式)添加按钮
- 360安全扫描之WordPress 页面异常导致本地路径泄漏 的漏洞修补
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- Python编程 基础练习(二)
- python数据可视化 豆瓣电影top250数据分析
- R语言实现分子信息获取
- iOS App冷启动治理:来自美团外卖的实践
- LeetCode刷题DAY 37:组合总合
- 利用scipy计算定积分
- 关于设计模式的那些事(一)
- 你在小程序中怎么计算两个经纬度的距离?
- 权限-Linux每日一练(5)
- Go 每日一库之 commonregex
- Python编程 基础练习(三)
- Python 图像数组变换及手绘效果实现
- 爬取TIOBE编程语言热度数据 + Pyecharts绘制时间轮播图
- Python 简单实现贪吃蛇小游戏
- Python数据可视化 词云图 绘制词云的方法总结