mysql read_only与flush table with read lock

mysql read_only与flush table with read lock_第1张图片

没有实验过程了。
ALL PRIVILEGES权限:

 # 除非grant option权限,

SUPER privileges:

# 超级权限

普通用户权限:

 SELECT UPDATE INSERT ......

read_only:

When the read_only system variable is enabled, 
the server permits no client updates except from users who have the SUPER privilege. 
This variable is disabled by default.

FLUSH TABLE WITH READ LOCK:

锁表,只读,任何用户都没有写入数据库的权限。
一:mysql单机架构

1、read_only

SET GLOBAL read_only=ON
 1、SUPER,ALL PRIVILEGES,root,具备修改数据库的能力
 2、普通用户则没有,报只读错误

2、read_only + flush table with read lock

SET GLOBAL read_only=ON
flush table with read lock
1、SUPER,ALL PRIVILEGES,root,修改数据库提交事物之后会被暂停。
       1、要么自己退出
       2、要么等解除表锁之后继续此事物
2、普通用户直接报只读错误
二:mysql主从复制架构

1、从数据库read_only

 单机一样,此时的mysql 主从同步复制是可以正常进行

2、从数据库read_only + flush table with read lock

  单机一样,此时的mysql主从同步复制是不能正常进行。
        1、从服务器可以将主服务器的二进制日志读取过来(日志记录位置)
        2、从服务器不能更新数据到数据库,需要解表锁之后才可以将数据写入到数据库。

1、要避免往从库写入数据,需要避免普通用户赋予super & all权限。
2、flush table with read lock应该比较常用于master锁表,同步数据时。
3、解锁表:unlock table;

你可能感兴趣的:(mysql read_only与flush table with read lock)