MySQL5.7 新特性: offline mode

在MySQL 5.7.5中,为server层增加了离线模式(offline mode),以便于管理员的升级维护工作。

对应worklog:
该特性会产生的影响是:
1.在设置成离线模式后,非SUPER账户的会话会被断开(类似于执行kill session操作)
2.SUPER账户能够保持连接,并可以通过SUPER账户创建新的连接
3.备库复制线程不会被中断
a. 如何设置:
root@sb1 08:28:29>set global offline_mode = on;
Query OK, 0 rows affected (0.00 sec)
开启为ON时,即去kill所有非super的账户(其实就是设置kill标记),函数killall_non_super_threads
b.认证阶段(acl_authenticate)
如果新的连接请求过来,对于非super账户,会加锁LOCK_offline_mode并判断, 代码段如下:
    if (!(sctx->master_access & SUPER_ACL) && !thd->is_error())
{
mysql_mutex_lock(&LOCK_offline_mode);
bool tmp_offline_mode= MY_TEST(offline_mode);
mysql_mutex_unlock(&LOCK_offline_mode);if (tmp_offline_mode)
{
my_error(ER_SERVER_OFFLINE_MODE, MYF(0));
DBUG_RETURN(1);
}
}
用户登录失败会收到报错:
$perror 1917
MySQL error code 1917 (ER_SERVER_OFFLINE_MODE): The server is currently in offline mode
显然加锁判断不是什么好的实现方式,对于短连接场景,早晚会成为一个新的瓶颈,比较理想的实现方式应该是LOCK-FREE的变量赋值,或者spin lock也好….

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值