专栏首页mysql-dba复制对一些事件和语句的处理汇总
原创

复制对一些事件和语句的处理汇总

以下我们都会在不同的事务隔离级别和不同的二进制日志格式下验证

注意:

当事务隔离级别为REA-UNCOMMITED和READ-COMMITED时如果binlog_format设置为statement,执行DML操作会报错

1.复制AUTO_INCREMENT字段

基于row格式复制带AUTO_INCREMENT字段,mysql产生的自增值会被明确记录到二进制日志中,因此AUTO_INCREMENT字段会被正确的复制到二进制日志中

基于statement格式复制带AUTO_INCREMENT字段(只能在REPETATABLE-READ的隔离级别下设置binlog_format为statement)通过解析二进制日志如果插入中未指定AUTO_INCREMENT字段的值,在主库上mysql将生成Intvar_event事件记录下一个生成的auto_increment字段的值,这样在备库执行时先set insert_id,因此保证了基于语句的复制auto_increment字段也能被正确的复制

总结:AUTO_INCREMENT字段在不同事务隔离级别和不同的复制格式下都能正确的复制到从库

2.复制create ... if not exists语句

此语句无论在什么隔离级别和复制格式下,都以Query_log_event事件记录到二进制日志中,无论是否触发建表操作都会记录日志中

3.create table ... select 语句复制

GTID格式下在mysql8.0.21版本之前执行create table ... select会报错(语句是2个事务)之后的版本在支持原子性的存储引擎上是一个事务

在statement格式下二进制日志以Query_log_event事件记录

在row格式下二进制日志以完整的日志记录记录create table 和插入记录

4.主从复制使用不同的表定义

支持不同表定义复制的前提条件:

在源表和目标表中都存在的字段,其定义顺序必须相同

源表和目标表有差异的字段,差异字段必须在相同字段的后面

源表和目标有差异的字段需要设置默认值

在row格式下,能够保证数据正常复制

在statement格式下,如果语句能在备库执行,数据也能正常复制到备库

5.复制limit 子句

在statement格式带有limit操作的语句,二进制日志会记录原始的语句,因为无法保证主从库上limit语句查询的数据顺序一致,所以无法保存复制一致性

在row或者mixed格式下带有limit子句的dml语句会记录每一行的变更,所以数据能够准确的复制从库上

6.复制load data语句

在statement格式下,从库在解析二进制日志文件begin_load_query_log_event事件,然后再tmpdir参数指定的目录下生成临时文件把提取的文件数据放到临时文件中,在从库执行load语句,就可以保证数据一致

在row,mixed的格式下,load在二进制日志记录为具体的jnsert语句

7.复制临时表

原创声明,本文系作者授权云+社区发表,未经许可,不得转载。

如有侵权,请联系 yunjia_community@tencent.com 删除。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • HAWQ取代传统数仓实践(十三)——事实表技术之周期快照

    一、周期快照简介         周期快照事实表中的每行汇总了发生在某一标准周期,如一天、一周或一月的多个度量。其粒度是周期性的时间段,而不是单个事务。周期快照...

    用户1148526
  • 逆向工厂(二):静态分析技术

    * 本文原创作者:追影人,本文属FreeBuf原创奖励计划,未经许可禁止转载 前言 [逆向工厂]第一章节中介绍了逆向技术的相关基础知识,其中提到逆向的两种形式:...

    FB客服
  • 盘一盘如何「体系化」学习 Python 基础知识

    将零碎的知识点体系化真的很重要,我把 Python 基础的所有要点都放在一张思维脑图(Xmind 做的)里了。不得不说思维导图真是体系化知识的好工具。

    用户5753894
  • 自然语言处理透析希拉里和特朗普各自的“演讲范儿”

    大数据文摘
  • 史上最强NLP知识集合:知识结构、发展历程、导师名单

    自然语言处理(NaturalLanguage Processing,NLP)是计算机科学领域与人工智能领域中的一个重要方向,旨在研究能实现人与计算机之间用自然语...

    量子位
  • 精品课 - Python 基础

    将零碎的知识点体系化真的很重要,我就把这门课的所有要点都放在一张思维脑图(是体系化知识的好工具)里了。

    用户5753894
  • 从基础到 RNN 和 LSTM,NLP 取得的进展都有哪些?

    本文基于 NLP 的基础知识,全方位介绍了 NLP 随着深度学习和神经网络的应用所取得的进展。

    AI科技评论
  • 快速汇总多个工作簿/工作表中的数据(Excel工具推荐)

    很多数据散落在很多工作表或者工作簿中,由于某项工作我们需要将这些数据做个汇总。比方,我们有以下三个工作簿

    wujunmin
  • Science:句法和语义组合的神经基础

    请点击上面“思影科技”四个字,选择关注作者,思影科技专注于脑影像数据处理,涵盖(fMRI,结构像,DTI,ASL,EEG/ERP,FNIRS,眼动)等,希望专业...

    用户1279583
  • Linux内核源码规范解析

    曾经在开发Linux内核驱动的时候,创建了一个补丁文件,但是在把补丁打到主分支的时候提示很多编码风格的错误问题,后来重做了补丁才解决了问题,这也是没有严格按照的...

    范蠡
  • 一文看尽各种 NLP 任务

    前言:之前我们讲了很多与语音处理有关的任务,这次我们来讲和自然语言处理相关的任务。NLP任务大体可以分成两大类,一种是文本序列到文本序列,比如机器翻译,文本风格...

    zenRRan
  • 四万字全面详解 | 深度学习中的注意力机制(三)

    目前深度学习中热点之一就是注意力机制(Attention Mechanisms)。Attention源于人类视觉系统,当人类观察外界事物的时候,一般不会把事物当...

    NewBeeNLP
  • 编程知识科普--(2)什么是计算机编程中的低级语言和高级语言

    我们常常听到高级语言,低级语言等等,但是只是一知半解,比如Java和C等等是高级语言,而汇编是低级语言,那么他们之间的区别是什么呢,我从网上总结了一些观点,...

    浩Coding
  • Linux 三剑客之 awk 实战详解教程

    我们知道 Linux 三剑客,它们是 grep、sed、awk。在前边已经讲过 grep 和 sed,没看过的同学可以直接点击阅读,今天要分享的是更为强大的 a...

    用户3105362
  • MySQL中神奇的show命令详解

    Java学习录
  • TiDB 源码阅读系列文章(六)Select 语句概览

    Select 语句只会讲解最简单的情况:全表扫描+过滤,暂时不考虑索引等复杂情况,更复杂的情况会在后续章节中介绍。语句为:

    PingCAP
  • [程序设计语言]-00:目录

    1. 开篇概览  前一周写了一篇博文“记-码农的“启蒙”之《程序设计语言-实践之路》和《面向对象分析和设计》两书”,其中说打算总结下这两本书中有哪些收获,就是关...

    blackheart
  • 学界 | 详解指针生成网络:自动生成长段文本的抽象摘要

    作者:Abigail See 机器之心编译 参与:Nurhachu Null 这篇博文是斯坦福大学计算机科学在读博士 Abigail See 对最近自己和其他研...

    机器之心
  • 达观数据:综述中英文自然语言处理的异和同

    人类经过漫长的历史发展,在世界各地形成了很多不同的语言分支,其中汉藏语系和印欧语系是使用人数最多的两支。英语是印欧语系的代表,而汉语则是汉藏语系的代表。中英文语...

    机器之心

扫码关注云+社区

领取腾讯云代金券