mysql基于gtid的主从异步复制,基于gtid的半同步复制

MySQL复制(异步方式、半同步方式、GTID)总结 后续整理…… 阅读详情

实验环境

server1:172.25.27.101master节点
server2:172.25.27.102slave节点

 

 

 

一、异步复制

1、基本概念:

server-id:服务器身份id,在初始化MySQL时,会自动生成一个server-id并写到数据目录的auto.cnf文件中,官方不建议修改,并且server-id跟GTID有密切关系,并且对于任意一个数据库节点,server-id是唯一的。
GTID:全局事务标识符,使用这个功能时,内次事务提交都会在binlog里生成一个唯一的标识符,它由UUID和事务ID组成,首次提交的事务为1,第二次为2,第三次为3,以此类推。

GTID实际上是由UUID+TID (即transactionId)组成的。其中UUID(即server_uuid) 产生于auto.conf文件(cat /data/mysql/data/auto.cnf),是一个MySQL实例的唯一标识。TID代表了该实例上已经提交的事务数量,并且随着事务提交单调递增,所以GTID能够保证每个MySQL实例事务的执行(不会重复执行同一个事务,并且会补全没有执行的事务)

GTID在一组复制中,全局唯一。通过GDIT保证每个主库上提交的事务在集群中有一个唯一的ID.这种方式强化了数据库的主备一致性,故障恢复以及容错能力

主从复制,默认是通过pos复制(postion),就是说在日志文档里,将用户进行的每一项操作都进行编号(pos),每一个event都有一个起始编号,一个终止编号,我们在配置主从复制时从节点时,要输入master的log_pos值就是这个原因,要求它从哪个pos开始同步数据库里的数据,这也是传统复制技术。

异步复制的效率高,master节点不会等待slave节点
基于gtid的主从复制不容易因为master一个事件的中断而造成数据丢失而不能复制
基于position的主从复制容易因为master一个事件的中断而造成数据丢失而不能复制

2、实验原理:
 

在master上一个事务提交,并写入binlog里。
binlog日志发送到slave,slave接收并写入中继日志里,slave读取到这个GTID,并设置gtid_next的值。例如
set @@session。gtid_next=’=fbd841f9-5590-11e8-b819-000c29e6461e’;
然后告诉slave接下来的事务必须使用GTID,并写入它自己的binlog里。
slave检查并确认这个GTID没有被使用,如果没有被使用,那么开始执行这个事务并写入自己的binlog里
由于gtid_next的值不为空,slave不会尝试去生成一个新的gtid而是通过主从同步来获取GTID


3、master配置
 

vim /etc/my.cnf
    [mysqld]
    log-bin=mysql-bin                  master需要这个参数,slave不需要这个参数
    server-id=1
    gtid_mode=ON
    enforce-gtid-consistency=true      强制开启gtid同步模式

mysql -uroot -p ZHAOjun@123

CREATE USER 'repl'@'172.25.27.%' IDENTIFIED BY 'ZHAOjun@!23';        //创建复制帐户
GRANT REPLICATION SLAVE ON *.* TO 'repl'@'172.25.27.%';                   //授予此帐户复制所需的权限

flush privileges;    //刷新授权表

cat /usr/lib/mysql/auto.cnf      查看服务器uuid信息

    server-uuid=413bd0a3-b028-11e9-aab7-525400835722
cd /usr/lib/mysql
mysqlbinlog mysql-bin.000002     查看事件格式

usr mysql;
show status like '%repl%';            查看repl用户

4、slave配置
 

vim /etc/my.cnf
    server-id=2
    gtid_mode=ON
    enforce-gtid-consistency=true
systemctl restart mysqld
mysql -uroot -pZHAOjun@123

#如果之前做了主从复制,那么需要重新更改复制模式
    stop slave
    change master to master_host='172.25.20.4',master_user='repl',master_password='YLZ123+a',master_auto_position=1;

#查看如果同步了master库则会有执行事务的id号

select * from mysql.gtid_executed;             
show slave status;             如果复制了master数据,则会显示执行的事务id
select * from mysql.gtid_executed;             发现slave完成了master的所有事件
stop slave io_thread;

start slave io_thread;


5、测试

master上的操作

create database westos;           创建数据库westos

#插入数据

insert into westos.test values ('user3','333');
insert into westos.test values ('user4','333');
show processlist;
select * from westos.test;

slave上的操作

show databases;    查看数据库,是否已经同步master上的操作
select * from westos.test;    查看插入的数据
show slave status\G;    复制的事务id
    Retrieved_Gtid_Set: b920c6db-b028-11e9-b2d3-525400356eac:1-2
    Executed_Gtid_Set: b920c6db-b028-11e9-b2d3-525400356eac:1-2
select * from mysql.gtid_executed;    执行的事务id
    +--------------------------------------+----------------+--------------+
    | source_uuid                          | interval_start | interval_end |
    +--------------------------------------+----------------+--------------+
    | b920c6db-b028-11e9-b2d3-525400356eac |              1 |            1 |
    | b920c6db-b028-11e9-b2d3-525400356eac |              2 |            2 |
    +--------------------------------------+----------------+--------------+

二、半同步复制(基于gtid异步复制)

1、基本概念

半同步复制:一主多从模式下,有一个从节点返回成功,即成功,不必等待多个节点全部返回

该模式可以确保从服务器接收完主服务器发送的binlog日志文件并写入自己的中继日志(relay log)里,然后会给主服务器一个反馈,告诉对方已经接收到完毕,这时主库线程才返回当前session告知操作完成,当出现超时情况时,源主服务器会暂时切换到异步复制模式,直到至少有一台设置为半同步复制模式的从服务器及时收到信息为止。


异步复制可能丢失数据:半同步复制就是为了解决数据丢失问题

master做完一步等一步,需要等待至少一个slave节点完成复制之后才开始进行下一个操作
master做大事件的时候,需要进行半同步,master节点等待一个节点即可
当半同步出现问题的时候会自动切换为异步同步
银行数据库全同步,master节点等待集群中的所有全部节点
数据库要避免慢查询问题,会造成延迟,占用数据库的IO
优点:提高了数据完整性,数据至少会存在两个节点(master节点和一个slave节点)
加了消息确认ACK,不会造成数据丢失
出现问题会自动降低为异步复制

2、master操作

INSTALL PLUGIN rpl_semi_sync_master SONAME 'semisync_master.so';安装半同步模块
SELECT PLUGIN_NAME, PLUGIN_STATUS设置            查看插件
       FROM INFORMATION_SCHEMA.PLUGINS
       WHERE PLUGIN_NAME LIKE '%semi%';
SET GLOBAL rpl_semi_sync_master_enabled = 1开启半同步,也就是激活插件
SHOW VARIABLES LIKE 'rpl_semi_sync%';查看变量的值
show status like '%rpl%';查看变量的状态
    

3、slave操作

INSTALL PLUGIN rpl_semi_sync_slave SONAME 'semisync_slave.so';安装半同步模块
SELECT PLUGIN_NAME, PLUGIN_STATUS设置        查看插件
       FROM INFORMATION_SCHEMA.PLUGINS
       WHERE PLUGIN_NAME LIKE '%semi%';
激活插件
SET GLOBAL rpl_semi_sync_slave_enabled = 1开启
STOP SLAVE IO_THREAD;关闭
START SLAVE IO_THREAD;开启
SHOW VARIABLES LIKE 'rpl_semi_sync%';    查看变量

4、测试

1、server2上关闭io进程
2、server1上边
    use westos
    insert into usertb values ('user4','123');
    等待10s,没有接收到slave的ack请求,自动转换为异步复制,需要等待一个节点完成所有的复制
    insert into usertb values ('user5','123');发现特别快,已经变成异步了
    show status like '%rpl%';发现半同步已经关闭OFF
有10秒的延迟,这是因为从库的io进程关闭了,不能及时的写入数据;主库等待10秒之后从库还没有起来,主库不再等待直接写入
等待完毕,10秒后直接写入
再次插入数据,主库直接写入,没有延迟
3、在server2上边启动io进程
    start slave io_thread;
    show processlist;
    use westos
    select * from usertb;发现所有的数据都过来了(基于gtid),接着上一次的事情做
半同步复制再一次失败后会自动切换成异步复制,从库进程起来之后会将没有做的事情再做一遍

注意:将插件安装在数据库中是临时的,退出重新登陆会失效,永久的可以将配置写在配置文件中

 

MySQL数据库的基于GTID的主从复制原理和方法详解 一. mysql的主从复制 实验环境: 虚拟机名 功能 sever1 主库 server2 从库 主库配置(server1): 1.下载安装包并解压: tar xf mysql-5.7.24-1.el7.x86_64.rpm-bundle.tar 2.安装需要的安装包,删除其他多余的安装包 3.复制安装包给server2 scp * root@172.25.77.2:... 阅读详情

相关推荐

Mysql主从复制原理分析

MySQL Replication是官方提供的主从同步方案,也是用的最广的同步方案。Replication(复制)使来自一个 MySQL数据库服务器(称为源(Source))的数据能够复制到一个或多个 MySQL 服务器(称为副本(Replica))。默认情况下,复制是异步的;副本不需要永久连接即可从源接收更新。根据配置,您可以复制所有数据库、指定数据库,甚至某个数据库中的指定表。

cxl0209的博客 1004

mysql的主从复制(基于pos和gtid)两种形式与并行复制

一、主从复制 原理: 主从复制一共有三个进程,从库生成两个线程,一个I/O线程,一个SQL线程; i/o线程去请求主库的binlog,并将得到的binlog日志写到relay log(中继日志) 文件中; 主库会生成一个 log dump 线程,用来给从库 i/o线程传binlog; SQL 线程,会读取relay log文件中的日志,并解析成具体操作,来实现主从的操作一致,而最终数据...

weixin_42709236的博客 1357

GXHT40温湿度传感器:I2C通信与CRC校验实战解析

本文详细解析GXHT40温湿度传感器的I2C通信协议与CRC校验机制,涵盖硬件连接、时序控制、数据读取及加热功能应用。通过实战案例分享优化技巧与异常处理,帮助开发者提升嵌入式系统中传感器数据的准确性与可靠性。

rgv234567的博客 241

mysql主从复制(异步复制、半同步复制、GTID复制)

mysql主从复制(异步复制、半同步复制、GTID复制)

w975121565的博客 1027

用deepseek对GPU服务器进行压力测试

利用 DeepSeek 模型对 GPU 服务器进行压力测试,核心思路是通过,验证 GPU 服务器在计算、显存、网络等维度的承载能力,同时观察稳定性与性能瓶颈。

weixin_42795092的博客 1610

保姆级教程:在NXPS32144环境下安装EB TRESOS 29.0.0并配置MCAL开发环境

本文提供了一份详细的保姆级教程,指导如何在NXP S32K144环境下安装EB TRESOS 29.0.0并配置MCAL开发环境。内容涵盖从前期资源准备、软件安装步骤、核心的MCAL关联配置,到首次创建AUTOSAR工程并进行模块配置的全流程,旨在帮助汽车电子开发者搭建稳定、可用的底层软件开发地基。

wind6的博客 956

MySQL复制(四)异步复制之GTID

背景MySQL 任何复制方式都是基于 binlog 方式进行的。从 MySQL5.6 开始增加了特性,作为方式的延伸,用来强化数据库的主备一致性,故障恢复,以及容错能力。以取代过去传统的主从复制 (即:基于和的异步复制)。借助,在发生主备切换的情况下,MySQL 的其他 slave 可以自动在新主上找到正确的复制位置,这大大简化了复杂复制拓扑下集群的维护,也减少了人为设置复制发生误操作的风险。另外,基于的复制可以忽略已经执行过的事务,减少了数据发生不一致的风险。MySQL复制中使用的事务类型有以下两种:GT

一介IT 593

Ceres Solver:从入门到使用

Ceres Solver是谷歌开源的C++非线性优化库,能够解决有约束或无约束条件下的非线性最小二乘问题。2010年之后大量的运用在谷歌的产品开发中,尤其在谷歌开源的cartographer中被大量的使用。 ceres可以在Linux,Windows,macOS,Andrioid,IOS系统进行安装使用,详情可查看下方的官网链接。 Ceres Solver 官网:http://ceres-solver.org/

非晚非晚的博客 1万+

lnmp架构-mysql(一)异步复制、异步GTID模式

mysql一主多从

xxxxxxxxxxxxxz的博客 394

openMVS ---dense point cloud(代码理解)

openMVS ---dense point cloud(代码理解)0 代码实现原理1 代码实现步骤1.1 参数传递1.2 loading .mvs数据1.3 稠密重建1.3.0 相关变量及概念1.3.1 ComputeDepthMaps(data) --计算多张深度图1.3.1.1. pre1.3.1.2 为每一张depth map Select view(s) !!!1.3.1.2.1 N neighbors --- global score + filter1.3.1.2.2 MRF ---- t

小rivaaaa的博客 5328

【图形学】后处理下的HDR、颜色分级、颜色映射与颜色空间

目录 一、Color Grading 1.1概念 1.2 内置在Unity/UE4 二、HDR、LDR与VDR 2.1 LDR 2.2 HDR 2.3 VDR 三、Tone Mapping 3.1 概念 3.2 算法发展史 3.3 ACES算法 四、常见的颜色空间标准 参考 一、Color Grading 1.1概念 Color Grading(颜色分级、颜色校正)俗称调色,是游戏后期处理中最常见也是必要的一个环节。它能够改变或矫正最终图像的颜色和亮度,你可以把它想象...

ColorGalaxy 8419

Mysql进阶(1)——异步复制(主从复制、Gtid复制)、半同步复制

前言 原理总结 异步复制:在主节点写入日志即返回成功,默认情况下MySQL5.5/5.6/5.7和mariaDB10.0/10.1的复制功能是异步的。异步复制可以实现最佳的性能,主库把binlog日志发送给从库,这一动作就结束了,并不验证从库,会造成主从库数据不一致。 GTID复制不像传统的复制方式(异步复制、半同步复制)需要找到binlog(MASTER_LOG_FILE)和POS点(MASTE...

meltsnow的博客 1019

树莓派 RP2350B 开发环境搭建

本文介绍了树莓派RP2350B开发环境的搭建过程。

张一西的博客 286

MySQL主从复制原理 | 异步复制 | 半同步复制 | GTID复制

一、主从复制简述 MySQL 主从复制也可以理解为主从同步,通过将一台主机的数据复制给其他一台或者多台主机,并重新应用中继日志中的SQL语句来实现复制功能。 1、常见的主从架构图: 单向主从复制 双向主从复制 级联主从模式 一主多从模式 多主一从模式 2、主从复制的功能 实时灾备:让从库随时接管有故障的主库 分压:让从库分担主库的读压力,做读写分离,提供查询服务 让从库做一些特殊SQL...

李笑男的博客 1134

微信开发 - 最新第三方网站接入微信登录、微信支付时,本地 redirect_uri 参数错误导致无法调试的解决方案(微信开放平台)完美解决每次都需要部署到线上测试,在本地使用本地 ip 就能轻松调试

redirect_uri参数错误,微信第三方登录,没有服务器时的测试方法,微信开放平台的回调域名怎么设置为本地域名IP,微信登录微信支付每次调试都需要放到服务器上怎么办,微信登录支付业务在本地调试不了怎么办,在本地怎么测试微信支付和登录,微信第三方登陆本地测试,怎么在本地进行测试,微信回调域怎么设置为本地IP,微信扫码登录redirect_uri参数错误,微信开放平台,微信开放平台开发的第三方登录和支付,vue2,nuxt2,vue3,nuxt3,uniapp,微信开放平台,公众号,微信支付,微信登录授权,

🏆 前端领域优质创作者 8791

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

Linux之Mysql的主从复制(gtid复制、异步复制、全同步复制和半同步复制)

一、Mysql 1. Mysql的介绍 Mysql是一个关系型数据库管理系统,由瑞典MYSQL AB公司开发,目前属于Oracle旗下的产品。关系数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性。MySQL所使用的 SQL 语言是用于访问数据库的最常用标准化语言。MySQL 软件采用了双授权政策,分为社区版和商业版,由于其体积小、速度快、总体拥有...

qq_43830639的博客 1041

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

MySQL数据库集群——MySQL的异步复制(基于position的主从复制和基于gtid的主从复制),半同步复制,组复制

以下所有的实操都是在redhat7.3上操作 传统的实现数据库主从复制 异步复制:当数据复制一半,master卡死,那么数据就会丢失;master和slave不是同步的; 单向复制,只能slave复制master的,即slave对master库只读 server1 172.25.70.1 master server2 172.25.70.2 slave 在master(ser...

AmourHaiti的博客 442

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

9、MySQL 8.0 主从复制原理分析与实战

MySQL Replication是官方提供的主从同步方案,也是用的最广的同步方案。Replication(复制)使来自一个 MySQL数据库服务器(称为源(Source))的数据能够复制到一个或多个 MySQL 服务器(称为副本(Replica))。默认情况下,复制是异步的;副本不需要永久连接即可从源接收更新。根据配置,您可以复制所有数据库、指定数据库,甚至某个数据库中的指定表。. 高可用:通过配置一定的复制机制,MySQL 实现了跨主机的数据复制,从而获得一定的高可用能力,如果需要 获得更高的可用性,

srrsheng的博客 2391

MySQL的主从复制、基于GTID的主从复制和半同步复制、组复制

文章目录数据备份mysql的主从复制 数据备份 数据备份是一种古老而有效的数据保护手段,早期的数据备份手段主要是数据冷备,即定期将数据复制到 某种存储介质(磁带,光盘…)上并物理存档保管,如果系统存储损坏,那么就从冷备的存储中恢复数据 冷备的优点是简单和廉价,成本和技术难度都较低,缺点是不能保证数据最终一致 由于数据是定期复制,因此备份设备中的数据比系统中的数据陈旧,如果系统数据丢失,那么从上个备...

monster_warm的博客 228

MySQL实现主从复制及MySQL的半同步复制

前言: (1)什么是主从复制 主从复制,是用来建立一个和数据库未完全一样的数据库环境,称为从数据库,主数据库 一般是准时的业务数据库。 (2)为什么要作主从复制 1、作数据的热备,作为后备数据库,主数据库服务器发生故障后,可以切换到从数据库继 续进行工作,避免数据丢失。 2、架构的扩张,业务量越来越大,IO访问频率过高,单机无法满足,此时作多库的存储, 降低磁盘I/O访问的频...

weixin_43831670的博客 1188

mysql主从复制和基于gtid的主从、半同步复制

一、了解主从复制 1.主从复制的原理: 影响MySQL-A数据库的操作,在数据库执行后,都会写入本地的日志系统A中。假设,实时的将变化了的日志系统中的数据库事件操作,在MYSQL-A的3306端口,通过网络发给MYSQL-B。MYSQL-B收到后,写入本地日志系统B,然后一条条的将数据库事件在数据库中完成。那么,MYSQL-A的变化,MYSQL-B也会变化,这样就是所谓的MYSQL的复制,...

qq_42711214的博客 602

MySQL的主从复制(异步复制,半同步复制,组复制)

一.MySQL主从复制的概念 MySQL 主从复制是指数据可以从一个MySQL数据库服务器主节点复制到一个或多个从节点。MySQL 默认采用异步复制方式,这样从节点不用一直访问主服务器来更新自己的数据,数据的更新可以在远程连接上进行,从节点可以复制主数据库中的所有数据库或者特定的数据库,或者特定的表。 二.MySQL主从复制的原理 MySQL主从复制涉及到三个线程,一个运行在主节点(log dum...

qq_44251046的博客 958

性能调优——22 MySQL 8.0 主从复制原理分析与实战

MySQL 主从复制的优势和应用场景分析、主从复制设计理念分析、基于 binlog 位点同步的主从复制原理分析、MySQL 8.0 一主两从异步复制实战、MySQL 8.0 一主两从半同步复制实战、基于全局事务标识符(GTID)复制原理分析、MySQL 8.0 基于 GTID 主从复制实战

念头通达 898

MYSQL主从复制和级联复制、主主复制、半同步复制、复制过滤器、加密复制、GTID复制、复制的监控和维护

MYSQL主从复制 主从复制的作用: 数据分布 负载均衡读 备份 高可用和故障切换 MySQL升级测试 主从复制原理 主从复制线程: 主节点: dump Thread:为每个Slave的I/O Thread启动一个dump线程,用于向其发送binary log events 从节点: I/O Thread:向Master请求二进制日志事件,并保存于中继日志中 SQL Thread:从中继日志中读取...

zerocdn的博客 365

MySQL8.4主从复制

1 什么是复制MySQL Replication是官方提供的主从同步方案,是使用最广的同步方案;Replication使来自于一个MySQL数据库服务器(源Source)的数据能够复制到一个或者多个MySQL服务器(副本);默认情况下,复制是异步的;副本不需要永久连接即可从源接收更新可以指定库,指定表进行复制根据主从复制的特点,可以实现MySQL读写分离2 复制的优势&缺点2.1 复制的优势高可用:通过复制机制,MySQL实现跨主机的数据复制,从而获得一定的高可用能力。

GzlAndy的博客 1579

什么是mysql主从复制_MySQL主从复制是什么原理?

主从复制是怎么实现的呢?更新语句会记录 binlog,它是一种逻辑日志。有了这个 binlog,从服务器会获取主服务器的 binlog 文件,然后解析里面的 SQL 语句,在从服务器上面执行一遍,保持主从的数据一致。这里面涉及到三个线程,连接到 master 获取 binlog,并且解析 binlog 写入中继日 志,这个线程叫做 I/O 线程。Master 节点上有一个 log dump 线程,...

weixin_39616090的博客 353
上一篇: mysql数据库基于二进制日志的主从复制(异步),基于msyql-proxy的读写分离
下一篇: mysql数据库组复制(即全同步复制)
SS_CC_Go
博客等级 码龄9年 16粉丝 119原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值