前情提要[MySQL学习笔记]2. mysqldump命令详解 Part 1 [MySQL学习笔记] 3.mysqldump命令详解 Part 2 -备份全库 [MySQL故障处理]记一次innobackupex导致的从库无法同步的问题 这个专题讲一些MySQL日常运维的异常处理 实验环境:
前面我们建立了数据库并建立相关的对象
今天的内容为按条件备份表数据 1. 备份语句我们来备份test数据库中的innodb_table表和isam_table表中id为10的数据 从这起开始在备份语句中加入--single-transaction 参数 该参数在innodb中可以不对表施加写入锁进行导出,MyISAM引擎还是锁表的
注意这里 innodb_table 拥有id为10的数据 而 isam_table则没有 2. 内容解析2.1 版本信息首先依然是mysqldump的版本信息 主机名信息 已经一些变量的设置 再次提醒 \/!123456\/ 不是注释 详情看上一节介绍 2.2 表的结构接下来是表的信息 首先是如果表存在则删除表(DROP TABLE IF EXISTS) 之后建立表(CREATE TABLE) 2.3 表数据的备份接下来是表数据的备份(Dumping data for table) 这里有提示只备份id=10的数据 首先锁定表不让其他进程写(LOCK TABLE WRITE) 然后使MySQL停止更新非唯一索引(ALTER TABLE DISABLE KEYS),这样能加快插入速度 之后将数据转换成insert语句(INSERT INTO) 之后重新建立丢失的索引(ALTER TABLE ENABLE KEYS) 最后释放锁(UNLOCK TABLES) 2.4 备份没有符合条件的表可以看出虽然isam_table表没有符合条件的数据 但是还是会导出表结构 只是没有数据的导入 2.5 触发器的导出可以看到isam_table表的触发器会一并导出 3. 总结可以看出单独导出表的某行有如下内容
不同于全库备份没有如下内容
同时如果表中没有符合条件的行,表结构也是会导出的 同样不会导出存储过程和函数 今天的内容就到这里,欢迎查看 |
|