mysql日常运维(2)

问题一:1.cannot load from mysql.proc
表现:从mysql5.1中导出全库导入到mysql5.5中,报ERROR 1548 (HY000): Cannot load from mysql.proc. The table is probably corrupted
解决方法:mysql5.5和mysql5.1的mysql.proc表时有区别的,修改表结构:

ALTER TABLE `proc`MODIFY COLUMN `comment`  text CHARACTER SET utf8 COLLATE utf8_bin NOT NULL AFTER `sql_mode`;


问题二:2.事务提交时间过长
表现:在批量查询较多,定时任务跑脚本插入数据,sql关联比较复杂的前提下,commit数据耗时长
架构:一台服务器装8个实例,基本都是查询统计使用,每个实例平均有四到五个业务的查询系统使用,服务器共有2个磁盘阵列组。一个为sas盘,一个为ssd盘。其中6个实例在sas盘阵列组,2个实例在ssd盘阵列组。
问题分析:分析commit的一个过程,mysql的二进制日志和事务commit之间有一个关系, 需要在二进制日志刷新成功后,才能commit . 而现在数据和二进制日志均在sas阵列,怀疑sas阵列出现了io瓶颈,通过数据库监控平台验证,sas盘上在那段时间的io使用率达到100%。由于多业务使用同一实例,多个查询统计系统使用的同一台服务器的资源,在并发量大的时候,sas盘遭遇IO瓶颈。而发现ssd盘阵列的io却使用非常的少。
解决方法:将该实例上所有的库迁移至ssd盘阵列,减少sas盘阵列的io压力。


问题三:3.如何删除几千万的数据
表现:tableA表冗余数据过多,需要清理,数据量达到千万级别。time列没有建索引,如何删除这么多数据。
解决方法:考虑给时间列加个索引,分批删除:
delete from tabA where time<'2009-10-01' order by time limit 10000;


问题四:4.查询被迫中断error 1317
表现:在数据库中执行查询,查询被迫中断。ERROR 1317 ( ): Query execution was interrupted
解决方法:Mysql查询语句,当被认为其搜索范围大于1/3(?),将会无视索引而对所有数据进行搜索,在执行这个SQL语句的时候,系统认为消耗资源太大,所以被强制停止了,等会再执行


问题五:5.DB_ONLINE_LOG_TOO_BIG错误
表现:在业务比较繁忙时做online ddl时,发生了DB_ONLINE_LOG_TOO_BIG错误
解决方法:增大innodb_online_alter_log_max_size的值



  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值