Mysql配置主从复制-GTID模式

news2024/11/24 8:35:41

目录

主从复制

主从复制的定义

主从复制的原理

主从复制的优势

主从复制的形式

主从复制的模式

主从复制的类型

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主服务器中进行添加、修改、删除操作,测试从服务器中的数据是否保持一致。注意:从服务器只允许进行查询,不可以进行添加、修改、删除等改变数据的操作,否则会导致复制状态失效。

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

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

相关文章

rank()、row_number()、dense_rank()用法详解

建表测试 测试表数据:test1 CREATE DATABASE /*!32312 IF NOT EXISTS*/db_test /*!40100 DEFAULT CHARACTER SET utf8 */; USE db_test; /*Table structure for table test1 */ DROP TABLE IF EXISTS test1; CREATE TABLE test1 ( id int(10) NOT NULL, score i…

Go语言的Json序列化与反序列化、Goto语法、Tcp Socket通信

目录标题 一、Json序列化与反序列化1. 序列化2. 反序列化 二、Goto语法三、Tcp Socket1. 单客户端发送信息到服务端2. 服务端客户端通信 一、Json序列化与反序列化 1. 序列化 package mainimport ("encoding/json""fmt")type Person struct {Name string…

【uniapp】六格验证码输入框实现

效果图 代码实现 <view><view class"tips">已发送验证码至<text class"tips-phone">{{ phoneNumber }}</text></view><view class"code-input-wrap"><input class"code-input" v-model"…

fpga时序相关概念与理解

一、基本概念理解 对于数字系统而言&#xff0c;建立时间&#xff08;setup time&#xff09;和保持时间&#xff08;hold time&#xff09;是数字电路时序的基础。数字电路系统的稳定性&#xff0c;基本取决于时序是否满足建立时间和保持时间。 建立时间Tsu&#xff1a;触发器…

【第2章 Node.js基础】2.1 JavaScript基本语法

文章目录 学习目标JavaScript版本与JavaScript运行环境JavaScript版本JavaScript运行环境 JavaScript语句与注释语句语句块注释 变量变量的命名变量的声明与赋值变量提升变量泄露全局作用域和函数作用域块级作用域与let关键字使用const关键字声明只读常量注意 数据类型数值&…

【C++】万字一文全解【继承】及其特性__[剖析底层化繁为简](20)

前言 大家好吖&#xff0c;欢迎来到 YY 滴C系列 &#xff0c;热烈欢迎&#xff01; 本章主要内容面向接触过C的老铁 主要内容含&#xff1a; 欢迎订阅 YY滴C专栏&#xff01;更多干货持续更新&#xff01;以下是传送门&#xff01; 目录 一.继承&复用&组合的区别1&…

EXCEL函数判断一个字符串是否包含

IF(ISNUMBER(SEARCH("批发",$E$2)),1,IF(ISNUMBER(SEARCH("零售",$E$2)),1,0))

Python高级语法----Python的元编程

文章目录 装饰器元类反射使用 `__getattr__`, `__setattr__`, 和 `__delattr__`元编程是一种编程技术,它允许程序员在运行时修改、增加或操作程序的结构。在Python中,元编程通常涉及到对类和函数的动态创建和修改,这是通过使用诸如装饰器、元类和反射等高级功能来实现的。 …

《网络协议》02. 物理层 · 数据链路层 · 网络层

title: 《网络协议》02. 物理层 数据链路层 网络层 date: 2022-08-31 22:26:48 updated: 2023-11-08 06:58:52 categories: 学习记录&#xff1a;网络协议 excerpt: 物理层&#xff08;数据通信模型&#xff0c;信道&#xff09;、数据链路层&#xff08;封装成帧&#xff0c…

不止于“初见成效”,阿斯利康要让数据流转,以 AI 带动决策智能

“阿斯利康数字化成果在进博会上引人注目&#xff0c;令我感到非常高兴。”这是阿斯利康代表的感慨。 数字化建设目标是利用先进技术来提高企业运营效率&#xff0c;降低成本。在第六届进博会的7.2 B2-01展区&#xff0c;阿斯利康不仅展示了全球领先的生物医药和医疗器械成果&a…

NSSCTF逆向题解

[SWPUCTF 2021 新生赛]简简单单的逻辑 直接把key打印出来&#xff0c;然后整理一下result&#xff0c;让key和result进行异或 key[242,168,247,147,87,203,51,248,17,69,162,120,196,150,193,154,145,8] data[0xbc,0xfb,0xa4,0xd0,0x03,0x8d,0x48,0xbd,0x4b,0x00,0xf8,0x27,0x…

ue rpg学习截图(p1-p59)

学习到59节了&#xff0c;几个ui都有了&#xff0c;

达梦数据库答案

1、 创建数据库实例&#xff0c;到/dm8/data下&#xff0c;数据库名&#xff1a;DEMO&#xff0c;实例名DEMOSERVER&#xff08;10分&#xff09; [dmdbadmServer ~]$ cd /dm8/tool [dmdbadmServer tool]$ ./dbca.sh1、 簇大小32&#xff0c;页大小16&#xff0c;登录密码&…

Vulnhub靶场之Funbox

正如该靶场的描述所说&#xff0c;它对初学者来说非常简单。 项目地址&#xff1a;Funbox: Scriptkiddie ~ VulnHub 所需工具&#xff1a; KaliLinux即可。 0x00 信息收集 打开虚拟机后使用nmap扫描一下网段存活&#xff0c;这里我给的虚拟机的范围是100-253,其中kali的IP是10…

策略模式(Stragedy)

简介 策略模式将策略&#xff08;方法&#xff09;与实体类相分离&#xff0c;使用聚合/组合替代继承。 思想&#xff1a;少用耦合性高的继承&#xff0c;尽量用聚合/组合来代替。 优点&#xff1a;将策略独立于实体类&#xff0c;策略的实现更加灵活&#xff0c;易于理解扩展…

【技术类-01】doc转PDF程序卡死的解决方案,

摘要&#xff1a; 1、出现 raise AttributeError("%s.%s" % (self._username_, attr))&#xff09; 2、表现&#xff1a;doc转PDF卡死&#xff08;白条不动或出现以上英文&#xff09; 3、解决&#xff1a;在docx保存代码行后面加上time.sleep(3) 4、原因&#x…

jsp 的div表格示例

<%page contentType"text/html;charsetgbk" pageEncoding"UTF-8"%> <!DOCTYPE html> <html><head><meta http-equiv"Content-Type" content"text/html; charsetUTF-8"><title>jsp div 表格示例 &…

智能网联汽车有哪些信息安全场景

目录 1.车内安全通信 2.车云安全通信 3.安全启动 4.车载应用程序保护 5.入侵检测防御与日志管理系统 在聊完车载信息安全需求之后&#xff0c;势必要去看看​应用场景有哪些。根据之前的开发经验简单聊一下我知道的&#xff0c;还有很多没有讲&#xff0c;比如说车云之间具…

Spring Data JPA 项目配置与QueryDSL集成

一、说明 Spring Data JPA通过Spring Initializer创建时勾选相关依赖即可引入&#xff0c;QueryDSL需要单独引入。Spring JPA针对QueryDSL有比较好的兼容性&#xff0c;可以实现优雅的SQL构建。 二、设置JPA默认配置&#xff08;yaml格式&#xff09; spring:jpa:hibernate:…

08.Diffusion Model数学原理分析(上)

文章目录 Diffusion Model回顾Diffusion Model算法TrainingInference 图像生成模型的本质目标MLE vs KLVAE计算 P θ ( x ) P_\theta(x) Pθ​(x)Lower bound of log ⁡ P ( x ) \log P(x) logP(x) DDPM计算 P θ ( x ) P_\theta(x) Pθ​(x)Lower bound of log ⁡ P ( x ) \…