快乐学习
前程无忧、中华英才非你莫属!

MySQL异常处理


前言

因为看了一眼网站的活动截止24号课程就不免费了,熬夜把价值400多块老男孩的录制的MySQL视频课一口气看完了哈哈~,虽然很基础,顺便记录一下~,也get到了之前未曾接触过的新东西!看来得无时无刻都得保持学习的状态!以下是看视频过程中的PPT截图,和小编的个人见解!如有错误,请您谅解~


其实这么多错误,都是可以避免的,有一套很好的mysql运维,优化规范就可以了!例如说,权限问题,在安装的时候,每个目录应该什么权限就应该设置好了,并且还得有严谨,复杂、好记,安全的root口令。my.cnf 要贴合硬件参数的规模和实际业务的需求,来配置参数,各种业务的最大连接数等等等等。所以低级错误,就应该在生产环境发生率降低为零,mysql生产上线,重启的代价是非常大的!所以,不到万不得已不要重启生产环境的服务器!

Mysql数据库采用InnoDB模式,默认参数:innodb_lock_wait_timeout设置锁等待的时间是50s,一旦数据库锁超过这个时间就会报错。


通过下面语句查找到为提交事务的数据,kill掉此线程即可。 增加锁等待时间,即增大下面配置项参数值,单位为秒(s)。

select * from information_schema.innodb_trx,
A.应急方法:show processlist; kill掉出现问题的进程
B.根治方法:select * from innodb_trx 查看有是哪些事务占据了表资源。
C.我的方法:设置MySQL锁等待超时 innodb_lock_wait_timeout=50 ,autocommit=on
检查进程和防火墙和telnet 端口通不通。还是不行,就重启mysql服务。

mysql的socket本地连接,连接不上的话,就进行远程连接。加 -h 和 -P.
两个表中都有sid,mysql无法判断,报错的意思是你写的sql不严谨不明确。
数据类型插入错误。

非严格模式会屏蔽一些报错。

子查询 用where 指定返回一行数据就可以解决。记住mysql中有等于号的返回必须是一行,多余一行就报错、
解决方法三种。alter 处理,创建存储过程处理,shell脚本替换,

运用视图的时候,如果频繁改变表结构,就会报错,并且mysql在外国大牛权威指南里有明确说过,底层复杂,难以优化,会给互联网企业带来非常大的性能隐患,小编建议的做法就是直接不用!

这个小编一直忽略掉的参数,应该是5.7新添加的功能!用户资源管理这个就可以减轻程序端的控制了!减轻程序的复杂逻辑。

数据恢复的手段有很多,不要慌乱,大多数以闪回,如果你开启了行式的binlog等。大多数核心原理是通过解析binlog,进行逆向操作,把delete的变成insert,然后进行个性化的进行时间点的恢复。如果编程够牛,可以高度定制恢复的效果!了解binlog的格式和内容,会一些python,其实对于小编来说,问题不大!


延迟复制,mysql权威指南一个数据库界的前辈有一句话,复制不能代替备份!
但目前来看,复制延迟确实可以很快回滚到2小时之前!  延迟复制所带来的隐患小编还没有发现,如果可以还是实现延迟备份的功能来比较稳妥!

这个主从同步出错,还是要尽量避免,因为啥呢,如果频繁的主从同步出错,说明你的mysql规范没有弄好,经常脑裂导致主从混乱!

所以对于架构的设计,严格的主从集群规模,强一致性,这些都是互联网金融公司,以及非互联网金融公司,所要求的标准。

强一致性:可能 大家不理解,简单来说,主服务器和从服务器的数据必须,实时性的完全一致!


在过一段时间,小编会上几节,专门研究主从集群规模链式结构的搭建,从成本,性能,以及主从一致方面的,和解决数据不一致,脑裂,网络抖动,数据异常,等各种难题,进行一一解答,和实战演练!别急~马上就会post上线!
打赏

未经允许不得转载:同乐学堂 » MySQL异常处理

分享到:更多 ()

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

特别的技术,给特别的你!

联系QQ:1071235258QQ群:367203382