前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >一周碎碎念,2021.7.18

一周碎碎念,2021.7.18

作者头像
老叶茶馆
发布2021-07-30 11:01:51
3860
发布2021-07-30 11:01:51
举报

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

这周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中看到这个线程的堆栈:

代码语言:javascript
复制
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. 我不是阿森纳球迷

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

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

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

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

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

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2021-07-19,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 老叶茶馆 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1. MySQL时不时意外crash
  • 2. 利用binlog无法恢复数据
  • 3. MySQL里长时间的慢查询kill无响应
  • 3. 我不是阿森纳球迷
相关产品与服务
容器镜像服务
容器镜像服务(Tencent Container Registry,TCR)为您提供安全独享、高性能的容器镜像托管分发服务。您可同时在全球多个地域创建独享实例,以实现容器镜像的就近拉取,降低拉取时间,节约带宽成本。TCR 提供细颗粒度的权限管理及访问控制,保障您的数据安全。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档