楼主: lixunpeng

mysqldump备份时,如果时间较长,那么备份的文件时间上是一致的吗?

[复制链接]
论坛徽章:
71
ITPUB元老
日期:2009-11-30 15:55:11授权会员
日期:2009-11-30 11:36:17ITPUB季度 技术新星
日期:2010-08-31 10:47:25优秀写手
日期:2014-12-24 06:00:14ITPUB8周年纪念徽章
日期:2009-09-27 10:21:20祖国60周年纪念徽章
日期:2009-10-09 08:28:00奔驰
日期:2013-10-20 13:32:09数据库板块每日发贴之星
日期:2008-10-03 01:02:14数据库板块每日发贴之星
日期:2009-11-23 01:01:03数据库板块每日发贴之星
日期:2010-07-27 01:01:02
11#
 楼主| 发表于 2014-12-18 14:38 | 只看该作者
dian010418 发表于 2014-12-17 18:07
如果有非事务性引擎,single-transaction参数无效,会自动使用lock-tables参数

这样啊。那备份innodb引擎的库,应该也会有锁表吧?那天领导让我百天备了一下生产db,结果很多业务就跑不了了。

使用道具 举报

回复
论坛徽章:
10
2011新春纪念徽章
日期:2011-02-18 11:43:342015年新春福章
日期:2015-03-06 11:58:18懒羊羊
日期:2015-03-04 14:52:11马上有钱
日期:2014-02-18 16:43:092014年新春福章
日期:2014-02-18 16:43:09优秀写手
日期:2013-12-18 09:29:11三菱
日期:2013-08-30 20:37:412013年新春福章
日期:2013-02-25 14:51:24ITPUB十周年纪念徽章
日期:2011-11-01 16:24:51暖羊羊
日期:2015-06-22 15:51:36
12#
发表于 2014-12-18 14:46 | 只看该作者
lixunpeng 发表于 2014-12-18 14:38
这样啊。那备份innodb引擎的库,应该也会有锁表吧?那天领导让我百天备了一下生产db,结果很多业务就跑不 ...

innodb采用一致性非锁定读,single-transaction并不影响表的DML操作,不存在锁表的现象

使用道具 举报

回复
论坛徽章:
2
2011新春纪念徽章
日期:2011-01-04 10:34:48ITPUB十周年纪念徽章
日期:2011-11-01 16:24:04
13#
发表于 2014-12-18 14:50 | 只看该作者
本帖最后由 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间出现了大事务,那就会阻塞所有的写操作。

使用道具 举报

回复
论坛徽章:
71
ITPUB元老
日期:2009-11-30 15:55:11授权会员
日期:2009-11-30 11:36:17ITPUB季度 技术新星
日期:2010-08-31 10:47:25优秀写手
日期:2014-12-24 06:00:14ITPUB8周年纪念徽章
日期:2009-09-27 10:21:20祖国60周年纪念徽章
日期:2009-10-09 08:28:00奔驰
日期:2013-10-20 13:32:09数据库板块每日发贴之星
日期:2008-10-03 01:02:14数据库板块每日发贴之星
日期:2009-11-23 01:01:03数据库板块每日发贴之星
日期:2010-07-27 01:01:02
14#
 楼主| 发表于 2014-12-18 14:54 | 只看该作者
myownstars 发表于 2014-12-18 14:46
innodb采用一致性非锁定读,single-transaction并不影响表的DML操作,不存在锁表的现象

我那天倒是没加这个single-transaction。

使用道具 举报

回复
论坛徽章:
71
ITPUB元老
日期:2009-11-30 15:55:11授权会员
日期:2009-11-30 11:36:17ITPUB季度 技术新星
日期:2010-08-31 10:47:25优秀写手
日期:2014-12-24 06:00:14ITPUB8周年纪念徽章
日期:2009-09-27 10:21:20祖国60周年纪念徽章
日期:2009-10-09 08:28:00奔驰
日期:2013-10-20 13:32:09数据库板块每日发贴之星
日期:2008-10-03 01:02:14数据库板块每日发贴之星
日期:2009-11-23 01:01:03数据库板块每日发贴之星
日期:2010-07-27 01:01:02
15#
 楼主| 发表于 2014-12-18 15:03 | 只看该作者
dian010418 发表于 2014-12-18 14:50
备份全部是 innodb 表的库时,必须明确指定 single-transaction 参数,否则就会隐式地加上 lock-tables, ...

我以为只是在备份语句里加个参数呢。怎么这么复杂?像做从库似的?

使用道具 举报

回复
论坛徽章:
2
2011新春纪念徽章
日期:2011-01-04 10:34:48ITPUB十周年纪念徽章
日期:2011-11-01 16:24:04
16#
发表于 2014-12-18 15:06 | 只看该作者
lixunpeng 发表于 2014-12-18 15:03
我以为只是在备份语句里加个参数呢。怎么这么复杂?像做从库似的?

那些是mysqldump内部的流程,不是说我们手工执行的命令。

使用道具 举报

回复
论坛徽章:
71
ITPUB元老
日期:2009-11-30 15:55:11授权会员
日期:2009-11-30 11:36:17ITPUB季度 技术新星
日期:2010-08-31 10:47:25优秀写手
日期:2014-12-24 06:00:14ITPUB8周年纪念徽章
日期:2009-09-27 10:21:20祖国60周年纪念徽章
日期:2009-10-09 08:28:00奔驰
日期:2013-10-20 13:32:09数据库板块每日发贴之星
日期:2008-10-03 01:02:14数据库板块每日发贴之星
日期:2009-11-23 01:01:03数据库板块每日发贴之星
日期:2010-07-27 01:01:02
17#
 楼主| 发表于 2014-12-18 21:22 | 只看该作者
dian010418 发表于 2014-12-18 15:06
那些是mysqldump内部的流程,不是说我们手工执行的命令。

看来哥们了解的很深啊!

使用道具 举报

回复
论坛徽章:
71
ITPUB元老
日期:2009-11-30 15:55:11授权会员
日期:2009-11-30 11:36:17ITPUB季度 技术新星
日期:2010-08-31 10:47:25优秀写手
日期:2014-12-24 06:00:14ITPUB8周年纪念徽章
日期:2009-09-27 10:21:20祖国60周年纪念徽章
日期:2009-10-09 08:28:00奔驰
日期:2013-10-20 13:32:09数据库板块每日发贴之星
日期:2008-10-03 01:02:14数据库板块每日发贴之星
日期:2009-11-23 01:01:03数据库板块每日发贴之星
日期:2010-07-27 01:01:02
18#
 楼主| 发表于 2014-12-18 21:25 | 只看该作者
dian010418 发表于 2014-12-18 14:50
备份全部是 innodb 表的库时,必须明确指定 single-transaction 参数,否则就会隐式地加上 lock-tables, ...

1和2之间还没有锁表啊,为什么说阻塞?还是1和2应该是一步?
我感觉先锁再flush才会阻塞写操作。

使用道具 举报

回复
论坛徽章:
71
ITPUB元老
日期:2009-11-30 15:55:11授权会员
日期:2009-11-30 11:36:17ITPUB季度 技术新星
日期:2010-08-31 10:47:25优秀写手
日期:2014-12-24 06:00:14ITPUB8周年纪念徽章
日期:2009-09-27 10:21:20祖国60周年纪念徽章
日期:2009-10-09 08:28:00奔驰
日期:2013-10-20 13:32:09数据库板块每日发贴之星
日期:2008-10-03 01:02:14数据库板块每日发贴之星
日期:2009-11-23 01:01:03数据库板块每日发贴之星
日期:2010-07-27 01:01:02
19#
 楼主| 发表于 2014-12-18 21:26 | 只看该作者
dian010418 发表于 2014-12-18 14:50
备份全部是 innodb 表的库时,必须明确指定 single-transaction 参数,否则就会隐式地加上 lock-tables, ...

1和2之间还没有锁表啊,为什么说阻塞?还是1和2应该是一步?我们做从库时,不就是直接执行 flush tables with read locks吗
我感觉先锁再flush才会阻塞写操作。

使用道具 举报

回复
论坛徽章:
2
2011新春纪念徽章
日期:2011-01-04 10:34:48ITPUB十周年纪念徽章
日期:2011-11-01 16:24:04
20#
发表于 2014-12-21 18:05 | 只看该作者
本帖最后由 dian010418 于 2014-12-21 18:06 编辑
lixunpeng 发表于 2014-12-18 21:26
1和2之间还没有锁表啊,为什么说阻塞?还是1和2应该是一步?我们做从库时,不就是直接执行 flush tables  ...

因为 flush tables with read lock 执行的时候,需要等待在它之前的所有 sql 都执行完,在这个等待的时间里,所有的表都不能写入,所以如果在 flush tables with read lock 执行前正好有一个运行时间很长的 sql 的话,这个全局写锁的时间就会很长。

使用道具 举报

回复

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

本版积分规则 发表回复

TOP技术积分榜 社区积分榜 徽章 团队 统计 知识索引树 积分竞拍 文本模式 帮助
  ITPUB首页 | ITPUB论坛 | 数据库技术 | 企业信息化 | 开发技术 | 微软技术 | 软件工程与项目管理 | IBM技术园地 | 行业纵向讨论 | IT招聘 | IT文档
  ChinaUnix | ChinaUnix博客 | ChinaUnix论坛
CopyRight 1999-2011 itpub.net All Right Reserved. 北京盛拓优讯信息技术有限公司版权所有 联系我们 未成年人举报专区 
京ICP备16024965号-8  北京市公安局海淀分局网监中心备案编号:11010802021510 广播电视节目制作经营许可证:编号(京)字第1149号
  
快速回复 返回顶部 返回列表