|
本帖最后由 dian010418 于 2014-12-21 17:56 编辑
lixunpeng 发表于 2014-12-18 14:38 ![]()
这样啊。那备份innodb引擎的库,应该也会有锁表吧?那天领导让我百天备了一下生产db,结果很多业务就跑不 ...
备份全部是 innodb 表的库时,必须明确指定 single-transaction 参数,否则就会隐式地加上 lock-tables,还有即使使用了 single-transaction 参数,在某些情况下也可能锁表。
mysqldump --single-transaction 内部的执行步骤是:
1. 执行 flush tables,等待当前正在运行的所有操作结束。
2. 执行 flush tables with read locks,加全局读锁,禁止写操作。
3. 执行 show master status,获得此时 binlog 的位置。
4. 执行 unlock tables,释放全局读锁,允许写请求。
5. 开始导出数据。
如果在1和2间出现了大事务,那就会阻塞所有的写操作。 |
|