MySQL好玩新特性:离线模式

离线环境下 MySQL 安装教程 在实际的服务器部署中,我们常常会遇到服务器处于离线状态,无法直接从网络下载软件的情况。MySQL 作为一款广泛使用的关系型数据库管理系统,在很多项目中都起着关键作用。本文将详细介绍在离线环境下安装 MySQL 的具体步骤,帮助大家解决离线安装的难题。 阅读详情
  • GreatSQL社区原创内容未经授权不得随意使用,转载请联系小编并注明来源。
  • GreatSQL是MySQL的国产分支版本,使用上与MySQL一致。
  • 作者:Yejinrong/叶金荣
  • 文章来源:GreatSQL社区原创

继续吹MySQL 8.0~

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

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

mysql> set global offline_mode = on; -- 打开离线模式,拒绝外部请求

mysql> set global offline_mode = off; -- 关闭离线模式,允许外部连接请求

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

1. 无法创建新连接

$ mysql -h127.0.0.1 -uyejr -pxx -P4306 sbtest
mysql: [Warning] Using a password on the command line interface can be insecure.
ERROR 3032 (HY000): The server is currently in offline mode

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

$ mysql -S/data/MySQL/mysql.sock
...
mysql> show processlist;
+-----+------+-----------+------+---------+------+-------+------------------+
| Id  | User | Host      | db   | Command | Time | State | Info             |
+-----+------+-----------+------+---------+------+-------+------------------+
| 304 | yejr | localhost | NULL | Query   |    0 | init  | show processlist |
+-----+------+-----------+------+---------+------+-------+------------------+
1 row in set (0.00 sec)

[sbtest]>select *,sleep(10) from t1 limit 3; -- 正在运行的SQL会立即被终止,并断开连接
ERROR 2013 (HY000): Lost connection to MySQL server during query
No connection. Trying to reconnect...
ERROR 3032 (HY000): The server is currently in offline mode
ERROR:
Can't connect to the server

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

[ 1s ] thds: 16 tps: 442.02 qps: 9078.28 (r/w/o: 6382.37/1795.94/899.96) lat (ms,99%,99%,99.9%): 150.29/150.29/150.29 err/s: 0.00 reconn/s: 0.00
[ 2s ] thds: 16 tps: 471.23 qps: 9387.56 (r/w/o: 6576.19/1868.91/942.46) lat (ms,99%,99%,99.9%): 61.08/61.08/65.65 err/s: 0.00 reconn/s: 0.00
[ 3s ] thds: 16 tps: 386.03 qps: 7712.68 (r/w/o: 5399.48/1541.14/772.07) lat (ms,99%,99%,99.9%): 82.96/82.96/84.47 err/s: 0.00 reconn/s: 0.00
[ 4s ] thds: 16 tps: 547.00 qps: 10894.97 (r/w/o: 7609.98/2190.99/1094.00) lat (ms,99%,99%,99.9%): 65.65/65.65/68.05 err/s: 0.00 reconn/s: 0.00
FATAL: mysql_drv_query() returned error 2013 (Lost connection to MySQL server during query) for query 'COMMIT'
(last message repeated 1 times)
FATAL: mysql_drv_query() returned error 2013 (Lost connection to MySQL server during query) for query 'SELECT c FROM sbtest1 WHERE id=4822870'
FATAL: mysql_drv_query() returned error 2013 (Lost connection to MySQL server during query) for query 'COMMIT'
FATAL: mysql_drv_query() returned error 2013 (Lost connection to MySQL server during query) for query 'UPDATE sbtest1 SET k=k+1 WHERE id=2265001'
FATAL: mysql_drv_query() returned error 2013 (Lost connection to MySQL server during query) for query 'SELECT c FROM sbtest8 WHERE id BETWEEN 3389984 AND 3390083'

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

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

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

有 u1 和 u2 两个用户,授权模式不同

mysql> show grants for u1;
+----------------------------------------+
| Grants for u1@%                        |
+----------------------------------------+
| GRANT USAGE ON *.* TO `u1`@`%`         |
| GRANT SELECT ON `sbtest`.* TO `u1`@`%` |
+----------------------------------------+

mysql> show grants for u2;
+----------------------------------------+
| Grants for u2@%                        |
+----------------------------------------+
| GRANT USAGE ON *.* TO `u2`@`%`         |
| GRANT SYSTEM_USER ON *.* TO `u2`@`%`   |
| GRANT SELECT ON `sbtest`.* TO `u2`@`%` |
+----------------------------------------+

用户 yejr 的授权模式如下

+--------------------------------------------------------------------+
| Grants for yejr@%                                                  |
+--------------------------------------------------------------------+
| GRANT USAGE ON *.* TO `yejr`@`%`                                   |
| GRANT CONNECTION_ADMIN,SYSTEM_VARIABLES_ADMIN ON *.* TO `yejr`@`%` |
| GRANT ALL PRIVILEGES ON `sbtest`.* TO `yejr`@`%`                   |
+--------------------------------------------------------------------+

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

# 三个用户先分别建立连接
$ jobs
[1]   Stopped                 mysql -h127.0.0.1 -uyejr -pxx -P4306 sbtest
[2]-  Stopped                 mysql -h127.0.0.1 -uu2 -pxx -P4306 sbtest
[3]+  Stopped                 mysql -h127.0.0.1 -uu1 -pxx -P4306 sbtest

# 设置离线模式
$ fg 1
mysql -h127.0.0.1 -uyejr -pxx -P4306 sbtest
[yejr@db160] [sbtest]>set global offline_mode=on;
Query OK, 0 rows affected (0.00 sec)

# u1用户被断开连接
$ fg 3
mysql -h127.0.0.1 -uu1 -pxx -P4306 sbtest
[u1@db160] [sbtest]>select 1;
ERROR 2013 (HY000): Lost connection to MySQL server during query
No connection. Trying to reconnect...
ERROR 3032 (HY000): The server is currently in offline mode
ERROR:
Can't connect to the server

# u2用户不会被断开连接
$ fg 2
mysql -h127.0.0.1 -uu2 -pxx -P4306 sbtest

[u2@db160] [sbtest]>select 1;
+---+
| 1 |
+---+
| 1 |
+---+

# 但u1/u2用户均不能再建立新链接
$ mysql -h127.0.0.1 -uu2 -pxx -P4306 sbtest
mysql: [Warning] Using a password on the command line interface can be insecure.
ERROR 3032 (HY000): The server is currently in offline mode

$ mysql -h127.0.0.1 -uu1 -pxx -P4306 sbtest
mysql: [Warning] Using a password on the command line interface can be insecure.
ERROR 3032 (HY000): The server is currently in offline mode

是不是有点好玩呀~

结合前面的两篇文章 MySQL 8.0不再担心被垃圾SQL搞爆内存 以及 InnoDB buffer pool size进度更透明 可以看到MySQL 8.0在各个细节方面做的是越来越好了。

延伸阅读


Enjoy GreatSQL :)

关于 GreatSQL

GreatSQL是由万里数据库维护的MySQL分支,专注于提升MGR可靠性及性能,支持InnoDB并行查询特性,是适用于金融级应用的MySQL分支版本。

相关链接: GreatSQL社区 Gitee GitHub Bilibili

GreatSQL社区:

image

社区有奖建议反馈: https://greatsql.cn/thread-54-1-1.html

社区博客有奖征稿详情: https://greatsql.cn/thread-100-1-1.html

社区2022年度勋章获奖名单: https://greatsql.cn/thread-184-1-1.html

(对文章有疑问或者有独到见解都可以去社区官网提出或分享哦~)

技术交流:

image-20221030163217640

DataGrip 2024.x最新版汉化及数据库连接配置一条龙指南(附驱动自动安装) 本文详细介绍了DataGrip 2024.x最新版的汉化方法及数据库连接配置全流程,特别针对MySQL 8.0的连接驱动自动安装和高级参数设置进行解读。通过实战案例展示本地开发环境和云数据库的连接技巧,帮助开发者快速上手JetBrains这款数据库管理工具,提升工作效率。 阅读详情

相关推荐

MySQL引入的新特性:离线模式数据库

总结一下,MySQL的离线模式数据库是一个有用的新特性,它允许开发人员在没有网络连接的情况下使用本地数据库进行查询和操作。然而,需要注意的是离线模式数据库只支持读取操作,对本地数据库的更改将在重新连接到在线数据库服务器时丢失。离线模式数据库允许开发人员在没有网络连接的情况下继续使用数据库,这对于一些特定的应用场景非常有用,比如在断网或者没有稳定网络连接的环境下进行开发和测试。通过将数据从在线数据库服务器复制到本地数据库服务器,开发人员可以在没有网络连接的情况下使用本地数据库进行查询和操作。

HackGJN的博客 551

Win安装MySQL(安装离线版)———最新最全最细

Win安装MySQL(安装离线版)———最新最全最细

致力于分享在各类技术领域的学习与实践经验,涵盖编程、虚拟化、开源工具、网络安全等。 2979

librealsense2 camera.so: undefined symbol:ZN2cV3MatC1EV解决笔记记录

先参考的这个兄弟的办法虽然没解决但是提供了大方向感谢; realsenseD400系列相机报错:undefined symbol: _ZN2cv3MatC1EiiiRKNS_7Scalar_IdEE解决方案 后解决办法参考 No GPU usage on jetson xavier NX · Issue #2326 · IntelRealSense/realsense-ros · GitHubOpenCV_DIR" to a directory containing one of the above f

梁俊星的博客 3516

Mysql数据库管理-离线模式offline_mode 类似oracle kill local=no 禁止再有连接,维护模式很强

在以前,当需要对MySQL数据库进行维护操作时,通常需要先进行主从切换,然后修改设置并重启实例,关闭网络监听,只允许从本地socket方式登入,再进行相应的维护操作;从MySQL 5.7开始,支持设置为离线模式(offline_mode),再有维护操作需求就不用这么麻烦了。当设置为离线模式后,普通用户将无法继续发起连接请求,甚至当前正在执行的SQL也会立即被终止并被断开连接。权限的普通用户,正在执行的SQL会被立即终止,连接也会被立即断开。权限等,细化离线模式的权限管理模式。权限的用户,不会被断开连接。

oradbm的博客 2877

别再套用星形公式了!三角形接法PMSM的FOC控制,扇区判断与作用时间推导全解析

本文深入解析三角形接法永磁同步电机(PMSM)的FOC控制技术,重点探讨30度相位差对SVPWM扇区判断与电压矢量作用时间的影响。通过数学推导与实验验证,详细讲解修正后的扇区划分规则、作用时间计算公式优化方法,并提供可直接移植到STM32的代码实现,帮助工程师解决三角形接法特有的相电流重构与同步采样难题。

weixin_30689307的博客 469

Windows环境下安装MySQL离线包

MySQL是一个关系型数据库管理系统,因为其速度快,成本低,体积小的优秀特性成为当今最流行的关系型数据库管理系统之一,现在各大中小型网站都在使用该数据库,接下来将介绍如何安装MySQL这样一款数据库。在Windows环境下安装Mysql离线包。

追求细节,成就完美 5948

高通ISP模块全解析:从Raw到JPEG的18个关键处理步骤(附避坑指南)

本文全面解析高通ISP模块从Raw到JPEG的18个关键处理步骤,涵盖原始数据预处理、色彩科学处理链、画质增强与降噪等核心环节。通过实战调优经验,揭示ISP架构中的技术原理与工程实践要点,帮助开发者避免常见问题,提升移动影像处理质量。

weixin_30399155的博客 359

MySQL配置文件my.ini的一般设置

[mysqld] # 设置3306端口 port=3306 # 设置mysql的安装目录 basedir=D:\Software Package\mysql-8.0.12-winx64\mysql-8.0.12-winx64\ # 设置mysql数据库的数据的存放目录 datadir=D:\database\MySQL\Data # 允许最大连接数 max_connections=200 # 允...

学无止境 1万+

ADS实战指南:负载牵引(Loadpull)在射频功放设计中的关键应用

本文深入解析了负载牵引(Loadpull)技术在射频功率放大器设计中的核心作用与实战方法。通过生动的比喻和详细的ADS软件操作指南,阐述了如何通过系统扫描负载阻抗,在史密斯圆图上绘制等功率线与等效率线,从而精准找到最优阻抗点,以平衡输出功率与效率,是应对5G等现代通信系统严苛要求的必备技能。

weixin_29198045的博客 601

基于STM32的智能手环心率血氧体温监测系统(完整设计)

本文设计了一款基于STM32单片机的多功能智能手环系统,集成心率、血氧、体温实时监测功能,并支持运动数据管理与健康预警。系统采用MAX30102传感器实现心率血氧监测,DS18B20检测体温,ADXL345进行步数统计,通过OLED屏幕显示数据。研究通过低功耗硬件选型与模块化软件架构设计,实现了多参数同步采集、阈值预警及蓝牙数据传输功能。测试结果表明,系统在健康监测精度、续航能力及用户交互体验上均达到预期目标,为个人健康管理提供了实用解决方案。

3254968421的博客 701

MySQL5.7 新特性: offline mode

在MySQL 5.7.5中,为server层增加了离线模式(offline mode),以便于管理员的升级维护工作。 对应worklog: http://dev.mysql.com/worklog/task/?id=3836 该特性会产生的影响是: 1.在设置成离线模式后,非SUPER账户的会话会被断开(类似于执行kill session操作) ...

weixin_33724659的博客 2257

泰山派rk3566 audio音频基础介绍

本文介绍了嵌入式系统中音频处理的基础知识,重点围绕RK3566平台的音频子系统展开。文章首先解释了音频信号从模拟到数字的转换过程,包括采样率、位深和声道等核心概念。随后详细分析了嵌入式音频开发中的关键接口:I2C用于控制音频编解码器,I2S作为专用音频数据传输总线,以及PCM作为原始音频格式和ALSA设备抽象的双重含义。通过对这些基础概念和接口的解析,为在RK3566平台上进行音频驱动开发和应用调试提供了理论基础。

qq_37077309的博客 294

MySQL的在线模式学习笔记

MySQL在线模式学习笔记

whereabouts_的博客 1262

YOLOv11改进 | 主干/Backbone篇 | 利用RT-DETR主干网络PPHGNetV2助力yolov11有效涨点(轻量化目标检测网络)

本文给大家带来利用RT-DETR模型主干HGNet去替换YOLOv11的主干,RT-DETR是今年由百度推出的第一款实时的ViT模型,其在实时检测的领域上号称是打败了YOLO系列,其利用两个主干一个是HGNet一个是ResNet,其中HGNet就是我们今天来讲解的网络结构模型,这个网络结构目前还没有推出论文,所以其理论知识在网络上也是非常的少,我也是根据网络结构图进行了分析(精度mAP提高0.05)。YOLOv11改进系列专栏——本专栏持续复习各种顶会内容——科研必备​目录一、本文介绍。

Snu77的博客 3721

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

MySQL 8.4新特性速览

group_replication_exit_state_action 默认值改成了OFFLINE_MODE,以前是READ_ONLY。事务提交后会广播到集群的多数节点,然后节点检查是否有冲突,如果没有冲突,则事务在本地提交,其他节点异步处理,可能导致读取到稍旧的数据。innodb_buffer_pool_size innodb_buffer_pool_chunk_size这个结果的1/2;这个节点的行为,之前默认情况下,是设置为super_read_only,现在是会把实例切换到离线模式。

优快云_WYY的博客 1768

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

新特性解读 | 组复制成员的自动保护模式

原文:https://mysqlhighavailability.com/automatic-member-fencing-with-offline_mode-in-group-replication/ 作者:Nuno Carvalho 翻译:管长龙 Nuno Carvalho 是 Oracle 的首席软件工程师和 MySQL 复制服务团队负责人,该团队负责 MySQL 组复制插件。他的研究兴趣...

ActionTech的博客 619

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

mysql组复制自动离线_新特性解读 | 组复制成员的自动保护模式

原文:https://mysqlhighavailability...作者:Nuno Carvalho 翻译:管长龙Nuno Carvalho 是 Oracle 的首席软件工程师和 MySQL 复制服务团队负责人,该团队负责 MySQL 组复制插件。他的研究兴趣包括复制技术,可靠的系统和高可用性。在加入 MySQL 团队之前,他是葡萄牙米尼奥大学的研究生和研究员,在那里他设计和实现了改善分布式系统...

weixin_33594662的博客 250

【实战指南】DBeaver备份还原MySQL:从零到精通的避坑手册

本文详细介绍了如何使用DBeaver进行MySQL数据库的备份与还原,涵盖环境准备、操作流程、权限问题及性能优化等关键环节。特别推荐DBeaver的事务一致性备份功能,能在不锁表的情况下完成大数据量备份,适合生产环境使用。同时提供了跨平台统一体验、自动化备份方案等实用技巧,帮助开发者高效避坑。

weixin_28363123的博客 280

从零搭建永不删档的Minecraft互通服务器:数据持久化与基岩/Java版互通实战

在服务器架构与游戏联机领域,数据持久化是保障服务长期稳定运行的核心技术基石。其原理在于通过自动化备份、冗余存储和容灾机制,确保关键数据不丢失、服务不中断。这项技术的核心价值在于为需要长期运营的在线服务提供可靠性保障,尤其适用于游戏服务器、社区平台等对数据连续性要求极高的应用场景。本文聚焦于Minecraft服务器搭建,深入探讨如何实现基岩版与Java版玩家的无缝互通,并构建一套以数据持久化为核心的“永不删档”运维体系。通过整合GeyserMC代理桥接、Floodgate身份验证及自动化备份脚本,为追求长期稳

weixin_33796177的博客 439

GreatSQL社区2023全年技术文章总结

GreatSQL社区自成立以来一直致力于为广大的数据库爱好者提供一个交流与学习的平台。在2023年,我们见证了社区的蓬勃发展,见证了众多技术文章的诞生与分享。此篇总结呈现GreatSQL社区2023年社区技术文章在优快云发布的全部。这些文章涵盖了GreatSQL、MGR、源码解析、故障解析、SQL优化、安装部署、等众多数据库技术文章。

GreatSQL2021的博客 1223

Tlias教学管理系统项目课程学习 -- 02Web后端基础

Web后端基础: Maven课程学习 Web后端学习 MySQL课程学习 JDBC课程学习 Mybatis课程学习

2301_82291365的博客 1622

Spring Boot+Vue健康管理平台设计与实现

健康管理系统作为医疗信息化的重要组成部分,通过整合多源健康数据解决信息孤岛问题。其技术实现通常采用前后端分离架构,其中Spring Boot凭借自动配置和起步依赖特性可快速构建RESTful API,Vue.js则以其响应式数据绑定和组件化开发优势提升前端效率。在工程实践中,MySQL关系型数据库因其成熟的联表查询性能,常被选作健康数据的存储方案。本方案创新性地采用三级缓存机制(LocalStorage+IndexedDB+服务端数据库),有效保障弱网环境下的数据可靠性,同时通过ECharts可视化组件实现

weixin_30902251的博客 390

SpringBoot农产品销售管理系统设计与实践

农产品销售管理系统是农业数字化转型中的关键基础设施,通过SpringBoot框架实现全流程数字化管理。系统采用MySQL数据库存储农产品数据,结合动态定价算法和溯源码生成技术,提升销售效率和数据准确性。在技术实现上,系统利用Redis缓存优化性能,并针对农村网络环境设计了离线应急方案。该系统特别适用于农产品溯源、库存预警和多维度销售分析等场景,已在实际应用中显著提升销售业绩并降低损耗率。

weixin_30786657的博客 540
上一篇: MySQL一次大量内存消耗的跟踪
下一篇: GreatSQL社区月报 | 2023.04
GreatSQL社区
博客等级 码龄5年 1210粉丝 390原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值