暂无图片
分享
徐扬
2020-03-15
binlog日志增量还原数据库进程状态出现system lock等待

mysql5.6版本,centos7环境,通过xtrabackup全备加应用后续binlog日志还原mysql库,全备还原很顺利,binlog日志用mysqlsqlbinlog转换成sql脚本source执行,3G大的sql脚本跑了6个小时还没结束,执行过程非常缓慢,查看进程经常出现system lock状态,请教各位大神问题出现的可能原因。截屏20200315下午10.53.24.png

收藏
分享
6条回答
默认
最新
田弼元

sql数量很多,建议先看看iostat,是不是IO真的吃不消了

暂无图片 评论
暂无图片 有用 0
打赏 0
外包DBA

为啥要先转成sql脚本呢?
可以试试直接恢复~

暂无图片 评论
暂无图片 有用 0
打赏 0
徐扬

昨晚自己跑了8个小时终于恢复完了,恢复时看过iostat并不高,以为是开了event_scheduler的原因造成system lock,但是关闭之后重新跑sql还是报这个问题,总之谢谢各位专家

暂无图片 评论
暂无图片 有用 0
打赏 0
Rock Yan

出现system lock很正常,只要有表级锁就会出现,这跟你日志中执行的SQL内容有直接关系,在应用日志时这种信息很常见,通常都是很快的过去了,有的很快就没了,有的很长,你去从库看,通常在复制的时候show slave status结果 这种system lock也很多。
官方文档对system lock说的也不是很详细:

The thread has called mysql_lock_tables() and the thread state has not been updated since. This is a very general state that can occur for many reasons.
For example, the thread is going to request or is waiting for an internal or external system lock for the table. This can occur when InnoDB waits for a table-level lock during execution of LOCK TABLES. If this state is being caused by requests for external locks and you are not using multiple mysqld servers that are accessing the same MyISAM tables, you can disable external system locks with the --skip-external-locking option. However, external locking is disabled by default, so it is likely that this option will have no effect. For SHOW PROFILE, this state means the thread is requesting the lock (not waiting for it).

暂无图片 评论
暂无图片 有用 0
打赏 0
徐扬

好的,之前没太留意,后面我再多观察观察,谢谢!

暂无图片 评论
暂无图片 有用 0
打赏 0
徐扬
问题已关闭: 问题已经得到解决
暂无图片 评论
暂无图片 有用 0
打赏 0
回答交流
Markdown


请输入正文
提交
相关推荐
mysql8.0是免费的吗?
回答 1
已采纳
有企业版收费,社区版免费,看具体使用场景。
请问各位大佬,mysql是否支持ipv4和ipv6双栈运行?
回答 1
已采纳
自MySQL5.0.3起,就开始支持IPv6连接。因此,较新的MySQL版本,如MySQL8.0等,都具备完善的IPv4和IPv6双栈运行能力。
mysql如何记录用户登录ip
回答 2
上审计啦。开通用日志啦。抓包啦。都可以。
my sql5.7版本bit字段值不准确
回答 4
暂无文字回复
MySQL为什么在8.0.17版本引入克隆插件?
回答 1
已采纳
主要是为组复制服务。在组复制中添加一个新的节点时,差异数据的补齐是通过分布式恢复来实现的。在MySQL8.0.17版本之前,恢复方式只有一种,即通过二进制日志恢复。如果新节点需要的二进制日志已经被清除
我付款了,接下来怎么用?什么命令也都输入不了????
回答 3
你好我遇到了同样的问题,您的问题解决了吗
MySQL 用批处理命令按照日期生成文件名的时候,报文件名,目录名或卷标语法不正确,怎么解决?
回答 1
已采纳
在第4行前面加一行命令,看看这个变量的值是什么echo%DT%如果存在特殊符号,肯定会报错。bat里对date和time进行字符串截取来解析日期和时间的方式是不严谨的,因为这个格式是受操作系统的日期时
mysql 中求sql,把所有邮箱中的字符替换成*?
回答 1
已采纳
最直接的做法,从第一个@截取到最后,再在前面拼上号withtas(select'abcdefg@163.com'e)selectconcat('',substr(e,instr(e,'@')))fro
关于delete-master-logs
回答 1
deletemasterlogs是备份完后,就删除binlog(执行的命令参考PURGEBINARYLOGSTO'mysqlbin.000276'),不会做binlog的备份(它也不知道往哪备啊)
关于log_queries_not_using_indexes 的问题
回答 1
即使查询时间短,但是没有使用索引就会被记录到慢日志中