sql主从同步

今天给大家介绍两种mysql的主从同步方式:第一种是基于binlogzhu主从同步;第二种就是基于gtid的主从同步方式。

首先给大家介绍一下什么是sql的主从复制。

主从复制:

通过将MySQL的某一台主机(master)的数据复制到其他主机(slaves)上,并重新执行一遍来执行 复制过程中一台服务器充当主服务器,而其他一个或多个其他服务器充当从服务器

MySQL支持的复制类型:

基于语句(statement)的复制

在主服务器上执行SQL语句,在从服务器上执行同样的语句。MySQL默认采用基于语句的复制,效率比较高。

基于行(row)的复制

把改变的内容复制过去,而不是把命令在从服务器上执行一遍。从MySQL 5.0开始支持。

混合型(mixed)的复制

默认采用基于语句的复制,一旦发现基于语句的无法精确复制时,就会采用基于行的复制。

为什么要做主从复制(用途):

灾备

数据分布

负载平衡

读写分离

提高并发能力

主从复制原理:

主要基于MySQL二进制日志

主要包括三个线程(2个I/O线程,1个SQL线程)

1、MySQL将数据变化记录到二进制日志中;
2、Slave将MySQL的二进制日志拷贝到Slave的中继日志中;
3、Slave将中继日志中的事件在做一次,将数据变化,反应到自身(Slave)的数据库

详细步骤:

1、从库通过手工执行change master to 语句连接主库,提供了连接的用户一切条件(user 、password、port、ip),并且让从库知道,二进制日志的起点位置(file名 position 号); start slave
2、从库的IO线程和主库的dump线程建立连接。
3、从库根据change master to 语句提供的file名和position号,IO线程向主库发起binlog的请求。
4、主库dump线程根据从库的请求,将本地binlog以events的方式发给从库IO线程。
5、从库IO线程接收binlog events,并存放到本地relay-log中,传送过来的信息,会记录到master.info中
6、从库SQL线程应用relay-log,并且把应用过的记录到relay-log.info中,默认情况下,已经应用过的relay 会自动被清理purge

MySQL复制常用的拓扑结构:

主从类型(Master-Slave)

主主类型(Master-Master)

级联类型(Master-Slave-Slave)

如何实现主从复制

在主服务器(master)上
    启用二进制日志
    选择一个唯一的server-id
    创建具有复制权限的用户
在从服务器(slave)上
    启用中继日志
    (二进制日志可开启,也可不开启)
    选择一个唯一的server-id
    连接至主服务器,并开始复制

给大家介绍一下第一种基于binlog的主从同步方式:

首先是准备工作,创建三台机器。

在这里我将172.25.254.100作为主服务器,另外两台作为(101和135)从服务器。然后都安装并且开启mysql服务.

由于三台虚拟机都是一样的操作,这里就不重复展示。

接下来就是对主服务器进行配置:

首先是设置唯一的server_id(建议用ip地址的最后三位):

图中圈出来的文件即为咱要进行设置的文件。

然后在主机上创建授权用户:

然后查看binlog:

这样主机就完成后了配置:

接下来我们对从库进行配置:

172.25.254.101:

172.25.254.135:

至此,我们对两台从库的配置已经完成。接下来看看是否可以进行主从复制。

图中圈出的地方需要有两个yes才可以正常运行,但slave_IO_running这一项显示NO.

推测原因:在对主机进行克隆的时候,已经提前创建了mysql,导致克隆过去之后几台机器的uuid相同,所以我们要进入 /var/lib/mysql/auto.cnf/这个文件对从机的uuid进行修改,修改完之后重启数据库:

查看修改之后的结果:

另一台:

我们可以发现修改uuid之后,之前显示NO的一项现在已经变为yes,说明之前的推测正确。

现在我们在主库创建一个表,看它们能否做得到主从同步:

从库的一个表是修改之前的表,圈主的为第二个表:

至此,基于binlog建立主从同步的实验结束!

接下来介绍第二种,基于gtid的主从同步:

我们首先要停掉上一种模式的主从:

然后开启gtid(三台机器都是同样的操作):

开启之后需要重启服务器:

然后开启从库配置:

由于前面主库发生了改变,保险起见,我们再停止一次slave;

做完这些之后呢,我们开启slave,然后查看一下状态:

显示两个“yes”,表示建立成功。

接下来用另一种方式对另一台主机进行配置:

图中红色的框表示的是新的配置代码(主要就是将之前的“master”改为了“source”),然后也可以开启主从同步。

之后在主库中新建一个库,对这个主从同步进行测试:

然后查看从库是否同步:

这里看到,两个从库都实现了同步试验成功。

总结:相比于binlog方式,gtid方式更加简单,因为它不用查看binlog_file以及binlog_position.

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

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

相关文章

计算机组成原理——数据表示(二)

当生活的压力和困惑缠绕在身边,我们往往需要振奋精神,勇往直前。无论在何种困境中,我们都要保持积极的态度和坚定的信念。将悲观的情绪抛之脑后,展现出坚强的意志力和无尽的活力。振奋精神意味着我们要战胜自己内心的负面情绪&…

Spring Boot整合Thymeleaf、JDBC Template与MyBatis配置详解

本文将详细介绍如何在Spring Boot项目中整合Thymeleaf模板引擎、JDBC Template和MyBatis,涵盖YAML配置、依赖版本匹配、项目结构设计及代码示例。 一、版本兼容性说明 Spring Boot版本与Java版本对应关系 Spring Boot 2.x:支持Java 8、11(推…

概率论里的特征函数,如何用卷积定理去理解

概率论里的特征函数,如何用卷积定理去理解_哔哩哔哩_bilibili

论文笔记(六十二)Diffusion Reward Learning Rewards via Conditional Video Diffusion

Diffusion Reward Learning Rewards via Conditional Video Diffusion 文章概括摘要1 引言2 相关工作3 前言4 方法4.1 基于扩散模型的专家视频建模4.2 条件熵作为奖励4.3 训练细节 5 实验5.1 实验设置5.2 主要结果5.3 零样本奖励泛化5.4 真实机器人评估5.5 消融研究 6 结论 文章…

HashMap用法

一、构造方法 构造方法有4个。 1、手动声明初始容量及负载因子的构造函数。初容容量的最大值不能超过MAXIMUM_CAPACITY 2、手动声明初始容量的构造函数,负载因子是默认大小。 默认的负载因子是0.75 3、无参的构造函数,会指定默认的负载因子。容量是默…

Java基础 (一)

基础概念及运算符、判断、循环 基础概念 关键字 数据类型 分为两种 基本数据类型 标识符 运算符 运算符 算术运算符 隐式转换 小 ------>>> 大 强制转换 字符串 拼接符号 字符 运算 自增自减运算符 ii赋值运算符 赋值运算符 包括 强制转换 关系运算符 逻辑运算符 …

无人机在城市执法监管中的应用:技术革新与监管挑战

随着科技的不断进步,无人机技术在城市管理中的应用越来越广泛。无人机以其灵活性、高效性和低成本的优势,正在逐渐成为城市执法监管的得力助手。本文将探讨无人机在城市执法监管中的应用现状、技术优势以及面临的挑战。 无人机技术在城市执法监管中的应用…

AI模型提示词(prompt)优化-实战(一)

一、prompt作用 用户与AI模型沟通的核心工具,用于引导模型生成特定内容、控制输出质量、调整行为模式,并优化任务执行效果,从而提升用户体验和应用效果 二、prompt结构 基本结构 角色:设定一个角色,给AI模型确定一个基…

mac 电脑上安装adb命令

在Mac下配置android adb命令环境,配置方式如下: 1、下载并安装IDE (android studio) Android Studio官网下载链接 详细的安装连接请参考 Mac 安装Android studio 2、配置环境 在安装完成之后,将android的adb工具所在…

电子应用设计方案101:智能家庭AI喝水杯系统设计

智能家庭 AI 喝水杯系统设计 一、引言 智能家庭 AI 喝水杯系统旨在为用户提供个性化的饮水提醒和健康管理服务,帮助用户养成良好的饮水习惯。 二、系统概述 1. 系统目标 - 精确监测饮水量和饮水频率。 - 根据用户的身体状况和活动量,智能制定饮水计划。…

5G网络下移动机器人的图像和指令传输用于远程操作

论文标题 **英文标题:**Image and Command Transmission Over the 5G Network for Teleoperation of Mobile Robots **中文标题:**5G网络下移动机器人的图像和指令传输用于远程操作 作者信息 Thiago B. Levin,, Joo Miguel Oliveira,, Ricardo B. Sou…

AIGC视频生成国产之光:ByteDance的PixelDance模型

大家好,这里是好评笔记,公主号:Goodnote,专栏文章私信限时Free。本文详细介绍ByteDance的视频生成模型PixelDance,论文于2023年11月发布,模型上线于2024年9月,同时期上线的模型还有Seaweed&…

软件安全性测试报告如何编写?

在当今数字化时代,软件安全性问题愈发显得重要,软件产品的安全性已经成为企业竞争力的重要组成部分。而软件安全性测试报告是通过对软件系统进行全面的安全性测试后,整理出的关于其安全性状况、潜在风险及改进建议的专业文档。此报告旨在帮助…

从密码学原理与应用新方向到移动身份认证与实践

相关学习资料放下面啦! 记得关注❤️~后续分享更多资料 通过百度网盘分享的文件:从密码学原理与应... 链接https://pan.baidu.com/s/1mHpHkvPuf8DUwReQkoYQlw?pwdGza7 提取码:Gza7 复制这段内容打开「百度网盘APP 即可获取」 记…

【玩转全栈】---基于YOLO8的图片、视频目标检测

本篇主要讲YOLO8的具体操作,想要了解YOLO的具体原理,可以去官网查询 目录 下载ultralytics库 开始检测 介绍 YOLOv8(You Only Look Once Version 8)是 YOLO 系列的最新版本,由 Ultralytics 开发并发布,是一…

生成对抗网络(GAN)入门与编程实现

生成对抗网络(Generative Adversarial Networks, 简称 GAN)自 2014 年由 Ian Goodfellow 等人提出以来,迅速成为机器学习和深度学习领域的重要工具之一。GAN 以其在图像生成、风格转换、数据增强等领域的出色表现,吸引了广泛的研究…

【若依】添加数据字典

接下来,在生成代码的页面将“学科”字段改为下拉框,然后选择数据字典 然后,将生成的代码中的index文件复制到vue3的index中,替换掉之前的index文件 修改数据库中的subject的值,这样就可以通过数据字典来查询 以上操作成…

ngrok同时配置多个内网穿透方法

一、概要 ngrok可以用来配置免费的内网穿透,启动后就可以用外网ip:端口访问到自己计算机的某个端口了。 可以用来从外网访问自己的测试页面(80、8080)、ftp文件传输(21)、远程桌面(3389)等。 …

MySQL可直接使用的查询表的列信息

文章目录 背景实现方案模板SQL如何查询列如何转大写如何获取字符位置如何拼接字段 SQL适用场景 背景 最近产品找来,想让帮忙出下表的信息,字段驼峰展示,每张表信息show create table全部展示,再逐个粘贴,有点太耗费时…

白玉微瑕:闲谈 SwiftUI 过渡(Transition)动画的“口是心非”(下)

概述 秃头小码农们都知道,SwiftUI 不仅仅是一个静态 UI 构建框架那么简单,辅以海量默认或自定义的动画和过渡(Transition)特效,我们可以将 App 界面的绚丽升华到极致。 不过,目前 SwiftUI 中的过渡&#x…