美文网首页
MySQL 从库备份时,主库做了一个DDL,会怎样

MySQL 从库备份时,主库做了一个DDL,会怎样

作者: 安静的码农 | 来源:发表于2023-07-12 23:39 被阅读0次

当备库用–single-transaction 做逻辑备份的时候,如果从主库的 binlog 传来一个 DDL 语句会怎么样?

假设这个 DDL 是针对表 t1 的, 这里我把备份过程中几个关键的语句列出来:

Q1:SET SESSION TRANSACTION ISOLATION LEVEL REPEATABLE READ;

Q2:START TRANSACTION WITH CONSISTENT SNAPSHOT;

Q3:SAVEPOINT sp;

###时刻 1###

Q4:show create table `t1`;

###时刻 2###

Q5:SELECT * FROM `t1`;

###时刻 3###

Q6:ROLLBACK TO SAVEPOINT sp;

###时刻 4###

1、在备份开始的时候,为了确保 RR(可重复读)隔离级别,再设置一次 RR 隔离级别 (Q1);

2、启动事务,这里用 WITH CONSISTENT SNAPSHOT 确保这个语句执行完就可以得到一个一致性视图(Q2);

3、设置一个保存点,这个很重要(Q3);

4、show create 是为了拿到表结构 (Q4);

5、SELECT * FROM `t1`; 开始正式导出数据(Q5);

6、回滚到 SAVEPOINT sp,在这里的作用是释放 t1 的 MDL 锁 (Q6);

DDL 从主库传过来的时间按照效果不同,分为4个时刻,如下:

a、如果在 Q4 语句执行之前到达,现象:没有影响,备份拿到的是 DDL 后的表结构;

b、如果在“时刻 2”到达,则表结构被改过,Q5 执行的时候,报 Table definition has changed, please retry transaction,现象:mysqldump 终止;

c、如果在“时刻 2”和“时刻 3”之间到达,mysqldump 占着 t1 的 MDL 读锁,binlog 被阻塞,现象:主从延迟,直到 Q6 执行完成;

d、从“时刻 4”开始,mysqldump 释放了 MDL 读锁,现象:没有影响,备份拿到的是 DDL 前的表结构;

相关文章

  • Mysql主从同步实例

    mysql主从复制,不停库 1.实现思路 首先通过mysqldump将主库数据备份,然后将备份数据恢复至从库, 再...

  • mysql主库备份到从库

    1.首先要清除从库上的主从同步信息 2.在从库上删掉原来的数据库 3.到主库上备份数据库 4.将备份的数据库文件发...

  • mysql 主从同步

    mysql 配置主从备份 主库3306 从库 3308 1. 3306 my.ini配置 2.3308 my.in...

  • MySQl主库数据备份到从库

    2019-08-13MySQL主库数据备份到从库 1. 先进入主库,进行锁表,此处锁定为只读状态,防止数据写入 (...

  • How To Repair MySQL Replication

    mysql 主从备份出现的问题,记录如下: 1、因为主库和从库并不是一开始就一致,主库在构建之前,存在一个数据库实...

  • mysql 主从复制配置实例

    mysql 主从复制配置实例 mysql 主从复制配置,主要用于双(多)机热备份,所有读写操作都在主库上执行,从库...

  • MySQL主从同步配置

    MySQL主从配置文件 主库配置 从库配置 主库执行命令 从库执行命令

  • 9 MySQL 主从同步

    MySQL 主从同步概述 [TOC] MySQL 主从同步介绍 主库: 被客户端存储数据访问的库 从库: 同步主库...

  • Mysql 读写分离 Demo -- PHP版

    备注:Mysql 主库 :192.168.157.88Mysql 从库 :192.168.157.89 测试结果

  • <深入浅出mysql>--复制 笔记

    一.什么是复制? 主库DDL,DML操作通过++BinLog++传给从库重做。 DDL--数据定义语言,creat...

网友评论

      本文标题:MySQL 从库备份时,主库做了一个DDL,会怎样

      本文链接:https://www.haomeiwen.com/subject/fttmudtx.html