专栏首页MySQL参数系列mysqldump测试--mysql基础系列

mysqldump测试--mysql基础系列

本系列文章主要是对mysql的一些基础功能做些测试记录,方便大家参考,也方便自己后续翻看。

本次测试较为简单,主要对比master-data、--set-gtid-purged这两个参数。

test库上创建一张简单的表a,包含id和age两个字段,都是int类型,导出语句分别如下:

mysqldump --single-transaction --master-data test > test1.sql
mysqldump -uroot -p --single-transaction --master-data test > test1.sql
mysqldump -uroot -p --single-transaction --set-gtid-purged=OFF test > test3.sql
mysqldump -uroot -p --single-transaction  test > test4.sql

利用linux自带diff工具,对比test1.sql 和test2.sql

diff -y test1.sql test2.sql
root@15d0fdf7b43a:~# diff -y test1.sql test2.sql
-- MySQL dump 10.13  Distrib 8.0.25, for Linux (x86_64)         -- MySQL dump 10.13  Distrib 8.0.25, for Linux (x86_64)
--                                                              --
-- Host: localhost    Database: test                            -- Host: localhost    Database: test
-- ------------------------------------------------------       -- ------------------------------------------------------
-- Server version       8.0.25                                  -- Server version       8.0.25

/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT   /*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESUL   /*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESUL
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION   /*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION
/*!50503 SET NAMES utf8mb4 */;                                  /*!50503 SET NAMES utf8mb4 */;
/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */;                     /*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */;
/*!40103 SET TIME_ZONE='+00:00' */;                             /*!40103 SET TIME_ZONE='+00:00' */;
/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECK   /*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECK
/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FO   /*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FO
/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALU   /*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALU
/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;        /*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;
SET @MYSQLDUMP_TEMP_LOG_BIN = @@SESSION.SQL_LOG_BIN;            SET @MYSQLDUMP_TEMP_LOG_BIN = @@SESSION.SQL_LOG_BIN;
SET @@SESSION.SQL_LOG_BIN= 0;                                   SET @@SESSION.SQL_LOG_BIN= 0;

--                                                              --
-- GTID state at the beginning of the backup                    -- GTID state at the beginning of the backup
--                                                              --

SET @@GLOBAL.GTID_PURGED=/*!80000 '+'*/ '';                     SET @@GLOBAL.GTID_PURGED=/*!80000 '+'*/ '';

--                                                              --
-- Position to start replication or point-in-time recovery fr <
--                                                            <
                                                              <
CHANGE MASTER TO MASTER_LOG_FILE='binlog.000005', MASTER_LOG_ <
                                                              <
--                                                            <
-- Table structure for table `a`                                -- Table structure for table `a`
--                                                              --

DROP TABLE IF EXISTS `a`;                                       DROP TABLE IF EXISTS `a`;
/*!40101 SET @saved_cs_client     = @@character_set_client */   /*!40101 SET @saved_cs_client     = @@character_set_client */
/*!50503 SET character_set_client = utf8mb4 */;                 /*!50503 SET character_set_client = utf8mb4 */;
CREATE TABLE `a` (                                              CREATE TABLE `a` (
  `id` int NOT NULL,                                              `id` int NOT NULL,
  `age` int DEFAULT NULL,                                         `age` int DEFAULT NULL,
  PRIMARY KEY (`id`)                                              PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_   ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_
/*!40101 SET character_set_client = @saved_cs_client */;        /*!40101 SET character_set_client = @saved_cs_client */;

--                                                              --
-- Dumping data for table `a`                                   -- Dumping data for table `a`
--                                                              --

LOCK TABLES `a` WRITE;                                          LOCK TABLES `a` WRITE;
/*!40000 ALTER TABLE `a` DISABLE KEYS */;                       /*!40000 ALTER TABLE `a` DISABLE KEYS */;
INSERT INTO `a` VALUES (1,2),(2,3);                             INSERT INTO `a` VALUES (1,2),(2,3);
/*!40000 ALTER TABLE `a` ENABLE KEYS */;                        /*!40000 ALTER TABLE `a` ENABLE KEYS */;
UNLOCK TABLES;                                                  UNLOCK TABLES;
SET @@SESSION.SQL_LOG_BIN = @MYSQLDUMP_TEMP_LOG_BIN;            SET @@SESSION.SQL_LOG_BIN = @MYSQLDUMP_TEMP_LOG_BIN;
/*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */;                       /*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */;

/*!40101 SET SQL_MODE=@OLD_SQL_MODE */;                         /*!40101 SET SQL_MODE=@OLD_SQL_MODE */;
/*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */;     /*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */;
/*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */;               /*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */;
/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT *   /*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT *
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS   /*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION *   /*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION *
/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;                       /*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;

-- Dump completed on 2021-06-15 14:58:58                      | -- Dump completed on 2021-06-15 14:59:28

可以明显看出,有master-data是有change master to语句切换binlog位点信息。

接下来,对比一下3和4的区别。

root@15d0fdf7b43a:~# diff -y test3.sql test4.sql
-- MySQL dump 10.13  Distrib 8.0.25, for Linux (x86_64)         -- MySQL dump 10.13  Distrib 8.0.25, for Linux (x86_64)
--                                                              --
-- Host: localhost    Database: test                            -- Host: localhost    Database: test
-- ------------------------------------------------------       -- ------------------------------------------------------
-- Server version       8.0.25                                  -- Server version       8.0.25

/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT   /*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESUL   /*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESUL
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION   /*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION
/*!50503 SET NAMES utf8mb4 */;                                  /*!50503 SET NAMES utf8mb4 */;
/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */;                     /*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */;
/*!40103 SET TIME_ZONE='+00:00' */;                             /*!40103 SET TIME_ZONE='+00:00' */;
/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECK   /*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECK
/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FO   /*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FO
/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALU   /*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALU
/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;        /*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;
                                                              > SET @MYSQLDUMP_TEMP_LOG_BIN = @@SESSION.SQL_LOG_BIN;
                                                              > SET @@SESSION.SQL_LOG_BIN= 0;
                                                              >
                                                              > --
                                                              > -- GTID state at the beginning of the backup
                                                              > --
                                                              >
                                                              > SET @@GLOBAL.GTID_PURGED=/*!80000 '+'*/ '';

--                                                              --
-- Table structure for table `a`                                -- Table structure for table `a`
--                                                              --

DROP TABLE IF EXISTS `a`;                                       DROP TABLE IF EXISTS `a`;
/*!40101 SET @saved_cs_client     = @@character_set_client */   /*!40101 SET @saved_cs_client     = @@character_set_client */
/*!50503 SET character_set_client = utf8mb4 */;                 /*!50503 SET character_set_client = utf8mb4 */;
CREATE TABLE `a` (                                              CREATE TABLE `a` (
  `id` int NOT NULL,                                              `id` int NOT NULL,
  `age` int DEFAULT NULL,                                         `age` int DEFAULT NULL,
  PRIMARY KEY (`id`)                                              PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_   ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_
/*!40101 SET character_set_client = @saved_cs_client */;        /*!40101 SET character_set_client = @saved_cs_client */;

--                                                              --
-- Dumping data for table `a`                                   -- Dumping data for table `a`
--                                                              --

LOCK TABLES `a` WRITE;                                          LOCK TABLES `a` WRITE;
/*!40000 ALTER TABLE `a` DISABLE KEYS */;                       /*!40000 ALTER TABLE `a` DISABLE KEYS */;
INSERT INTO `a` VALUES (1,2),(2,3);                             INSERT INTO `a` VALUES (1,2),(2,3);
/*!40000 ALTER TABLE `a` ENABLE KEYS */;                        /*!40000 ALTER TABLE `a` ENABLE KEYS */;
UNLOCK TABLES;                                                  UNLOCK TABLES;
                                                              > SET @@SESSION.SQL_LOG_BIN = @MYSQLDUMP_TEMP_LOG_BIN;
/*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */;                       /*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */;

/*!40101 SET SQL_MODE=@OLD_SQL_MODE */;                         /*!40101 SET SQL_MODE=@OLD_SQL_MODE */;
/*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */;     /*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */;
/*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */;               /*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */;
/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT *   /*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT *
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS   /*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION *   /*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION *
/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;                       /*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;

-- Dump completed on 2021-06-15 15:00:29                      | -- Dump completed on 2021-06-15 15:21:40

可以明显看出,有--set-gtid-purged=off情况下,没有gtid_purged操作。

mysqldump工具有很多参数,线上数据,备份完以后,恢复的时候最后确认一下脚本。防止对库线上库进行一些不必要的操作(风险很大)。

本文分享自微信公众号 - DBA札记(dba_jason),作者:小董学编程

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2021-06-15

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 基于mysqldump聊一聊MySQL的备份和恢复

    Hi,大家好,我是麦洛,今天我们聊聊MySQL的备份和恢复,在下面文章中,你会了解到MySQL常见的备份类型,以及基于mysqldump命令在日常开发中如何做M...

    麦洛
  • MySQL Shell转储和加载第2部分:基准测试

    关于新的MySQL Shell Dump&Load实用程序的第二部分旨在演示性能,同时还将其与其他各种逻辑转储和加载工具进行比较:mysqldump,mysql...

    MySQLSE
  • Web基础配置篇(四): Mysql的配置及使用

    MySQL 是最流行的关系型数据库管理系统,在 WEB 应用方面 MySQL 是最好的 RDBMS(Relational Database Management...

    品茗IT
  • php 学习笔记之搭建开发环境(mac版) 原

    下面我们将搭建最简单的 php 开发环境,每一步都会验证上一步的操作结构,请一步一步跟我一起搭建吧!

    雪之梦技术驿站
  • awesome-mysql-cn资源

    MySQL 资源列表,内容包括:分析工具、备份、性能测试、配置、部署、GUI 等。 分析工具 性能,结构和数据分析工具 Anemometer - 一个 SQL ...

    guanguans
  • MySQL数据库备份实操

    当前xtrabackup的8.0.13已经支持 mysql 8.0.20版本(8.0.20版本对innodb的数据文件模式进行了修改)

    技术路漫漫
  • MySQL从删库到恢复,还用跑路吗?

    误删数据库应该如何恢复操作?怎样才能做好数据库的备份、恢复、容灾、HA?如果你身处数据库行业,最近可能会比较关注这几个问题

    搜云库技术团队
  • MySQL数据备份及还原(一)

    关于删库跑路的事故现在已经屡见不鲜了,数据备份的必要性是企业数据管理极其重要的一项工作。关于数据备份、恢复也有很多场景及方法,本系列也会将主要的几种工具通过案例...

    July
  • Linux下Mysql定时任务备份数据的实现办法

    备份是容灾的基础,是指为防止系统出现操作失误或系统故障导致数据丢失,而将全部或部分数据集合从应用主机的硬盘或阵列复制到其它的存储介质的过程。而对于一些网站、系统...

    砸漏
  • MySQLDump的备份方法

    mysqldump 是 MySQL 系统自带的逻辑备份工具,主要用于转储数据库。它主要产生一系列的 SQL 语句,可以封装到文件,该文件包含重建数据库所需要的 ...

    用户8989785
  • mysql使用总结

    create database sina default character set utf8mb4 collate utf8mb4_unicode_ci; ...

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

    bsbforever
  • MYSQL数据库设计的一些小技巧[转载]

    常用数据操作语言DML笔记(select insert update delete) select 语句 高级的查询功能,见下面的详细内容 s...

    wangxl
  • Mysql 常用命令记录与数据导入导出

    前一阵在写很多sql及类sql语句,发现自己的记忆力可以说是相当烂了,上午刚查过插入语句怎么写,下午就忘记了需要重新查,,而且隐隐约约的有点强迫症??只要记得不...

    呼延十
  • 干货!MySQL 资源大全

    shlomi-noach 发起维护的 MySQL 资源列表,内容覆盖:分析工具、备份、性能测试、配置、部署、GUI 等。

    二狗不要跑
  • 技术分享 | 改写 mysqldump 解决 DEFINER 问题

    本文来源:原创投稿 *爱可生开源社区出品,原创内容未经授权不得随意使用,转载请联系小编并注明来源。

    爱可生开源社区
  • [Linux] PHP程序员玩转Linux系列-备份还原MySQL

    前几天有个新闻,说是gitlab的工程师把数据文件给误删了,搞了个大事件,很多人都去围观了.备份工作应该在最开始的时候就要做,否则就会失去最佳时机,为了保证我的...

    陶士涵
  • mysql 数据库备份和恢复

    物理备份是指直接复制包含数据的文件夹和文件。这种类型的备份适用于大数据量且非常重要,遇到问题需要快速回复的数据库。

    WindWant
  • 使用 go-mysql-elasticsearch 把 MySQL 中的业务日志导入 Elasticsearch

    相当一部分应用的日志是保存在数据库之中的,这些陈旧又稳定的应用在支撑着业务的运行。它们产生的日志通常来说也是有其价值的,但是如果能够融入到目前较为通用的 Ela...

    崔秀龙

扫码关注云+社区

领取腾讯云代金券