一周碎碎念,2021.7.18

Posted 老叶茶馆_

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了一周碎碎念,2021.7.18相关的知识,希望对你有一定的参考价值。

叨叨最近遇到的一些事以及见闻、思考。

这周GreatSQL 8.0.25(基于Percona 8.0.25)二进制版发布了,主要忙着准备ansible安装包和Docker镜像的事,也已经分别发布到gitee和docker上,相关资源链接:

  • https://gitee.com/GreatSQL/GreatSQL/releases

  • https://gitee.com/GreatSQL/GreatSQL-Ansible/releases

  • https://hub.docker.com/repository/docker/greatsql/greatsql

欢迎关注、尝鲜,尤其是在运行MGR的场景。

1. mysql时不时意外crash

本想分享下这个案例的,不过发现当时忘记保留素材了,只好套用一句老话:下次一定,O(∩_∩)O哈哈~

... ...

2. 利用binlog无法恢复数据

这是群友遇到的问题,简单说就是利用mysqlbinlog工具解析binlog文件,想要用来恢复数据,却发现无法成功恢复。

一开始以为是指定的 stop-position 有问题,没指定到 COMMIT 之后的那个位置,修改了之后还是不行。

后来发现真正原因是启用了GTID,但解析binlog时没加上 --skip-gtids 选项。详细分析过程我后面会再整理发布。

... ...

3. MySQL里长时间的慢查询kill无响应

还是群友的问题,问题现象是想杀掉某个运行了非常久的SELECT只读请求,执行完kill后,该线程状态变成了 killed,但线程却一直都还在,不会真正停掉。

他的MySQL版本是5.7.31,问题现象如下图:

执行 show engine innodb status\\G 的结果中看不到这两个事务。

查询 pfs.threads 表,能看到这个线程,状态也是Killed:

pstack中看到这个线程的堆栈:

Thread 228 (Thread 0x2b602c7ed700 (LWP 384677)):
#0  0x00002b5722b11e9d in nanosleep () from /lib64/libpthread.so.0
#1  0x0000000000f787a0 in os_thread_sleep(unsigned long) ()
#2  0x0000000000ef33ad in TrxInInnoDB::enter(trx_t*, bool) [clone .constprop.387] ()
#3  0x0000000000ef813e in innobase_commit(handlerton*, THD*, bool) ()
#4  0x00000000007e380c in ha_commit_low(THD*, bool, bool) ()
#5  0x0000000000e53081 in MYSQL_BIN_LOG::commit(THD*, bool) ()
#6  0x00000000007e41ae in ha_commit_trans(THD*, bool, bool) ()
#7  0x0000000000d2e212 in trans_commit_stmt(THD*) ()
#8  0x0000000000c877ea in mysql_execute_command(THD*, bool) ()
#9  0x0000000000c8a80d in mysql_parse(THD*, Parser_state*) ()
#10 0x0000000000c8b3fa in dispatch_command(THD*, COM_DATA const*, enum_server_command) ()
#11 0x0000000000c8ce17 in do_command(THD*) ()
#12 0x0000000000d4b658 in handle_connection ()
#13 0x00000000012192f1 in pfs_spawn_thread ()
#14 0x00002b5722b0aea5 in start_thread () from /lib64/libpthread.so.0
#15 0x00002b57245568dd in clone () from /lib64/libc.so.6

看到该线程已进入innodb commit状态,在这个阶段是不响应kill指令的,所以长时间一直处于Killed状态。

上述这种被kill后长时间无响应的,基本上只能重启实例了,当然最好是先查看线程堆栈确认。

想要避免再出现,需要做好预防工作,事先监控大SQL、长SQL请求,发现不对劲就要及时处理。

... ...

3. 我不是阿森纳球迷

说个好玩的,有位网友留言:

本来是看文章粉的,看了头像才发觉我们参加的都是同一个组织,年纪轻轻,看什么阿森纳

说的是我这个头像里穿的T恤,但实际上我并不是阿森纳的球迷,只不过有一次参加一个跑步活动,主办方发的衣服。

说起这件衣服,想起前几年在厦门第一次见到Monty老先生(MySQL之父)时,他看到这件衣服上有个foundation,就说他也有个foundation(意指MariaDB Foundation),哈哈。

喏,就是这件衣服了。。。


文章推荐:


扫码加入GreatSQL/MGR交流QQ群

点击文末“阅读原文”直达老叶专栏

以上是关于一周碎碎念,2021.7.18的主要内容,如果未能解决你的问题,请参考以下文章

一周碎碎念,2021.7.3

一周碎碎念,2021.7.25,ansible文件传输有问题?

一周碎碎念,2021.8.22,MGR课程进度约8/15了

一周碎碎念,2021.9.12,之前说的MGR课程上线啦

关于SASS的一些碎碎念

一周碎碎念,2021.7.11,主从延迟慢SQL优化AnsibleDocker等