本文摘自PHP中文网,作者零下一度,侵删。
测试环境:MySQL 5.5.14
在数据库testdb01下有表tb1001,当前表中存有两条数据:
##=========================================================##
发现竟然返回的是空集,没有任何报错。
这也就合理解释我同事操作的现象:在mysqldump过程中,修改表结构,修改操作没有被阻塞,mysqldump操作也”正常完成“。
由于SELECT /*!40001 SQL_NO_CACHE */ * FROM `tb1001`操作没有返回错误也没有返回数据,mysqldump进程会将tb1001当做一个空表来处理,然后继续导出后面的表直至导出所有的表然后返回执行成功的状态。但导出的备份已经缺失tb1001的数据,如果恰好采用该备份去恢复数据,那么必然最终导致“数据丢失”。
相关阅读 >>
当mysqldump --single-transaction遇到alter table怎么办?
mysql中mydumper 和 mysqldump对比使用详解
更多相关阅读请进入《--single-transaction》频道 >>

数据库系统概念 第6版
本书主要讲述了数据模型、基于对象的数据库和XML、数据存储和查询、事务管理、体系结构等方面的内容。