MySQL社区

 找回密码
 注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

搜索
查看: 4725|回复: 11
打印 上一主题 下一主题

关于集群,ndbcluster引擎的大数据量表备份数据还原时,出现锁等待?急求解决办法....

[复制链接]
1#
发表于 2013-9-26 18:05:20 | 显示全部楼层
看来主要是你数据的问题,已经有重复数据了,Duplicate了。
不行就重新清空再导入,如果还有duplicate那么就是数据有问题 ,或是 你备份的有问题,恢复时出错了
注意下:导入时不要有其他数据库操作。
2#
发表于 2013-9-27 14:04:41 | 显示全部楼层
那你这个不是数据的问题。
调调参数试试吧,参数里关于"timeout"相关的可以适当调大点...

或不用source, 用mysql命令直接导入试试国庆节快乐!
3#
发表于 2013-9-27 14:54:40 | 显示全部楼层
估计是那个事务没有及时提交产生了锁。
特别是当一个SQL执行完了,但未COMMIT,后面的SQL想要执行就是被锁,超时结束;

看看show engine innodb status , 并结合 show full processlist; 找找问题

在5.5中,information_schema 库中增加了三个关于锁的表(MEMORY引擎);
innodb_trx ## 当前运行的所有事务
innodb_locks ## 当前出现的锁
innodb_lock_waits ## 锁等待的对应关系
帮助来诊断。

另外,附:
1、锁等待超时。是当前事务在等待其它事务释放锁资源造成的。可以找出锁资源竞争的表和语句,优化你的SQL,创建索引等,如果还是不行,可以适当减少并发线程数。

2、你的事务在等待给某个表加锁时超时了,估计是表正被另的进程锁住一直没有释放。
可以用 SHOW INNODB STATUS/G; 看一下锁的情况。

3、搜索解决 之道
在管理 节点的[ndbd default]处加:
TransactionDeadLockDetectionTimeOut=10000(设置 为10秒)默认是1200(1.2秒)

4、InnoDB会自动的检测死锁进行回滚,或者终止死锁的情况。

如果参数innodb_table_locks=1并且autocommit=0时,InnoDB会留意表的死锁,和MySQL层面的行级锁。另外,InnoDB不会检测MySQL的Lock Tables命令和其他存储引擎死锁。
你应该设置innodb_lock_wait_timeout来解决这种情况。
innodb_lock_wait_timeout是Innodb放弃行级锁的超时时间。


您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|申请友链|小黑屋|Archiver|手机版|MySQL社区 ( 京ICP备07012489号   
联系人:周生; 联系电话:13911732319

GMT+8, 2024-6-15 22:19 , Processed in 0.065597 second(s), 23 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表