-
7.mysqldump命令详解 Part 7- --master-data参数的使用
tutorial7
-
-
Attachments
-
Changes
-
View Source
-
View
[toc]
## 前情提要
实验环境:
- MySQL 5.7.25
- Redhat 6.10
前面我们建立了数据库并建立相关的对象
- 数据库
- 表
- 存储过程
- 函数
- 触发器
- 事件
今天的内容为--masterr-data的使用
## 1. --master-data
该参数用于将主库的bin-log信息写入到dump文件中,即当前文件名(filename)和位置(position),用于主从复制的搭建
相当于执行了一次 show master;
[image:530 size:orig]
他有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 版本信息
[image:531 size:orig]
第一行是mysqldump的版本
这里为10.13的版本
第二三行显示主机名为127.0.0.1
数据库版本为5.7.25
接下来为一些系统变量的设置
注意这里/\* !12345 \*/ 不是注释 (/\* \*/ 是MySQL的多行注释符)
它表示如果MySQL的版本大于4.1.1 则执行相应的语句
### 2.2 master-data信息
[image:532 size:orig]
可以看出多了change master语句
同时是被注释掉的
### 2.3 数据库和表的信息
[image:533 size:orig]
接下来是备份数据库的语句
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 表数据的备份
[image:534 size:orig]
接下来是表数据的备份(Dumping data for table)
首先锁定表不让其他进程写(LOCK TABLE WRITE)
然后使MySQL停止更新非唯一索引(ALTER TABLE DISABLE KEYS),这样能加快插入速度
之后将数据转换成insert语句(INSERT INTO)
之后重新建立丢失的索引(ALTER TABLE ENABLE KEYS)
最后释放锁(UNLOCK TABLES)
直到该数据库所有的表导出完毕后进行下一个数据库
### 2.5 备份events
[image:535 size:orig]
接下来是备份事件
导出事件(Dumping events for database 'test')
### 2.6 备份routines
MySQL中的routines 代表存储过程和函数
[image:536 size:orig]
导出routines(Dumping routines for database 'test')
之后是详细的建立语句
### 2.7 结束备份
[image:537 size:orig]
最后是备份的完成日期
## 3. 总结
可以看出在备份全库的时候使用--master-data有如下内容
- 导出master信息
- 建立数据库(如果不存在)
- 使用数据库
- 删除表(如果存在)
- 建表
- 锁表
- 禁用非唯一索引
- 插入数据
- 启用非唯一索引(重建索引)
- 释放锁
- 导出视图
- 导出events
- 导出routines(存储过程和函数)
这里就是一个完整的备份语句,包含了MySQL所有的内容
今天的内容就到这里,欢迎查看