mysql 数据库偶现入库失败排查及解决

背景

利用python脚本进行服务器关键进程的24小时持续监控,监控的数据入库到数据库中,便于事后进行分析。

问题列表
1、解决The total number of locks exceeds the lock table size错误
2、解决1064, "You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1")错误
发现问题1:
发现偶尔mysql会报入库失败的问题

定位分析:
修改python中存入数据库源码;通过try except去捕获报错信息,报错的详情信息存入在e变量中,可以直接进行打印;因为是偶现bug,还在日志中打印了报错的时间以及正在执行的语句。

#print(insert_sql) try: # 执行SQL语句 cursor.execute(insert_sql) # 提交到数据库执行 db.commit() #print('提交数据表成功') exceptException as e: # 发生错误时回滚 db.rollback() print("失败回滚"+str(datetime.now())) print(e) print("SQL:"+insert_sql)

结果抓取定位问题 mysql 数据库偶现入库失败排查及解决
文章图片

报错信息提示The total number of locks exceeds the lock table size,是缓存不足导致。
原因分析:因为监控的进程数量较多,而且执行的是批量入口操作,所以可能会导致数据抓取的值不足。
问题解决
可以通过登录mysql数据库服务器,修改配置问题my.ini中胡配置 innodb_buffer_pool_size=2GB#默认值为8M修改为2G或 3G,根据表大小,进行调优。

重启MySQL服务器 在linux下可以直接使用脚本修改,window服务器参考Windows 命令行重启MySQL服务进行重启。
问题2
报错信息如下
mysql 数据库偶现入库失败排查及解决
文章图片

问题分析
可能为使用了mysql的关键字导致
https://blog.csdn.net/wukong_...
【mysql 数据库偶现入库失败排查及解决】参考
1:mysql 数据库缓存调优之解决The total number of locks exceeds the lock table size错误
https://www.cnblogs.com/nulig...
1:Windows 命令行重启MySQL服务
https://cloud.tencent.com/dev...
2

    推荐阅读