mysqldump命令详解 Part 6- --master-data参数的使用
实验环境:
- MySQL 5.7.25
- Redhat 6.10
前面我们建立了数据库并建立相关的对象
- 数据库
- 表
- 存储过程
- 函数
- 触发器
- 事件
今天的内容为--masterr-data的使用
1. --master-data
该参数用于将主库的bin-log信息写入到dump文件中,即当前文件名(filename)和位置(position),用于主从复制的搭建
相当于执行了一次 show master;
他有2个值可供选择
--master-data=1
会将change master 语句写入dump文件中
在从库导入后,配置主从无需再指定文件名和位置
--master-data=2
会将change master 语句写入dump文件中,只不过会被注释掉
在从库导入后,配置主从需要指定文件名和位置
建议使用该值
其他
除非指定--single-transaction开启,这个参数会将--lock-all-tables开启
2. 使用--master-data=2备份数据库
备份所有数据库
mysqldump -h127.0.0.1 -usystem -p123456 --single-transaction --set-gtid-purged=OFF --all-databases --master-data=2 --triggers --events --routines> /tmp/all_master.sql
备份test数据库
mysqldump -h127.0.0.1 -usystem -p123456 --single-transaction --set-gtid-purged=OFF --databases test --master-data=2 --triggers --events --routines> /tmp/test_all_master.sql
2. 内容解析
2.1 版本信息
第一行是mysqldump的版本
这里为10.13的版本
第二三行显示主机名为127.0.0.1
数据库版本为5.7.25
接下来为一些系统变量的设置
注意这里/* !12345 */ 不是注释 (/* */ 是MySQL的多行注释符)
它表示如果MySQL的版本大于4.1.1 则执行相应的语句
2.2 master-data信息
可以看出多了change master语句
同时是被注释掉的
2.3 数据库和表的信息
接下来是备份数据库的语句
Current Database :test 代表当前进行的是mysql数据库
后面跟的是建数据库的语句(CREATE DATABASE test)
如果不存在的话(IF NOT EXISTS),如果存在也不会删除
之后使用该数据库(use test)
接下来是表结构相关的(Table structure for table)
如果已经有该表则先删除(DROP TABLE IF EXISTS)
之后是建立mysql数据库下表的表结构的语句(Create TABLE )
2.4 表数据的备份
接下来是表数据的备份(Dumping data for table)
首先锁定表不让其他进程写(LOCK TABLE WRITE)
然后使MySQL停止更新非唯一索引(ALTER TABLE DISABLE KEYS),这样能加快插入速度
之后将数据转换成insert语句(INSERT INTO)
之后重新建立丢失的索引(ALTER TABLE ENABLE KEYS)
最后释放锁(UNLOCK TABLES)
直到该数据库所有的表导出完毕后进行下一个数据库
2.5 备份events
接下来是备份事件
导出事件(Dumping events for database 'test')
2.6 备份routines
MySQL中的routines 代表存储过程和函数
导出routines(Dumping routines for database 'test')
之后是详细的建立语句
2.7 结束备份
最后是备份的完成日期
3. 总结
可以看出在备份全库的时候使用--master-data有如下内容
- 导出master信息
- 建立数据库(如果不存在)
- 使用数据库
- 删除表(如果存在)
- 建表
- 锁表
- 禁用非唯一索引
- 插入数据
- 启用非唯一索引(重建索引)
- 释放锁
- 导出视图
- 导出events
- 导出routines(存储过程和函数)
这里就是一个完整的备份语句,包含了MySQL所有的内容
- Go语言归并排序算法实现
- grep无法查找shell传过来的变量?先注意一下文本格式吧!
- 深入浅出 Retrofit,这么牛逼的框架你们还不来看看?
- nwui —— 又一个go语言图形界面解决方案
- Golang 通用连接池
- 解决JS操作Cookies出现的乱码问题,修复WordPress评论乱码
- 分享一个WordPress外链跳转教程,兼容知更鸟暗箱下载和文章索引
- 让WordPress RSS/Feed订阅数据延迟发布,附RSS技巧集锦
- Linux系统防CC攻击自动拉黑IP增强版Shell脚本
- 利用artDialog给网站添加一个能显示搜索来路和关键词的欢迎框
- 解决启用wp super cache缓存后,页面追加多个斜杠仍然可以访问的隐患
- WordPress集成底部滚动推荐条,让好文章不再被埋没
- go语言base64加密解密的方法
- WordPress酷炫CSS3读者墙,排名按年度、本月、本周划分的小方法
- 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 实例讲解
- redis学习(十九)
- Android开发6年,互联网寒冬公司倒闭后,耗时3个月北上广求职,终拿到头条Offer!
- 直播软件开发如何使用FFMPEG推流并保存在本地
- react-router学习笔记
- 尤大 3 天前发在 GitHub 上的 vue-lit 是啥?
- BFE.dev前端刷题 23. 实现一个sum()方法
- 彻底深刻理解js原型链之prototype,proto以及constructor(一)
- SAP Spartacus取cart的HTTP请求
- 记一次Netty连接池FixedChannelPool连接未释放问题的排查总结
- 神经网络中的蒸馏技术,从Softmax开始说起
- NullInjectorError R3InjectorError(AppModule)[StoreFeatureModule]
- Angular module加载的原理研究
- NullInjectorError No provider for EffectsRootModule!
- Web 中文字体性能优化实践
- Java反射到底慢在哪?不看后悔