当前位置: 首页 > news >正文

Mysql配置主从复制-GTID模式

目录

主从复制

主从复制的定义

主从复制的原理

主从复制的优势

主从复制的形式

主从复制的模式

主从复制的类型

GTID模式

GTID的概念

GTID的优势

GTID的原理

GTID的配置

Mysql主服务器

​编辑

Mysql从服务器

​编辑


主从复制

主从复制的定义

是指把数据从一个Mysql服务器(主节点)复制到一个或多个Mysql服务器(从节点)中,会把主节点服务器中的所有数据库实例、特定数据库实例或特定表等,全部复制到从节点服务器中。

主从复制的原理

是通过基于日志的复制方式实现数据的同步。当主服务器上发生数据变更时,会将这些变更写入二进制日志(Binary Log)中。从服务器通过连接到主服务器,请求从主服务器获取二进制日志,并将这些日志应用到自己的数据库中。

主从复制的优势

  1. 提高读性能:通过设置从服务器(Slave),读操作可以被分摊到主服务器(Master)和从服务器上,从而提高整体的读取性能。主服务器负责处理写操作,从服务器负责处理读操作,从而降低主服务器的负载,提升整个系统的吞吐量。
  2. 数据冗余和备份:通过主从复制,从服务器上的数据是主服务器的冗余副本。在主服务器发生故障时,从服务器仍然可以提供服务,并且可以通过将某个从服务器提升为新的主服务器来快速恢复服务。此外,从服务器也可以用于定期的备份操作,以确保数据的安全性和可恢复性。
  3. 高可用性:通过主从复制,可以实现数据库的故障转移和高可用性。当主服务器发生故障时,可以手动或自动将某个从服务器提升为新的主服务器,继续提供数据库服务,从而实现快速的故障恢复。
  4. 数据分析和报表生成:由于从服务器可以处理读操作,可以将其用于数据库的数据分析和报表生成等工作。这样可以避免对主服务器造成额外的负载,同时提供实时的数据分析和报表服务。
  5. 数据分发和跨地域部署:主从复制可以用于将数据分发到不同的地理位置的从服务器上,从而实现跨地域的数据访问和部署。这对于全球化的应用程序和多地域灾备是非常有用的。
  6. 架构的扩展。业务量越来越大,I/O访问频率过高,单机无法满足,此时做多库的存储,降低磁盘I/O访问的频率,提高单个机器的I/O性能。

主从复制的形式

  1. 一主一从;
  2. 一主多从;
  3. 多主一从;
  4. 双主复制;
  5. 级联复制。

主从复制的模式

  1. 异步模式(默认);
  2. 半同步模式;
  3. 全同步模式。

主从复制的类型

  1. 基于二进制日志复制(有三种形式)
    1. 基于SQL语句的复制;
    2. 基于行的复制;
    3. 混合模式复制。
  2. 基于GTID复制(Mysql版本 >= 5.7及以上推荐使用)

GTID模式

GTID的概念

  • GTID即全局事务ID:global transaction identifier;
  • GTID是一个事务一一对应,并且全局唯一ID;
  • 一个GTID在一个服务器上只执行一次,避免重复执行导致数据混乱或者主从不一致;
  • GTID用来代替传统复制方法,不再使用MASTER_LOG_FILE+MASTER_LOG_POS开启复制。 而是使用MASTER_AUTO_POSTION=1的方式开始复制;
  • MySQL-5.6.5开始支持的,MySQL-5.6.10后开始完善;
  • 在传统的slave端,binlog是不用开启的,但是在GTID中slave端的binlog是必须开启的,目的是记录执行过的GTID(强制)。

GTID的优势

  • 更简单的实现failover,不用以前那样在需要找log_file和log_pos;
  • 更简单的搭建主从复制;
  • 比传统的复制更加安全;
  • GTID是连续的没有空洞的,保证数据的一致性,零丢失。

GTID的原理

  • 当一个事务在主库端执行并提交时,产生GTID,一同记录到binlog日志中;
  • binlog传输到slave,并存储到slave的relaylog后,读取这个GTID的这个值设置gtid_next变量,即告诉Slave,下一个要执行的GTID值;
  • sql线程从relay log中获取GTID,然后对比slave端的binlog是否有该GTID;
  • 如果有记录,说明该GTID的事务已经执行,slave会忽略;
  • 如果没有记录,slave就会执行该GTID事务,并记录该GTID到自身的binlog,在读取执行事务前会先检查其他session持有该GTID,确保不被重复执行;
  • 在解析过程中会判断是否有主键,如果没有就用二级索引,如果没有就用全部扫描。

GTID的配置

Mysql主服务器

1、在Mysql的my.ini配置文件中添加以下参数:

gtid_mode=ON
enforce_gtid_consistency=true
server_id=1
log-bin=mysql-bin
binlog_format=row
log-slave-updates=1

2、重启Mysql和创建复制用户

使用管理员打开cmd命令窗口,按照以下命令步骤分别执行:

#暂停服务;

net stop mysql

#开启服务;

net start mysql

#连接数据库,Password替换为自己数据库密码;

mysql -u root -pPassword

#创建一个用于复制的用户,userNamePassword自行设置;

CREATE USER 'userName'@'%' IDENTIFIED BY 'Password';

#授予复制权限,userName即上步创建的用户名;

GRANT REPLICATION SLAVE ON *.* TO 'userName'@'%';

#获取状态,记住File和Position两项参数,后面需要用到;

SHOW MASTER STATUS;

Mysql从服务器

 1、在Mysql的my.ini配置文件中添加以下参数:

gtid_mode=ON
enforce_gtid_consistency=true
server_id=1
log-bin=mysql-bin
binlog_format=row
log-slave-updates=1

2、重启Mysql和创建复制用户

使用管理员打开cmd命令窗口,按照以下命令步骤分别执行:

#暂停服务;

net stop mysql

#开启服务;

net start mysql

#连接数据库,Password替换为自己数据库密码;

mysql -u root -pPassword

#配置复制,serverIP是主服务器IP地址,userNamepassword是刚在主服务器创建的用户,fileposition是刚查看主服务器状态返回的参数;

CHANGE MASTER TO MASTER_HOST='serverIP', MASTER_USER='userName', MASTER_PASSWORD='password', MASTER_LOG_FILE='file', MASTER_LOG_POS=position;

#启动复制;

START SLAVE;

#查看复制状态,输出中的Slave_IO_RunningSlave_SQL_Running的值为Yes,表示复制正在正常运行;

SHOW SLAVE STATUS\G;

到这里就结束了,可以在Mysql主服务器中进行添加、修改、删除操作,测试从服务器中的数据是否保持一致。注意:从服务器只允许进行查询,不可以进行添加、修改、删除等改变数据的操作,否则会导致复制状态失效。

相关文章:

Mysql配置主从复制-GTID模式

目录 主从复制 主从复制的定义 主从复制的原理 主从复制的优势 主从复制的形式 主从复制的模式 主从复制的类型 GTID模式 GTID的概念 GTID的优势 GTID的原理 GTID的配置 Mysql主服务器 ​编辑 Mysql从服务器 ​编辑 主从复制 主从复制的定义 是指把数据从一个…...

Flink之状态管理

Flink状态管理 状态概述状态分类 键控、按键分区状态概述值状态 ValueState列表状态 ListStateMap状态 MapState归约状态 ReducingState聚合状态 Aggregating State 算子状态概述列表状态 ListState联合列表状态 UnionListState广播状态 Broadcast State 状态有效期 (TTL)概述S…...

[Mac软件]Adobe Media Encoder 2024 V24.0.2免激活版

软件说明 使用Media Encoder,您将能够处理和管理多媒体。插入、转码、创建代理版本,并几乎以任何可用的格式输出。在应用程序中以单一方式使用多媒体,包括Premiere Pro、After Effects和Audition。 紧密整合 与Adobe Premiere Pro、After …...

Bytebase 2.11.0 - 支持 OceanBase Oracle 模式

🚀 新功能 支持 OceanBase Oracle 模式。支持设置 MySQL 在线变更参数。新增项目数据库查看者的角色。 🎄 改进 支持在项目中直接选择所有用户并为之添加角色。 调整了项目页面的布局。在 SQL 编辑器中通过悬浮面板展示表和列的详情。 🪦 …...

『CV学习笔记』文本识别算法CRNNSVTR介绍

文本识别算法CRNN&SVTR介绍 文章目录 一. 文本识别1.1. 文本识别方法介绍1.1.1. 规则文本识别1.1.2. 不规则文本识别1.2. CRNN算法原理1.2.1. CRNN基本网络结构1.3. SVTR算法原理二. 参考文献一. 文本识别 文本识别是OCR(Optical Character Recognition)的一个子任务,其…...

HaaS510开板式DTU真机连云:上报监测数据至阿里云物联网平台

背景 HaaS: Hardware as a Service。 HAAS510 是一种开板式 DTU ,旨在为用户已开发好的设备快速增加 4G 连云能力的 4G CAT1 数传模块。它通过将模组与用户设备集成到一个外壳内,既保持设备的一体性,又降低重新开发 PCB 的时间消耗和模组开…...

贾扬清开源 AI 框架 Caffe | 开源英雄

【编者按】在开源与人工智能的灿烂星河里,贾扬清的名字都格外地耀眼。因为导师 Trevor Darrell 教授的一句“你是想多花时间写一篇大家估计不是很在意的毕业论文,还是写一个将来大家都会用的框架?”,学生贾扬清一头扎进了创 Caffe…...

【objectarx.net】使用公式自动更新表格项的内容

使用公式自动更新表格项的内容...

CSS 移动端 1px(线条/边框) 不同机型上显示粗细不同,解决办法

由于不同的手机有不同的像素密度导致的。如果移动显示屏的分辨率始终是普通屏幕的2倍&#xff0c;1px的边框在devicePixelRatio2的移动显示屏下会显示成2px&#xff0c;所以在高清瓶下看着1px总是感觉变胖了 <!DOCTYPE html> <html lang"en"> <head&g…...

vue3使用vuex的示例(模块化功能)

目录 1. store/index.ts 2. main.ts 3. App.vue调用 4. 如果删除moduleA的namespaced属性, 保留moduleB的namespaced:true 5. 则App.vue修改为: 1. store/index.ts 注意: 需要使用时带上模块名称的namespaced必须为true, 不写或者为false时调用时不需要写模块名称(获取st…...

Vatee万腾的科技决策力奇迹:Vatee科技决策力的独特之选

在金融投资的复杂领域中&#xff0c;Vatee万腾以其独特的科技决策力创造了一场真正的奇迹。这不仅是一种引领投资者走向成功的选择&#xff0c;更是一种开启新时代的科技决策奇迹。 Vatee的科技决策力背后蕴藏着强大的智慧和创新。通过大数据分析、智能算法的运用&#xff0c;V…...

ai技术是怎么换脸的,实现原理是什么,有那些软件

人工智能&#xff08;AI&#xff09;在近年来的迅猛发展中&#xff0c;带来了许多令人惊叹的技术创新&#xff0c;其中之一就是人工智能换脸技术。这项技术通过深度学习和图像处理的手段&#xff0c;使得用户可以将自己的面孔替换成其他人物&#xff0c;引发了广泛的讨论和应用…...

在IDEA中使用maven项目总结

一 什么是maven Maven本身也是Java写的&#xff0c;他是一款服务于Java平台的自动化构建工具 Maven是一个项目管理工具&#xff0c;旨在简化软件项目的构建、依赖管理和项目信息管理。它使用基于项目对象模型&#xff08;Project Object Model&#xff0c;POM&#xff09;的…...

oracle备份一个表需要做的操作

在 Oracle 中备份一个表可以通过以下步骤完成&#xff0c;包括备份表结构&#xff08;DDL&#xff09;和备份表数据&#xff08;DML&#xff09;&#xff1a; 备份表结构&#xff08;DDL&#xff09;&#xff1a; 使用 CREATE TABLE AS SELECT&#xff1a; 创建一个新表&#…...

C 语言 switch 语句

C 语言 switch 语句 在本教程中&#xff0c;您将通过一个示例学习在C语言编程中创建switch语句。 switch语句使我们可以执行许多代替方案中的一个代码块。 虽然您可以使用if…else…if阶梯执行相同的操作。但是&#xff0c;switch语句的语法更容易读写。 switch … case的语…...

架构师:构建高可用服务治理Consul集群与Kong网关管理

1、简述 在微服务架构中,高可用性和服务治理是非常重要的方面。Consul作为一个开源的服务发现和配置工具,可以帮助我们实现高可用服务治理。Kong是一个用于管理 API 网关的工具,它可以提供强大的流量控制和安全功能。本文将介绍如何构建一个高可用的Consul集群,并结合Kong…...

elemenui的Upload上传整合成数组对象

1. 普通直接上传 <el-upload action"" :before-upload"doBeforeUpload"><el-button type"success" size"mini">导入</el-button></el-upload> methods:{doBeforeUpload(file) {let reader new FileReader(…...

莫桑比克市场开发攻略,收藏一篇就够了

中国与莫桑比克之间的经贸关系源远流长&#xff0c;两国之间的贸易和投资合作呈现出快速增长的趋势。莫桑比克是农业国&#xff0c;生产以及生活资料依赖进口&#xff0c;市场潜力还是非常不错的&#xff0c;今天就给大家分享一下。文章略长&#xff0c;大家点赞收藏关注慢慢看…...

go语言学习

1、示例代码&#xff1a; imgName : g.Cfg().MustGet(ctx, "migrate.img-arm-rbd").String() 在给定的代码行中&#xff0c;g.Cfg() 是一个函数调用&#xff0c;它返回一个配置对象。MustGet(ctx, "migrate.img-arm-rbd") 则是在这个配置对象上调用的方法…...

安哥拉市场开发攻略,收藏一篇就够了

安哥拉是非洲南部的一个国家&#xff0c;中国是安哥拉最大的贸易伙伴&#xff0c;安哥拉是中国在非洲的第二大贸易伙伴&#xff0c;中国人在安哥拉也是非常受欢迎的&#xff0c;虽然安哥拉经济比较落后&#xff0c;但是市场潜力还是非常不错的。今天就来给大家分享一下安哥拉的…...

(LeetCode 每日一题) 3442. 奇偶频次间的最大差值 I (哈希、字符串)

题目&#xff1a;3442. 奇偶频次间的最大差值 I 思路 &#xff1a;哈希&#xff0c;时间复杂度0(n)。 用哈希表来记录每个字符串中字符的分布情况&#xff0c;哈希表这里用数组即可实现。 C版本&#xff1a; class Solution { public:int maxDifference(string s) {int a[26]…...

大数据学习栈记——Neo4j的安装与使用

本文介绍图数据库Neofj的安装与使用&#xff0c;操作系统&#xff1a;Ubuntu24.04&#xff0c;Neofj版本&#xff1a;2025.04.0。 Apt安装 Neofj可以进行官网安装&#xff1a;Neo4j Deployment Center - Graph Database & Analytics 我这里安装是添加软件源的方法 最新版…...

Auto-Coder使用GPT-4o完成:在用TabPFN这个模型构建一个预测未来3天涨跌的分类任务

通过akshare库&#xff0c;获取股票数据&#xff0c;并生成TabPFN这个模型 可以识别、处理的格式&#xff0c;写一个完整的预处理示例&#xff0c;并构建一个预测未来 3 天股价涨跌的分类任务 用TabPFN这个模型构建一个预测未来 3 天股价涨跌的分类任务&#xff0c;进行预测并输…...

三体问题详解

从物理学角度&#xff0c;三体问题之所以不稳定&#xff0c;是因为三个天体在万有引力作用下相互作用&#xff0c;形成一个非线性耦合系统。我们可以从牛顿经典力学出发&#xff0c;列出具体的运动方程&#xff0c;并说明为何这个系统本质上是混沌的&#xff0c;无法得到一般解…...

鱼香ros docker配置镜像报错:https://registry-1.docker.io/v2/

使用鱼香ros一件安装docker时的https://registry-1.docker.io/v2/问题 一键安装指令 wget http://fishros.com/install -O fishros && . fishros出现问题&#xff1a;docker pull 失败 网络不同&#xff0c;需要使用镜像源 按照如下步骤操作 sudo vi /etc/docker/dae…...

有限自动机到正规文法转换器v1.0

1 项目简介 这是一个功能强大的有限自动机&#xff08;Finite Automaton, FA&#xff09;到正规文法&#xff08;Regular Grammar&#xff09;转换器&#xff0c;它配备了一个直观且完整的图形用户界面&#xff0c;使用户能够轻松地进行操作和观察。该程序基于编译原理中的经典…...

安卓基础(aar)

重新设置java21的环境&#xff0c;临时设置 $env:JAVA_HOME "D:\Android Studio\jbr" 查看当前环境变量 JAVA_HOME 的值 echo $env:JAVA_HOME 构建ARR文件 ./gradlew :private-lib:assembleRelease 目录是这样的&#xff1a; MyApp/ ├── app/ …...

【LeetCode】3309. 连接二进制表示可形成的最大数值(递归|回溯|位运算)

LeetCode 3309. 连接二进制表示可形成的最大数值&#xff08;中等&#xff09; 题目描述解题思路Java代码 题目描述 题目链接&#xff1a;LeetCode 3309. 连接二进制表示可形成的最大数值&#xff08;中等&#xff09; 给你一个长度为 3 的整数数组 nums。 现以某种顺序 连接…...

MySQL 索引底层结构揭秘:B-Tree 与 B+Tree 的区别与应用

文章目录 一、背景知识&#xff1a;什么是 B-Tree 和 BTree&#xff1f; B-Tree&#xff08;平衡多路查找树&#xff09; BTree&#xff08;B-Tree 的变种&#xff09; 二、结构对比&#xff1a;一张图看懂 三、为什么 MySQL InnoDB 选择 BTree&#xff1f; 1. 范围查询更快 2…...

DiscuzX3.5发帖json api

参考文章&#xff1a;PHP实现独立Discuz站外发帖(直连操作数据库)_discuz 发帖api-CSDN博客 简单改造了一下&#xff0c;适配我自己的需求 有一个站点存在多个采集站&#xff0c;我想通过主站拿标题&#xff0c;采集站拿内容 使用到的sql如下 CREATE TABLE pre_forum_post_…...