mysql gtid基础_MySQL 基础知识梳理学习(四)----GTID

在日常运维中,GTID带来的最方便的作用就是搭建和维护主从复制。GTID的主从模式代替了MySQL早期版本中利用二进制日志文件的名称和日志位置的做法,使用GTID使操作和维护都变得更加简洁和可高。

1.GTID的优点

(1)基于GTID搭建主从复制根据简单。

(2)可以确保每个事务只会被执行一次。

(3)可以方便的实现Replication的Failover,不需要像传统模式复制那样去找master_log_file和master_log_pos。

(4)GTID在MGR中也发挥了中要作用。MGR各节点之间复制依赖于GTID,并且在集群节点进行Recover重新加入到集群的操作中,会选择其中一个节点作为Donor,然后基于Purged的GTID开始同步数据。MGR还是通过GTID进行冲突验证,用于跟踪每个实例上提交的事务,确定哪些事务可能有冲突。

2.使用GTID搭建主从时,需要注意的MySQL参数。

(1)server_id: 设置MySQL实例的server_id,每个实例的server_id不能一样。

(2)gtid_mod=ON: MySQL实例开启GTID模式。

(3)enforce_gtid_consitency=ON: 使用GTID模式复制时,需要开启此参数,用来保证GTID的一致性。

(4)log-bin: MySQL必须开启Binlog。

(5)log-slave-updates=1: 决定slave从master接受到的更新且执行之后,执行的Binlog是否记录到salve的Binlog中,建议开启。

(6)binlog_format=ROW:强烈建议binlog_format使用ROW格式,其它格式可能造成数据不一致。

(7)skip-slave-start=1:当salve数据库启动的时候,salve不会自动开启复制。

3.使用GTID的注意事项

由于基于GTID的复制依赖于事务,所以在使用GTID时,有些MySQL特性不支持。

(1)事务中混合多个存储引擎,会产生多个GTID。

当使用GTID时,如果在同一个事务中,更新包含了非事务引擎(如MyISAM)和事务引擎(InnoDB)表的操作,就会导致多个GTID分配给同一个事务。

(2)主从库的表存储引擎不一致,会导致数据不一致。

如果主从库的存储引擎不一致,例如一个是事务存储引擎,一个是非事务存储引擎,则会导致事务和GTID之间一对一的关系被破坏,结果导致基于GTID的复制不能正确地运行。

(3)基于GTID模式复制,不支持Create table ...select 语句。

因为使用基于行模式的复制时,该语句实际上被记录为两个单独的事件,一个是创建表,另一个是将原表中的数据插入到刚刚新建的表中。当在事务中执行该语句时,在一些情况下。这两个事务可能接收到相同的事务ID,这意味着包含插入的事务将被从库挑过。

(4)不支持Create Temporary table 和 drop temporary table。

使用GTID复制时, 不支持Create Temporary table 和 drop temporary table。但是,在autocommit=1的情况下可以创建临时表,master创建临时表不产生GTID信息,所以不会同步到Salve上,但是删除临时表时,产生GTID会导致主从中断。

(5)不推荐在GTID模式的实例上进行mysql_upgrade.

因为mysql_upgrade的过程要创建或修改系统表,而系统表时非事务引擎,所以不建议在开启GTID模式的实例上使用带有--write-binlog选项的mysql_upgrade。

(6)一旦在给定的MySQL实例中提交了事务,具有相同GTID的事务便会被该服务器忽略。而且,在主实例上提交的事务在从库上只可以应用一次。

-----主要内容参考梳理于网络知识,此短文仅为学习笔记,在此原创作者感谢!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/383018.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

k8s pod MySQL环境变量_Kubernetes 配置Pod和容器(一)定义容器环境变量

此页展示了如何给运行在Kubernetes Pod中的容器定义环境变量。开始之前必须有一个Kubernets集群,和一个能和集群沟通的kubectl命令行工具。如果你还没有集群,你可以用Minikube建立一个集群。给容器定义环境变量当你建立了一个Pod,你可以给你运行在Pod中的…

koa2 mysql 中间件_Koa2第二篇:中间件

第一篇介绍了生成器目录设计。xyzcoding:Koa2第一篇:详解生成器​zhuanlan.zhihu.com接下来学习Koa2的中间件。Koa2本身只能算一个极简的HTTP服务器,自身不内置中间件,但是提供中间件内核。中间件是Koa2的核心,因此需要…

mysql命令行如何建库_MySQL心得2--命令行方式建库和表

1.创建使用create database或create schema命令可以创建数据库。create database 库名create database if not exists 库名(创建库并检验创建的库是否存在,不存在则建,存在就不建了)MySQL不允许两个数据库使用相同的名字,使用ifnot exists从句…

python 少儿趣味编程下载_PYTHON少儿趣味编程

章认识Python11.1编程语言和Python11.1.1程序设计和编程语言11.1.2Python简介21.2Python的安装41.2.1Windows下的Python安装41.2.2MAC下的Python安装81.3个程序HelloWorld111.4开发工具IDLE121.4.1IDLE简介121.4.2用IDLE编写程序121.4.3IDLE的其他功能161.5小结18第2章变量、数…

rs485数据线接反_终于有人把RS485通讯的正确接线方式讲明白了,网友:这下好办了...

RS485是一个定义平衡数字多点系统中的驱动器和接收器的电气特性的标准,该标准由电信行业协会和电子工业联盟定义。使用该标准的数字通信网络能在远距离条件下以及电子噪声大的环境下有效传输信号。RS485使得廉价本地网络以及多支路通信链路的配置成为可能。那么RS485通讯的正确…

骑马与砍杀python代码_GitHub - yunwei1237/scottish-fold: 一个关于骑马与砍杀的剧本制作工具...

scottish-fold一个关于骑马与砍杀的剧本简单快速的制作工具前言​在很久以前的时候,也就是刚开始玩骑砍的时候就想着能够制作一个自己的剧本,用于书写自己想要的故事。当我怀着远大的梦想去这么做的时候才发现,原来制作剧本没有自己想象的那么…

java tomcat 监控_java程序监控tomcat实现项目宕机自动重启并发送邮件提醒

最近由于老项目频繁挂掉,由于项目经过多批人之手,短时间难以定位问题,所以只好写一个监控程序。 时间比较紧半天时间,而且水平有限大神勿喷,有好的方法还请赐教。 1、问题描述:分两种情况1.1、tomcat 彻底挂…

java静态类和非静态类的区别_Java中静态内部类和非静态内部类到底有什么区别?...

内部类(Inner Class)和静态内部类(Static Nested Class)的区别:定义在一个类内部的类叫内部类,包含内部类的类称为外部类。内部类可以声明public、protected、private等访问限制,可以声明 为abstract的供其他内部类或外部类继承与扩展&#x…

java写便签_如何编写一个便签程序(用Java语言编写)

如何编写一个便签程序(用Java语言编写)热度:336 发布时间:2011-02-18 11:44:16如何编写一个便签程序(用Java语言编写)因为以前没有好好学习Java,都搞忘了,请大家原谅,也请你们指导一下,怎么编写这个程序&…

java 生成log4j_Java log4j配置每天生成一个日志文件 - 永恒ぃ☆心 的日志 - 网易博客...

一、配置属性文件log4j.propertieslog4j.rootLoggerINFO,stdout,Rlog4j.appender.stdoutorg.apache.log4j.ConsoleAppenderlog4j.appender.stdout.layoutorg.apache.log4j.PatternLayout# Pattern to output the callers file name and line number.log4j.appender.stdout.layo…

java 子进程输出流_具有输入/输出流的Java进程

首先,我建议更换这条线路。Process process Runtime.getRuntime ().exec ("/bin/bash");带着线条ProcessBuilder builder new ProcessBuilder("/bin/bash");builder.redirectErrorStream(true);Process process builder.start();ProcessBuil…

java中if 运算符_[Java]Java基本语法结构(运算符,流程控制语句,if语句)

1:运算符(掌握)(1)算术运算符A:,-,*,/,%,,--B:的用法a:加法b:正号c:字符串连接符C:/和%的区别数据做除法操作的时候,/取得是商,%取得是余数D:和--的用法a:他们的作用是自增或者自减b:使用**单独使用放在操作数据的前面和后面效果一样。a或者a效果一样。*…

java 变量取值范围_JAVA中的变量及取值范围

字节是二进制数据的单位。一个字节通常8位长。但是,一些老型号计算机结构使用不同的长度。为了避免混乱,在大多数国际文献中,使用词代替byte。变量:变量的数据类型;变量名变量值数据类型基本型数值型(整数)布尔型浮点型…

java object强制类型转换_scala object 转Class Scala强制类型转换

asInstanceOf[T]将对象类型强制转换为T类型。还是由于泛型存在类型擦除的原因,1.asInstanceOf[String]在运行时会抛出ClassCastException异常,而List(1).asInstanceOf[List[String]]将不会。packageresti.webimportorg.springframework.beans.factory.annotation.Au…

java毛玻璃_模糊效果(毛玻璃效果)

模糊效果(毛玻璃效果)效果演示:1. 使用iOS自带的 UIImageImageEffects 文件文件中有这么几个方法:- (UIImage *)applyLightEffect;- (UIImage *)applyExtraLightEffect;- (UIImage *)applyDarkEffect;- (UIImage *)applyTintEffectWithColor:(UIColor *)…

java程序崩溃怎么重启_android 异常崩溃后 重启app(进程守护方式实现)

【实例简介】【实例截图】【核心代码】package com.sunfusheng.daemon.sample;import android.content.ComponentName;import android.content.Intent;import android.os.Looper;import android.util.Log;import com.blankj.utilcode.util.AppUtils;import com.sunfusheng.daem…

mysql 存储过程 循环结构 命名_mysql存储过程----循环结构

循环结构一共分为三种:三种循环结构分别为while、repeat、loop。while循环语法while 表达式(如果表达式为true则执行业务逻辑,否则不执行,与repeat循环相反,repeat循环满足表达式退出循环,不满足一直执行) do业务逻辑e…

mysql 组合索引 or_Mysql_组合索引和单列索引

一、目标什么时候使用组合索引,什么时候使用单独索引组合索引、单独索引区别组合索引:最左前缀匹配原则二、前期数据准备1. 建表CREATE TABLE user (uidint(11) NOT NULLAUTO_INCREMENT,namevarchar(50) DEFAULT NULL,pwdvarchar(50) DEFAULT NULL,creat…

mysql与mangodb多租户_MongoDB多租户(Java):如何使用MongoClient在运行时切换具有不同数据库凭据的MongoDB数据库?...

我正面临一个关于MongoDB多租户的问题.我有两个不同的mongoDB数据库(db1和db2).这两者都有不同的凭据.db1凭据:userName:admin密码:passwddb2凭据:userName:admin1密码:passwd1我需要在运行时从一个数据库切…

python 库 全局变量_python局部变量和全局变量global

当你在函数定义内声明变量的时候,它们与函数外具有相同名称的其他变量没有任何关系,即变量名称对于函数来说是 局部 的。这称为变量的 作用域 。所有变量的作用域是它们被定义的块,从它们的名称被定义的那点开始。使用局部变量例7.3 使用局部…