ITPub博客

首页 > 数据库 > 数据库开发技术 > mysqldump命令详解 Part 6- --master-data参数的使用

mysqldump命令详解 Part 6- --master-data参数的使用

原创 数据库开发技术 作者:ibsbforever 时间:2019-03-25 21:27:00 0 删除 编辑

 

往期专题请查看
这是一个坚持Oracle,Python,MySQL原创内容的公众号


前情提要

MySQL 5.7 Windows平台安装

MySQL 5.7 Linux平台安装 Part 1

MySQL 5.7.21 Linux平台安装 Part 2

MySQL 5.7 常用命令

[MySQL学习笔记]1. MySQL测试数据的构造

[MySQL学习笔记]2. mysqldump命令详解 Part 1

[MySQL学习笔记] 3.mysqldump命令详解 Part 2 -备份全库

mysqldump命令详解 Part 3-备份单表

[MySQL故障处理]记一次innobackupex导致的从库无法同步的问题

mysqldump命令详解 4-按条件备份表数据

mysqldump命令详解 5-导出事件,函数和存储过程

实验环境:

  • 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所有的内容

今天的内容就到这里,欢迎查看






可点击阅读原文获得更好的阅读体验,推荐在PC端阅读


也可在公众号内回复 mysqldump 搜索相关内容

或直接打开个人网页搜索


http://


往期专题包括:


  • Python 自动化运维

  • MySQL  安装

  • 打造属于自己的监控系统

  • Python爬虫基础

  • Oracle awr报告全解析

  • Oracle ASM全解析

  • Oracle Data Guard全解析

  • Oracle ClusterWare全解析

  • Oracle常见参数解析

  • Oracle常见故障处理

  • Oracle SQL优化案例


原文作者:宅必备;如有侵权,请联系管理员删除。

请登录后发表评论 登录
全部评论
Oracle,MySQL DBA,Python自动化运维

注册时间:2019-01-29

  • 博文量
    245
  • 访问量
    243936