一周碎碎念,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的主要内容,如果未能解决你的问题,请参考以下文章