mysqldump命令详解 4-按条件备份表数据
往期专题请查看www.zhaibibei.cn 这是一个坚持Oracle,Python,MySQL原创内容的公众号
这个专题讲一些MySQL日常运维的异常处理
实验环境:
- MySQL 5.7.25
- Redhat 6.10
前面我们建立了数据库并建立相关的对象
- 数据库
- 表
- 存储过程
- 函数
- 触发器
- 事件
今天的内容为按条件备份表数据
1. 备份语句
我们来备份test数据库中的innodb_table表和isam_table表中id为10的数据
从这起开始在备份语句中加入--single-transaction 参数
该参数在innodb中可以不对表施加写入锁进行导出,MyISAM引擎还是锁表的
mysqldump -h127.0.0.1 -usystem -p123456 --single-transaction --set-gtid-purged=OFF --databases test --tables innodb_table isam_table --where='id=10' > /tmp/table_id.sql
注意这里 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. 总结
可以看出单独导出表的某行有如下内容
- 删除表(如果存在)
- 建表
- 锁表
- 禁用非唯一索引
- 插入数据
- 启用非唯一索引(重建索引)
- 释放锁
- 触发器(如果有)
不同于全库备份没有如下内容
- 建立数据库(如果不存在)
- 使用数据库
同时如果表中没有符合条件的行,表结构也是会导出的
同样不会导出存储过程和函数
今天的内容就到这里,欢迎查看
可点击阅读原文获得更好的阅读体验,推荐在PC端阅读
也可在公众号内回复 按条件备份表数据 搜索相关内容
或直接打开个人网页搜索
http://www.zhaibibei.cn
往期专题包括:
- Python 自动化运维
- MySQL 安装
- 打造属于自己的监控系统
- Python爬虫基础
- Oracle awr报告全解析
- Oracle ASM全解析
- Oracle Data Guard全解析
- Oracle ClusterWare全解析
- Oracle常见参数解析
- Oracle常见故障处理
- Oracle SQL优化案例
- openshift镜像构建
- 关于数据库无法登录的问题反思(r6笔记第49天)
- SQL中distinct的用法
- 数据结构是哈希表(hashTable)(一)
- 关于奇怪的并行进程分析(三)(r6笔记第47天)
- 数据结构是哈希表(hashTable)(二)
- Oracle的Replace函数与translate函数详解与比较
- 关于奇怪的并行进程分析(二) (r6笔记第46天)
- Linux性能分析工具与图形化方法
- MySQL和Oracle中的隐式转换(r6笔记第45天)
- R语言的数据导入与导出(write.table,CAT)
- gqlplus的简单使用(r6笔记第43天)
- Java基础-21(01)总结字符流,IO流编码问题,实用案例必做一遍
- zabbix中配置dg的监控(r6笔记第62天)
- MySQL 教程
- MySQL 安装
- MySQL 管理与配置
- MySQL PHP 语法
- MySQL 连接
- MySQL 创建数据库
- MySQL 删除数据库
- MySQL 选择数据库
- MySQL 数据类型
- MySQL 创建数据表
- MySQL 删除数据表
- MySQL 插入数据
- MySQL 查询数据
- MySQL where 子句
- MySQL UPDATE 查询
- MySQL DELETE 语句
- MySQL LIKE 子句
- mysql order by
- Mysql Join的使用
- MySQL NULL 值处理
- MySQL 正则表达式
- MySQL 事务
- MySQL ALTER命令
- MySQL 索引
- MySQL 临时表
- MySQL 复制表
- 查看MySQL 元数据
- MySQL 序列 AUTO_INCREMENT
- MySQL 处理重复数据
- MySQL 及 SQL 注入
- MySQL 导出数据
- MySQL 导入数据
- MYSQL 函数大全
- MySQL Group By 实例讲解
- MySQL Max()函数实例讲解
- mysql count函数实例
- MYSQL UNION和UNION ALL实例
- MySQL IN 用法
- MySQL between and 实例讲解
- 抖音小程序基础之 如何绑定点击事件(教程含源码)
- 抖音小程序基础之 如何使用内联样式 style和class(教程含源码)
- 抖音小程序基础之 如何使用选择器class id element (教程含源码)
- 3分钟短文:Laravel模型作用域,为你“节省”更多代码
- Pytorch 0.4.0版本保存的模型在高版本调用问题的解决方式
- Qt音视频开发27-Onvif设备搜索
- 容器化 FRP 使用方案
- 学习从拥有一支好笔开始
- leetcode栈之最小栈
- Discourse 安装防火墙的配置如何让邮件能够发送
- CentOS 8 如何安装 htop
- Discourse 重复安装过程中的密钥签发问题
- Appium之「元素定位和UiAutomator表达式」
- 机器人软件开发:机器人开源库安装
- 2020-10-05:如何求模平方根?