问题描述:

数据库从库停止同步。

问题分析:

show slave status\G;(也可使用show full processlist)

显示 某个update语句出错,Lock wait timeout exceeded; try restarting transaction;

原因是这条语句提交的时候超时堵塞。原因在于另外的一个操作开启了事务,锁定了相应的数据,导致这条操作相同数据的sql出错。

示例,在sql中

(1)开启事务,锁定数据

终端A:

mysql> begin; (开启事务,开启事务会锁定相关数据)

Query OK, 0 rows affected (0.00 sec)

mysql> update pet set sex="m" where name="Fluffy";(修改)

Query OK, 1 row affected (0.03 sec)

Rows matched: 1  Changed: 1  Warnings: 0

mysql> select * from pet;

+--------+--------+---------+------+------------+------------+

| name   | owner  | species | sex  | birth      | death      |

+--------+--------+---------+------+------------+------------+

| Bowser | Diane  | dog     | m    | 1979-08-31 | 1995-07-29 |

| Buffy  | Harold | dog     | f    | 1989-05-13 | NULL       |

| Claws  | Gwen   | cat     | m    | 1994-03-17 | NULL       |

| Fang   | Benny  | dog     | m    | 2013-02-05 | NULL       |

| Fluffy | Harold | cat     | m    | 2012-09-30 | NULL       |

+--------+--------+---------+------+------------+------------+

5 rows in set (0.00 sec)

终端B:

mysql> select * from pet;

+--------+--------+---------+------+------------+------------+

| name   | owner  | species | sex  | birth      | death      |

+--------+--------+---------+------+------------+------------+

| Bowser | Diane  | dog     | m    | 1979-08-31 | 1995-07-29 |

| Buffy  | Harold | dog     | f    | 1989-05-13 | NULL       |

| Claws  | Gwen   | cat     | m    | 1994-03-17 | NULL       |

| Fang   | Benny  | dog     | m    | 2013-02-05 | NULL       |

| Fluffy | Harold | cat     | NULL | 2012-09-30 | NULL       |

+--------+--------+---------+------+------------+------------+

5 rows in set (0.01 sec)

因为没有提交,所以实际上没有改变。但是会锁定Fluffy这一条数据。导致如下的错误。

终端B:

mysql> update pet set sex="m" where name="Fluffy";



ERROR 1205 (HY000): Lock wait timeout exceeded; try restarting transaction

(2)提交事务,解锁数据

终端A:

mysql> commit;

Query OK, 0 rows affected (0.10 sec)

终端B:

mysql> select * from pet;

+--------+--------+---------+------+------------+------------+

| name   | owner  | species | sex  | birth      | death      |

+--------+--------+---------+------+------------+------------+

| Bowser | Diane  | dog     | m    | 1979-08-31 | 1995-07-29 |

| Buffy  | Harold | dog     | f    | 1989-05-13 | NULL       |

| Claws  | Gwen   | cat     | m    | 1994-03-17 | NULL       |

| Fang   | Benny  | dog     | m    | 2013-02-05 | NULL       |

| Fluffy | Harold | cat     | m    | 2012-09-30 | NULL       |

+--------+--------+---------+------+------------+------------+

5 rows in set (0.00 sec)

mysql> update pet set sex="f" where name="Fluffy";

Query OK, 1 row affected (0.08 sec)

Rows matched: 1  Changed: 1  Warnings: 0

(3)如果where中的条件是索引字段,那么只会锁定索引对应的条目;如果不是索引字段,那么会锁定整张表。

终端A:

mysql> update pet set sex="f" where death="1995-07-29";

Query OK, 1 row affected (0.03 sec)

Rows matched: 1  Changed: 1  Warnings: 0

mysql> select * from pet;

+--------+--------+---------+------+------------+------------+

| name   | owner  | species | sex  | birth      | death      |

+--------+--------+---------+------+------------+------------+

| Bowser | Diane  | dog     | f    | 1979-08-31 | 1995-07-29 |

| Buffy  | Harold | dog     | f    | 1989-05-13 | NULL       |

| Claws  | Gwen   | cat     | m    | 1994-03-17 | NULL       |

| Fang   | Benny  | dog     | m    | 2013-02-05 | NULL       |

| Fluffy | Harold | cat     | f    | 2012-09-30 | NULL       |

+--------+--------+---------+------+------------+------------+

5 rows in set (0.00 sec)

终端B:

mysql> select * from pet;

+--------+--------+---------+------+------------+------------+

| name   | owner  | species | sex  | birth      | death      |

+--------+--------+---------+------+------------+------------+

| Bowser | Diane  | dog     | m    | 1979-08-31 | 1995-07-29 |

| Buffy  | Harold | dog     | f    | 1989-05-13 | NULL       |

| Claws  | Gwen   | cat     | m    | 1994-03-17 | NULL       |

| Fang   | Benny  | dog     | m    | 2013-02-05 | NULL       |

| Fluffy | Harold | cat     | f    | 2012-09-30 | NULL       |

+--------+--------+---------+------+------------+------------+

5 rows in set (0.00 sec)

mysql> update pet set death="2013-07-00" where birth="2013-02-05";

ERROR 1205 (HY000): Lock wait timeout exceeded; try restarting transaction

解决办法

(1) stop slave;      start slave

(2)网上分析说

Mysql 'Lock wait timeout exceeded; try restarting transaction' 解决方案

ERROR 1205 (HY000): Lock wait timeout exceeded; try restarting transaction 

Temporary error: 266: Time-out in NDB, probably caused by deadlock 解决方法:在管理节点的[ndbd default] 

区加:

TransactionDeadLockDetectionTimeOut=10000(设置为10秒)默认是1200(1.2秒)按照顺序重新启动各个节点就不会出现问题了。

不过,本身貌似数据库的TransactionDeadLockDetectionTimeOut已经设置很大,而且即使设置很大,如果那边一直锁表,也是解决不了问题的。

mysql trouble shooting---- 从库停止同步lock_wait_timeout_exceeded_try_restarting_transaction的更多相关文章

  1. 不停止MySQL服务增加从库的两种方式

    不停止MySQL服务增加从库的两种方式 转载自:http://lizhenliang.blog.51cto.com/7876557/1669829 现在生产环境MySQL数据库是一主一从,由于业务量访 ...

  2. 不停止MySQL服务增加从库的两种方式【转载】

    现在生产环境MySQL数据库是一主一从,由于业务量访问不断增大,故再增加一台从库.前提是不能影响线上业务使用,也就是说不能重启MySQL服务,为了避免出现其他情况,选择在网站访问量低峰期时间段操作. ...

  3. MYSQL双主全库同步复制

    环境: A.B两台服务器分别安装mysql-5.7.18服务端,配置成互为主从同步. linux系统版本为CentOS7 A服务器ip:192.168.1.7   主机名:test1 B服务器ip:1 ...

  4. 忽略mysql库的同步

    忽略mysql库的同步,请使用: stop slave sql_thread; change replication filter replicate_ignore_db=(mysql);

  5. mysql主从架构,IO、SQL线程运行为YES,从库没有同步数据

    mysql基于binlog主从复制架构,IO.SQL线程运行为YES,从库没有同步数据 Slave_IO_Running: Yes Slave_SQL_Running: Yes Replicate_D ...

  6. 不停mysql服务添加从库的两种方式

    现在生产环境MySQL数据库是一主一从,由于业务量访问不断增大,故再增加一台从库.前提是不能影响线上业务使用,也就是说不能重启MySQL服务,为了避免出现其他情况,选择在网站访问量低峰期时间段操作. ...

  7. Mysql 实现基于binlog的主从同步

    工作原理 1.主节点必须启用二进制日志,记录任何修改了数据库数据的事件.2.从节点开启一个线程(I/O Thread)把自己扮演成 mysql 的客户端,通过 mysql 协议,请求主节点的二进制日志 ...

  8. MySQL主主互备不同步的解决方法

    MySQL主主互备不同步 首先在服务器上执行show slave satus;可以看到很多同步的参数: Master_Log_File: SLAVE中的I/O线程当前正在读取的主服务器二进制日志文件的 ...

  9. MySQL 5.7 深度解析: 半同步复制技术

    复制架构衍生史 在谈这个特性之前,我们先来看看MySQL的复制架构衍生史. MySQL的复制分为四种: 普通的replication,异步同步. 搭建简单,使用非常广泛,从mysql诞生之初,就产生了 ...

随机推荐

  1. WPF InkCanvas 画图 基础使用教程

    大家好,由于很多原因,我有很长一段时间没有在 CSDN 上分享我的学习成果了,如今终于可以回归分享之路了. 之前在做一个项目的时候,想在一个区域里绘制自己的图形,于是上网搜索资料,无意中找到了 Ink ...

  2. 用PHP与XML进行网站编程

    一.小序 HTML简单易学又通用,一般的PHP程序就是嵌入在HTML语言之中实现的.但是随着WEB越来越广泛的应用,HTML的弱点也越来越明显了.XML的出现,弥补了这些不足,它提供了一个能够处理互联 ...

  3. Qt 5.5 tr usage

    in .cpp file, wherever you want, wrap QString with a tr("somesz") rendering it ready to be ...

  4. a:link visited hover active

    CSS中a:link.a:visited.a:hover.a:active的用法:建议:尽可能的手写代码,可以有效的提高学习效率和深度.在网页设计中,设计美观的超链接效果可以增强网站的用户体验,可能会 ...

  5. list遍历

     一.对List的遍历有三种方式            List<String>    list    =    new    ArrayList<String>();    ...

  6. HDU - 1205 I NEED A OFFER!

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1203 题意: 该题要求得到一份offer的最大概率,在例子中的0.44 = 1-(1-0.2)*(1- ...

  7. STM32F2系列时钟的配置

    前一节详细介绍了系统默认的时钟配置,及各路时钟输出是多少,这是默认配置的,但实际使用的时钟默认的时钟并不符合要求,所以就得知道如何调用库函数进行配置. 最好的资料就是查阅stm32f2xx_rcc.c ...

  8. Java的SSH框架

    SSH 为 struts+spring+hibernate的一个集成框架,是目前较流行的一种Web应用程序开源框架.   1.业务流程  集成SSH框架的系统从职责上分为四层:表示层.业务逻辑层.数据 ...

  9. 【转】调用getActionBar()报Call requires API level 11 (current min is 8): android.app.Activity#getActionBar

    解决办法: 第一种方法:修改AndroidManifest.xml中的minSdkVersion=11   第二种方法: 1.导入android-support-v7-appcompat项目,并将其作 ...

  10. (转)MATLAB入门教程

    MATLAB入门教程   1.MATLAB的基本知识 1-1.基本运算与函数    在MATLAB下进行基本数学运算,只需将运算式直接打入提示号(>>)之後,并按入Enter键即可.例如: ...