首页
学习
活动
专区
圈层
工具
发布
    • 综合排序
    • 最热优先
    • 最新优先
    时间不限
  • 来自专栏爱可生开源社区

    故障分析 | MySQL死锁案例分析

    作者:杨奇龙网名“北在南方”,资深 DBA,主要负责数据库架构设计和运维平台开发工作,擅长数据库性能调优、故障诊断。 本次分享的一个死锁案例是 涉及通过辅助索引的更新以及通过主键删除导致的死锁。希望能够对想了解死锁的朋友有所帮助。 二 案例分析2.1 业务逻辑select for update 表记录并加上 x 锁,查询数据,做业务逻辑处理,然后删除该记录。还有其他业务逻辑要更新记录,导致死锁。 `dl` trx id 1416764 lock_mode X locks rec but not gap waitingRecord lock, heap no 7 PHYSICAL RECORD: 另外文章的最后我们再次复习一下 MySQL 的加几个基本原则,方便大家后面遇到死锁案例进行分析:原则 1:加锁的基本单位是 next-key lock。原则 2:查找过程中访问到的对象才会加锁。

    1.2K30编辑于 2023-01-05
  • 来自专栏爱可生开源社区

    故障分析 | MySQL死锁案例分析

    作者:杨奇龙网名“北在南方”,资深 DBA,主要负责数据库架构设计和运维平台开发工作,擅长数据库性能调优、故障诊断。 本次分享的死锁案例是 更新不存在的记录加上 X GAP lock 和 insert 的意向锁冲突。希望能够对想了解死锁的朋友有所帮助。 二 案例分析2.1 业务逻辑业务逻辑: 业务需要并发不同数据(insert+update),首先是更新记录,如果发现更新的 affect rows 为0,然后就执行插入,如果插入失败,再执行更新。 tables in use 1, locked 1LOCK WAIT 4 lock struct(s), heap size 1128, 3 row lock(s), undo log entries 1MySQL 另外文章的最后我们再次复习一下 MySQL 的加几个基本原则,方便大家后面遇到死锁案例进行分析:原则 1:加锁的基本单位是 next-key lock。原则 2:查找过程中访问到的对象才会加锁。

    1K41编辑于 2022-12-15
  • 来自专栏爱可生开源社区

    故障分析 | MySQL 优化案例 - select count(*)

    ---- 本文关键字:count、SQL、二级索引 相关文章推荐: 故障分析 | MySQL 优化案例 - 字符集转换 技术分享 | MySQL 监控利器之 Pt-Stalk 一、故事背景 项目组联系我说是有一张 调整部分 MySQL 参数,重启 MySQL,保证目前 innodb buffer pool (内存缓冲区) 中为空,不缓存任何数据; 3. 再次重启 MySQL,保证内存缓冲区为空; 6. 再次执行 select count(*),理论上走二级索引; 7. 再次查看内存缓冲区中缓存的数据量(理论上只会缓存二级索引)。 key_len: 4 ref: NULL rows: 5117616 filtered: 100.00 Extra: Using index 七、案例总结 升级到 MySQL 8 中,使用并行查询,加快检索速度。 当然,什么时候 InnoDB 存储引擎可以直接实现计数器的功能就好了!

    5.9K30发布于 2020-07-09
  • 来自专栏爱可生开源社区

    故障分析 | Java 连接 MySQL 8.0 排错案例

    作者:胡呈清 爱可生 DBA 团队成员,擅长故障分析、性能优化,个人博客:https://www.jianshu.com/u/a95ec11f67a8,欢迎讨论。 Server 重启了; 2.MySQL MGR 发生切换了; 3.DBA 对 MySQL Server 做了某些变更后。 结论 一开始,在 MySQL Server 上创建应用用户后,手工使用 mysql 客户端对应用用户进行了验证,MySQL Server 缓存了应用用户的验证信息。 之后如果发生以下几种情况: 1.MySQL Server 重启了; 2.MySQL MGR 发生切换了; 3.DBA 对 MySQL Server 做了 flush privileges;。 mysql_native_password。

    1.4K20发布于 2021-03-16
  • 来自专栏爱可生开源社区

    故障分析 | MySQL 优化案例 - 字符集转换

    ---- 本文关键字:SQL 优化、字符集 相关文章推荐: 故障分析 | MySQL 派生表优化 故障分析 | 有效解决 MySQL 行锁等待超时问题【建议收藏】 一、背景 开发联系我,说是开发库上有一张视图查询速度很慢 二、问题 SQL Server version: 5.7.24-log MySQL Community Server (GPL) 这个 SQL 非常简单,定义如下,其中就引用了 view_dataquality_analysis 那么基本可以验证我的猜想,当 MySQL 创建视图时,如果发现表连接字段字符集不相同时,会自动添加字符集转换。 另外之前我们有个为什么 b 表没有走索引,是因为缺失了索引吗?的疑问。 其实这个问题有点类似于 int=varchar 隐式转换问题,等号左边为 int 类型,右边为 varchar 类型,那么 MySQL 会自动转换类型为一致,因而无法走索引。

    1.7K10发布于 2020-07-02
  • 来自专栏爱可生开源社区

    故障分析 | MySQL 从机故障重启后主从同步报错案例分析

    故障现象 MySQL 从库所在主机故障重启后,sql_thread 线程报错: root@3306 (none)> show slave status\G -- 摘取有用信息如下: Slave_IO_Running 故障分析 主机重启前,主从同步正常,主机重启后,主从同步由于主键冲突报错,对比了冲突主键所在行记录在主从库是一致的,初步分析事务'471c2974-f9bb-11eb-afb1-52540010fb89 :88313207'在主机故障前已经在从库进行了回放,那为何事务会重复回放呢? 测试验证 搭建一主一从测试环境,通过 sysbench 模拟主库并发插入,从库主机暴力关机后,故障复现: root@mysql.sock][(none)]> select * from performance_schema.replication_applier_status_by_worker 故障处理 既然错误原因是事务重复执行,那跳过错误就好了,有如下两种方式,根据需要选取其中一种方式执行: 5.1.

    1.2K10编辑于 2022-04-06
  • 来自专栏全栈程序员必看

    【shell案例】CentOS7安装MySQL脚本案例

    前言 此脚本为一个学员在工作中遇到在centos7中安装mysql的问题,于是安排一个学员花了15分钟写了一个脚本,可以正常安装使用。 mysql的版本为5.7版本 此脚本涉及到安装好mysql后,日志中没有临时密码的问题,所以该学员使用了破解mysql密码登陆修改去修改密码的方法,也算是一种好方法,在工作中,能解决问题才是根本,其他的技巧都是扯淡 /bin/bash file=mysql57-community-release-el7-10.noarch.rpm mkdir -p /app cd /app if [ -f "$file" ];then echo "文件已存在,无需下载" else echo "正在下载所需源rpm包请稍后" wget https://dev.mysql.com/get/mysql57-community-release-el7 =1" >> /etc/my.cnf systemctl restart mysqld echo "对数据库进行操作" mysql -u root -e 'use mysql;' mysql -u root

    66920编辑于 2022-09-01
  • 来自专栏Linux基础 for 凡人

    MySQL故障案例 | ERROR 1071 (42000): Specified key was too long

    MySQL 建表出现如下错误 (5.7) ERROR 1071 (42000): Specified key was too long; max key length is 3072 bytes查看官网内容得知 innodb_large_prefix is disabled, the index key prefix limit is 767 bytes for tables of any row format. https://dev.mysql.com

    2.9K00编辑于 2022-06-22
  • 来自专栏Kubernetes 与 Devops 干货分享

    Docker故障案例分析

    案例一 docker启动故障 症状 在执行如下启动命令后docker restart mysql 出现了一下异常报错 docker start mysql Error response from daemon fd91b9c3f3ca2970c9293042b539759c9fb10f4988548d4cc07aaae85278f719: unknown Error: failed to start containers: mysql 27bc8c9564888782e3aaae0382ba236f83d5b01675aea0a8bfe00083b7177816 bb41ae5131f2a5652fdd03409a6c90f4f4f845d9efc8229f69bd13d027b735f2 32327b2aad556318fe59b79ad9aa9f7f2fbec8146e22b26413b2bc690de0817d c1203eb340a9b616e03d678a11e70ef4c8f67e7c40a68b7ca65cf168995a3fbe 343c89cb950f951b52c452e833414a75176ba2078dd25a3863ba10a2ff7eaeda fd91b9c3f3ca2970c9293042b539759c9fb10f4988548d4cc07aaae85278f719/ # 删除后重新执行命令,即可启动容器 docker restart mysql

    65630编辑于 2022-10-31
  • 来自专栏Linux基础 for 凡人

    MySQL故障案例 | mysqldump: Couldn’t execute ‘SELECT COLUMN_NAME

    disabled by default because histogram generation for large tables can take a long time. https://dev.mysql.com

    1.4K00编辑于 2022-06-22
  • 来自专栏爱可生开源社区

    故障分析 | mysql mgr 多主数据不能更新案例浅析

    1.故障现象 一套运行快两年的 MGR 三节点多主环境(5.7.25),在节点1成功导入一批数据后,开发反馈程序修改这批数据报错,报错信息如下: update match_equip set name ." 1.1.尝试故障恢复操作1 经过初步分析,发现导入的这批数据,在导入节点1可以更新,在其他节点更新失败,怀疑1节点有问题,本着快速恢复故障原则,询问开发得知1节点可以重启,于是对其进行重启,重启后不能加入组复制 2.2.故障分析 2.2.1.当前 mgr 中 certification_info 有11239426条记录,mgr 每隔60s清理一次,为何会这么大? 2.3.2.故障模拟及恢复 2.3.2.1.当前环境信息:节点3含有本地事务 root@mysql.sock][fxtest]> select * from performance_schema.replication_group_members [root@mysql.sock][fxtest]> 2.3.2.4.故障修复 2.3.2.5.场景1:节点3本地事务对应 binlog 还存在,如何修复 只需重启节点1、2组复制即可同步过来节点3的本地事务

    2.3K20发布于 2021-09-08
  • 来自专栏WalkingCloud

    CentOS7下重建grub并恢复系统的故障案例

    CentOS7下重建grub恢复系统的故障案例 ? grub无法启动的故障现象 下面先模拟还原一下故障现象 1、模拟/boot/分区损坏,整个boot分区下文件删掉,当然/boot/grub2/grub.cfg文件也会被删掉 lsblk查看可以看到/ (图片可放大查看) lsblk可以看到/mnt/sysimage 和/mnt/sysimage/boot已经挂载上了(见下面第7步中的截图) 7、安装内核 rpm -ivh /run/install/repo /Packages/kernel-3.10.0-1160.el7.x86_64.rpm --root=/mnt/sysimage --force ? 系统恢复成功 (图片可放大查看) 下图为CentOS7启动原理流程图 ?

    8.9K21发布于 2020-12-31
  • 来自专栏爱可生开源社区

    故障分析 | MySQL 异地从库复制延迟案例一则

    作者:任坤 现居珠海,先后担任专职 Oracle 和 MySQL DBA,现在主要负责 MySQL、mongoDB 和 Redis 维护工作。 ---- 1、背景 线上某核心 MySQL ,版本为 5.6,本地机房1主2从,同时部署了一个异地从库。 本文关键字:#从库延迟# #perf# #pstack# ---- 关于SQLE 爱可生开源社区的 SQLE 是一款面向数据库使用者和管理者,支持多场景审核,支持标准化上线流程,原生支持 MySQL 审核且数据库类型可扩展的

    51110编辑于 2022-04-06
  • 来自专栏GreatSQL出品技术文章

    故障案例MySQL唯一索引有重复值,官方却说This is not a bug

    问题 原因 故障解决方案 复现步骤 参考文献 一、问题: MySQL5.7.38主从架构,主节点唯一索引上(唯一索引不是主键)有重复值,全部从节点报1062,SQL线程状态异常,根据SQL线程报的binlog 三、故障解决方案: 一、临时解决方案 恢复主从: 在从节点开启会话 set sql_log_bin=0 删除表的唯一索引 重新启动复制线程 缺点是:不能够解决数据重复的问题,切换主从后会面临更多重复数据的问题 表结构: mysql> create database wl; mysql> show create table wl.lgf\G *************************** 1. row 重新插入重复唯一索引数据: mysql> set unique_checks=0; mysql> use wl mysql> insert into wl.lgf(id,c,pad) values( id=106121) MySQL :: MySQL 8.0 Reference Manual :: 5.1.8 Server System Variables(https://dev.mysql.com

    2.1K20编辑于 2023-03-09
  • 来自专栏爱可生开源社区

    故障分析 | MySQL 启动遭遇 Permission denied 失败案例一则

    作者:任坤 现居珠海,先后担任专职 Oracle 和 MySQL DBA,现在主要负责 MySQL、mongoDB 和 Redis 维护工作。 背景 OS:centos 7.9 MySQL:5.7 首次使用某海外云,申请云主机自建 mysql ,service mysqld start 启动报错 Job for mysqld.service # ll ‐ld /data/var drwxr‐xr‐x. 5 mysql mysql 4096 Oct 9 06:14 /data/var # ll /data/var/err.log ‐rw‐r‐ ‐‐‐‐. 1 mysql mysql 33067 Oct 9 06:14 /data/var/err.log service mysqld start 尝试好几次都以失败告终,手工执行 mysqld --defaults-file=/etc/my.cnf 能成功启动,说明 mysql 的配置是正常的,问题应该出现在 OS 系统设置。

    2.5K20编辑于 2022-10-31
  • 来自专栏爱可生开源社区

    故障分析 | 一则 INSERT UPDATE 触发 MySQL Crash 的案例

    1故障现象 某业务 MySQL 实例(MySQL 5.7.20 社区版)发生 Crash,现需要对其具体原因进行分析。 +0x4a4)[0x7cd434] /lib64/libpthread.so.0(+0xf100)[0x7f3564112100] /mysql/mysql-5.7.20/bin/mysqld(_ZN10Field_blob15copy_blob_valueEP11st_mem_root +0x30)[0x7fd160] /mysql/mysql-5.7.20/bin/mysqld(_Z25mysql_prepare_blob_valuesP3THDR4List14ItemEP11st_mem_root ] /mysql/mysql-5.7.20/bin/mysqld(_ZN14Sql_cmd_insert7executeEP3THD+0xce)[0xe9b15e] /mysql/mysql-5.7.20 +0x11bf)[0xd1942f] 2故障分析 根据堆栈打印的信息可以得知,当时 Crash 的时间点 MySQL 正在执行 INSERT 操作,且操作涉及 BLOB 数据类型的数据,在源码执行到

    42710编辑于 2024-04-30
  • 来自专栏idba

    Redis bigkey 故障案例分析

    业务侧报 jedis 客户端无法和redis集群建立连接 ,SocketTimeoutException报错日志如下:

    63820编辑于 2022-12-07
  • 来自专栏运维记录点滴

    Skype for Business 会议故障案例

    Skype for Business 会议故障案例 Lync/Skype for Business客户端创建会议报错,提示连接服务器错误,严重到“现在开会”选项消失。 查看Skype4B前端服务器事件日志,有大量的错误告警,提示连接后端数据库故障及数据库rtcxds日志已满。 ? 已经有了明确的故障错误,重点排查SQL后端数据库,这里要提一下:很多部署Lync/Skype4B的都没有考虑到后端SQL数据库的管理与维护,以致引起一系统的连锁故障。 收缩数据库日志文件后,Skype4B会议故障消除。 最后,创建数据库维护计划,完整备份数据库、备份事务日志、收缩数据库等一系统常规的计划。

    1.7K40发布于 2019-03-05
  • 来自专栏运维小白

    4.13 磁盘故障案例

    在做实验的时候,写入一行配置到/etc/fstab中去,在做完 lvm实验之后,reboot重启之后,会发现进入不了系统(如下图类似的界面) 本来应该是显示中文,但是在vm终端下,中文不支持,所以看到

    70270发布于 2018-02-06
  • 来自专栏数据和云

    MySQL 传统复制中常见故障处理和结构优化案例分析

    虽然MySQL5.7 的主从复制已经很稳定了,但在备库可读写的情况下,总是会出现部分数据不一致的情况,例如常见的1062、1032和1050错误。 环境描述 一 1、mysql 5.7 以上, 2、binlog format 是row格式(5.7默认) 3、传统复制(生产强烈推荐使用gtid) 4、log-bin , log_slave_updates .sock 104 导入数据 mysql -S /tmp/mysql3306.sock -uroot -p123456 < /tmp/1203.sql change 104 到103 change -S /tmp/mysql3306.sock -uroot -p123456 -e "insert into enmo.t2 values($i)"done 关闭103 主机,并检查104 slave .000093', MASTER_LOG_POS=387204, master_connect_retry=10; 作者介绍 张灿 云和恩墨技术顾问 2015年12月加入云和恩墨,擅长oracle、mysql

    91570发布于 2018-03-08
领券