作家
登录

MySQL数据库的“十宗罪”(附10大经典错误案例)

作者: 来源: 2017-09-01 09:50:24 阅读 我要评论

笔者在刚开端进修数据库的时刻,没少走弯路。经常会碰到各类八怪七喇的 error 信息,碰到报错会很慌张,急需一个解决问题的办法。跟无头苍蝇一样,会不加思考地把缺点粘到百度上,欲望赶紧查找一下有没有好的问题处理办法。我想上述这个应当是刚大年夜事数据库的小白都邑碰到的困境。

今天就给大年夜家列举 MySQL 数据库中最经典的十大年夜缺点案例,并附有处理问题的解决思路和办法。欲望能给刚入行或数据库爱好者一些赞助,往后再碰到任何报错,我们都可以很淡定地去处理。

进修任何一门技巧的同时,其实就是自我修炼的过程。沉下心,测验测验却竽暌沟抱数据的世界!

案例一

Too many connections

(连接数过多,导致连接不上数据库,营业无法正常进行)

  1. mysql> show variables like '%max_connection%'
  2.  
  3. | Variable_name   | Value | 
  4.  
  5. max_connections | 151   |  
  6.  
  7. mysql> set global max_connections=1;Query OK, 0 rows affected (0.00 sec) 
  8.  
  9. [root@node4 ~]# mysql -uzs -p123456 -h 192.168.56.132 
  10.  
  11. ERROR 1040 (00000): Too many connections  

解决问题的思路:

但如许调剂会有隐患,因为我们无法确认数据库是否可以承担这么大年夜的连接压力,就比如本来一小我只能吃一个馒头,但如今却非要让他吃 10 个,他肯假寓受不了。反竽暌功到办事器膳绫擎,就有可能会出现宕机的可能。

所以这又反竽暌钩出了,我们在新上线一个营业体系的时刻,要做浩揭捉?力测试。包管后期对数据库进行优化调剂。

2、其次可以限制 InnoDB的并发处理数量,如不雅 innodb_thread_concurrency = 0(这种代表不受限制) 可以先改成 16 或是 64 看办事器压力。

如不雅异常大年夜,可以先改的小一点让办事器的压力下来之后,然后再慢慢增大年夜,根据本身的营业而定,小我建议可以先调剂为 16 即可。

MySQL 跟着连接数的增长机能是会降低的,在 MySQL 5.7 之前都须要闪开辟合营设置 thread pool,连接复竽暌姑。MySQL 5.7 之后数据库自带 thread pool 了,连接数问题也获得了响应的解决。


别的对于有的监控法度榜样会攫取 information_schema 下面的表,可以推敲封闭下面的参数:

  • innodb_stats_on_metadata=http://database.51cto.com/art/201708/0
  • set global innodb_stats_on_metadata=http://database.51cto.com/art/201708/0

案例二

Last_SQL_Errno: 1062 (大年夜库与主库数据冲突)

Last_Errno: 1062

  1. Last_Errno: 1062 
  2.  
  3.    Last_Error: Could not execute Write_rows event on table test.t;  
  4.  
  5.    Duplicate entry '4' for key 'PRIMARY',  
  6.  
  7.    Error_code: 1062; handler error HA_ERR_FOUND_DUPP_KEY;  
  8.  
  9.    the event's master log mysql-bin.000014, end_log_pos 1505  

解决办法:在确保主大年夜数据一致性的前提下,可以在大年夜库进行缺点跳过。一般应用 percona-toolkit 中的 pt-slave-restart 进行。

在大年夜库完成如下操作:

  • [root@zs bin]# ./pt-slave-restart -uroot -proot123
  • 2017-07-20T14:05:30 p=…,u=root node4-relay-bin.000002 1506 1062

之后最好在大年夜库中开启 read_only 参数,禁止在大年夜库进行写入操作。

Last_IO_Errno: 1593(server-id冲突)

  1. Last_IO_Error:  
  2.  
  3.  
  4.   Fatal error: The slave I/O thread stops because master and slave have equal MySQL server ids;  
     1/7    1 2 3 4 5 6 下一页 尾页

      推荐阅读

      攻击与响应:云原生网络安全与虚拟机安全

    云原生工作负载和容器本质上是不合的。人们须要懂得若何保持安然,起重要懂得赓续变更的威逼性质。那么哪个更安然:虚拟机(VM)照样容器?事实是,确保容器和云原生工作负载的安然与虚拟机不>>>详细阅读


    本文标题:MySQL数据库的“十宗罪”(附10大经典错误案例)

    地址:http://www.17bianji.com/lsqh/37079.html

关键词: 探索发现

乐购科技部分新闻及文章转载自互联网,供读者交流和学习,若有涉及作者版权等问题请及时与我们联系,以便更正、删除或按规定办理。感谢所有提供资讯的网站,欢迎各类媒体与乐购科技进行文章共享合作。

网友点评
自媒体专栏

评论

热度

精彩导读
栏目ID=71的表不存在(操作类型=0)