MySQL之离线模式offline_mode

0    31    1

Tags:

👉 本文共约1313个字,系统预计阅读时间或需5分钟。

简介

在以前,当需要对MySQL数据库进行维护操作时,通常需要先进行主从切换,然后修改设置并重启实例,关闭网络监听,只允许从本地socket方式登入,再进行相应的维护操作;有时候甚至还要修改相应的防火墙,或者干脆关闭前端业务服务,总体比较麻烦。

从MySQL 5.7开始,支持设置为离线模式(offline_mode),再有维护操作需求就不用这么麻烦了。只需在线动态修改,可立即生效,非常的简单粗暴:

本人提供Oracle、MySQL、PG等数据库的培训和考证业务,私聊QQ646634621或微信db_bao,谢谢!

当设置为离线模式后,普通用户将无法继续发起连接请求,甚至当前正在执行的SQL也会立即被终止并被断开连接。

1. 无法创建新连接

2. 即便是普通用户通过本地socket连接,当启用离线模式后,也会被断开

3. 正在运行中的sysbench压测,也会被立即断开

另外,从MySQL 8.0开始,对于离线模式又做了些改进和完善,比如新引入 CONNECTION_ADMIN权限等,细化离线模式的权限管理模式。

小结

简单几点小结关于离线模式:

  1. 必须要有 CONNECTION_ADMIN 以及 CONNECTION_ADMIN权限 或者 SUPER权限(SUPER权限在未来会被废弃,而细分成更多细粒度权限),才能在线设置离线模式。
  2. 复制线程不会受到离线模式影响,还能正常工作。
  3. 当设置为离线模式时,没有授予 CONNECTION_ADMINSUPER 权限的普通用户,正在执行的SQL会被立即终止,连接也会被立即断开。
  4. 当设置为离线模式时,拥有 CONNECTION_ADMINSUPER 权限的用户,不会被断开连接。
  5. 当设置离线模式的用户不具备 SYSTEM_USER 权限(只拥有 CONNECTION_ADMIN 以及 CONNECTION_ADMIN权限)的话,拥有 SYSTEM_USER 权限的活跃用户连接不会被断开(因为想要断开 SYSTEM_USER 权限级别用户连接同样需要至少有 SYSTEM_USER 权限),详见下面的案例。

u1u2 两个用户,授权模式不同

用户 yejr 的授权模式如下

yejr 用户设置离线模式后,u2 用户的连接不会被断开(但不能再建立新连接),而 u1 用户的连接会被断开

参考

https://mp.weixin.qq.com/s/BnQU32SzkXy66-jHidISHw

标签:

头像

小麦苗

学习或考证,均可联系麦老师,请加微信db_bao或QQ646634621

您可能还喜欢...

发表回复

嘿,我是小麦,需要帮助随时找我哦
  • 18509239930
  • 个人微信

  • 麦老师QQ聊天
  • 个人邮箱
  • 点击加入QQ群
  • 个人微店

  • 回到顶部
返回顶部