MySQL 主从复制原理及其工作过程的配置

一、MySQL主从复制原理

        MySQL 主从同步是一种数据库复制技术,它通过将主服务器上的数据更改复制到一个或多个从服务器,实现数据的自动同步。

        主从同步的核心原理是将主服务器上的二进制日志复制到从服务器,并在从服务器上执行这些日志中的操作。

二、MySQL主从复制意义

  • 数据分布:主从复制支持数据跨服务器或地理分布,提升访问速度和可用性。
  • 灾备:如果主数据库出现问题,可以快速切换到从数据库,保证业务的连续性。
  • 读写分离:通过主从复制,可以实现数据库层面的读写分离,提高查询效率和系统性能。
  • 负载平衡:增加从数据库数量,分散读请求,避免单一服务器过载。
  • 提高并发能力:读写分离与从数据库扩展,结合优化措施,增强MySQL并发处理能力。

三、MySQL主从复制步骤

1、Master(主库)将用户对数据库更新的操作以二进制格式保存到BinLog日志文件中。

2、Slave(从库)从库通过手工执行change master to 语句连接主库,提供了连接的用户一切条件(user 、password、port、ip),并且让从库知道,二进制日志的起点位置(file名 position 号); start slave。

3、Slave的IO线程和主库的dump线程建立连接。

4、Slave的IO进程接收到信息后,将接收到的日志内容依次添加到Slave端的relay-log文件的最末端,并将读取到的Master端的bin-log的文件名和位置记录到master-info文件中,以便在下一次读取的时候能够清楚的告诉Master “我需要从某个binlog的哪个位置开始往后的日志内容,请发给我”。
5、Master的dump线程根据从库的请求,将本地binlog以events的方式发给从库IO线程。
6、SlaveIO线程接收binlog events,并存放到本地relay-log中,传送过来的信息,会记录到master.info中。
7、SlaveSQL线程应用relay-log,并且把应用过的记录到relay-log.info中,默认情况下,已经应用过的relay 会自动被清理purge。

四、注意事项

  • 版本兼容性:为了确保复制的顺利进行,主从节点的MySQL版本最好相同(或不应高于从节点)。
  • 延迟问题:由于复制是异步的,可能会出现主从数据不一致的情况,这是主从复制中的一个常见问题。
  • 不能代替备份:主从复制不能完全代替数据备份,因为主节点上的误操作也会同步到从节点。

五、部署实操

1、基于binlog的主从同步

Master配置
[root@Master ~]# yum install -y mysql-server#配置文件,注意://三台主从库的id必须不同
[root@Master ~]# vim /etc/my.cnf.d/mysql-server.cnf
server_id=1     //直接在后面添加 
[root@Master ~]# systemctl restart mysqld#授权用户
mysql> create user rep@'192.168.1.%' identified with mysql_native_password by '123456';
mysql> grant replication slave on *.* to rep@'192.168.1.%';
mysql> show master status;  //查看主服务器状态,日志用于从服务器同步,position是当前定位

Slave配置
#配置文件
[root@Slave1 ~]# vim /etc/my.cnf.d/mysql-server.cnf
server_id=2
[root@Slave1 ~]# systemctl restart mysqld[root@Slave3 ~]# vim /etc/my.cnf.d/mysql-server.cnf
server_id=3
[root@Slave3 ~]# systemctl restart mysqld#设置复制参数,两个Slave一样的配置
mysql> change master to-> master_host='192.168.1.11',-> master_user='rep',-> master_password='123456',-> master_log_file='binlog.000001',-> master_log_pos=1640,-> get_master_public_key=1;#启动复制进程,两个Slave都启动
mysql> start slave;

查看从库状态

 注意:我的Slave3机子直接克隆的master的,导致uuid一样结果出错了。

解决:进入/var/lib/mysql下查看auto.cnf,查看server-uuid对比一下三台机子各不同,和主库(master)冲突,在从库(salve3)上修改的。直接删除auto.cnf,重启mysql服务。会生成新的不一样的auto.cnf。

 验证:

主库(Master)建表,在从库(Slave1和3)上能看到主库创建的表db1,复制完成。

2、 基于gtid的主从同步配置

准备工作,停止从库(Slave1和3)的复制

确保从库的复制状态已经停止,可以通过运行show slave status \G命令来检查。

Slave1:

Slave3:

Master配置
#修改配置文件
[root@Master ~]# vim /etc/my.cnf.d/mysql-server.cnf
#在最后添加
gtid_mode=ON
enforce-gtid-consistency=ON#重启MySQL服务
[root@Master ~]# systemctl restart mysqld.service#重置二进制日志和GTID
mysql> reset master;#创建用户授予权限
mysql> create user rep@'192.168.1.%' identified with mysql_native_password by '123456';  //报错不影响因为之前创建过
mysql> grant replication slave on *.* to rep@'192.168.1.%';#重新加载授权表
mysql> flush privileges;
Slave配置
#Slave1和3相同配置#修改配置文件
[root@Slave1 ~]# vim /etc/my.cnf.d/mysql-server.cnf
gtid_mode=ON
enforce-gtid-consistency=ON#重启服务
[root@Slave1 ~]# systemctl restart mysqld.service#配置连接到主库
mysql> change replication source to-> source_host='192.168.1.11',-> source_port=3306,-> source_user='rep',-> source_password='123456',-> source_auto_position=1;mysql> start replica;

查看从库状态 

 

验证:

 主库(Master)建表,在从库(Slave1和3)上能看到主库创建的表student1,复制完成。

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

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

相关文章

网络编程-UDP套接字

文章目录 UDP/TCP协议简介两种协议的联系与区别Socket是什么 UDP的SocketAPIDatagramSocketDatagramPacket 使用UDP模拟通信服务器端客户端测试 完整测试代码 UDP/TCP协议简介 两种协议的联系与区别 TCP和UDP其实是传输层的两个协议的内容, 差别非常大, 对于我们的Java来说, …

nginx 配置代理,根据 不同的请求头进行转发至不同的代理

解决场景:下载发票的版式文件,第三方返回的是url链接地址,但是服务是部署在内网环境,无法访问互联网进行下载。此时需要进行走反向代理出去,如果按照已有套路,就是根据不同的访问前缀,跳转不同的…

Unity补充 -- 协程相关

1.协程。 协程并不是线程。线程是主线程之外的另一条 代码按照逻辑执行通道。协程则是在代码在按照逻辑执行的同时,是否需要执行额外的语句块。 2.协程的作用。 在update执行的时候,是按照帧来进行刷新的,也是按照帧执行代码的。但是又不想…

计算机毕业设计Python+卷积神经网络租房推荐系统 租房大屏可视化 租房爬虫 hadoop spark 58同城租房爬虫 房源推荐系统

温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 作者简介:Java领…

【Golang/nacos】nacos配置的增删查改,以及服务注册的golang实例及分析

前言 本文分析的实例来源于nacos在github上的开源仓库 nacos配置的增删查改 先具体来看一段代码,我将逐步分析每一段的作用 package mainimport ("fmt""time""github.com/nacos-group/nacos-sdk-go/clients""github.com/naco…

AIGC视频生成明星——Emu Video模型

大家好,这里是好评笔记,公主号:Goodnote,专栏文章私信限时Free。本文详细介绍Meta的视频生成模型Emu Video,作为Meta发布的第二款视频生成模型,在视频生成领域发挥关键作用。 🌺优质专栏回顾&am…

5、docker-compose和docker-harbor

安装部署docker-compose 自动编排工具,可以根据dockerfile自动化的部署docker容器。是yaml文件格式,注意缩进。 1、安装docker-compose 2、配置compose配置文件docker-compose.yml 3、运行docker-compose.yml -f:指定文件,up&…

Vue3 nginx 打包后遇到的问题

前端vite文件配置 export default defineConfig({plugins: [vue(),DefineOptions()],base:./,resolve:{alias:{:/src, //配置指向src目录components:/src/components,views:/src/views}},server:{// host:0.0.0.0,// port:7000,proxy:{/api:{target:xxx, // 目标服务器地址 &am…

云上贵州多彩宝荣获仓颉社区先锋应用奖 | 助力数字政务新突破

在信息技术应用创新的浪潮中,仓颉社区吸引了众多企业和开发者的积极参与,已有多个应用成功落地,展现出蓬勃的创新活力。仓颉编程语言精心遴选了在社区建设、应用创新、开源共建、技术布道等方面做出突出贡献的优秀项目应用,并颁发…

强推未发表!3D图!Transformer-LSTM+NSGAII工艺参数优化、工程设计优化!

目录 效果一览基本介绍程序设计参考资料 效果一览 基本介绍 1.Transformer-LSTMNSGAII多目标优化算法,工艺参数优化、工程设计优化!(Matlab完整源码和数据) Transformer-LSTM模型的架构:输入层:多个变量作…

Oracle 可观测最佳实践

简介 Oracle 数据库是一种广泛使用的商业关系数据库管理系统(RDBMS),由甲骨文公司(Oracle Corporation)开发。它支持 SQL 语言,能够存储和管理大量数据,并提供高级数据管理功能,如数…

使用docker部署mysql和tomcat服务器发现的问题整理

1、本地访问tomcat时访问不到 [rootlocalhost ~]# systemctl stop firewalld [rootlocalhost ~]# docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS …

【JavaEE】Spring(1)

一、什么是Spring和SpringBoot Spring是Java应用程序的开发框架,其目的就是为了简化Java开发;SpringBoot是在spring框架的基础上构建的一个快速开发框架,其作用是进一步简化Spring程序开发 二、SpringBoot项目 2.1 创建项目 1. 设置jdk版本…

数据库管理-第285期 Oracle 23ai:深入浅出向量索引(20250117)

数据库管理285期 20245-01-17 数据库管理-第285期 Oracle 23ai:深入浅出向量索引(20250117)1 HNSW事务支持解读 2 IVF分区支持解读 3 混合向量索引何时选择混合向量索引为何选择混合向量索引 总结 数据库管理-第285期 Oracle 23ai&#xff1a…

LabVIEW电源纹波补偿

在电子设备的电源管理中,电源纹波的存在可能会对设备的稳定性和性能产生负面影响。以某精密电子仪器的电源纹波补偿为例,详细阐述如何运用 LabVIEW 编写程序进行电源纹波补偿。将从电源纹波特点、测量采样、滤波、反馈控制等多个方面展开介绍。 ​ 电源…

Mousetrap:打造高效键盘快捷键体验的JavaScript库

Mousetrap:打造高效键盘快捷键体验的JavaScript库 前言 在当今快节奏的数字世界中,用户对Web应用的交互效率提出了更高的要求。 键盘快捷键作为一种提升操作便捷性和速度的有效手段,被广泛应用于各种应用中。 然而,实现一套稳定…

网络安全 | 什么是正向代理和反向代理?

关注:CodingTechWork 引言 在现代网络架构中,代理服务器扮演着重要的角色。它们在客户端和服务器之间充当中介,帮助管理、保护和优化数据流。根据代理的工作方向和用途,代理服务器可分为正向代理和反向代理。本文将深入探讨这两种…

STM32 学习笔记【补充】(十)硬件I2C读写MPU6050

该系列为笔者在学习STM32过程(主线是江科大的视频)中的记录与发散思考。 初学难免有所纰漏、错误,还望大家不吝指正,感谢~ 一、I2C 外设简介 I2C(Inter-Integrated Circuit)是一种多主多从的串行通信协议…

自定义提示确认弹窗-vue

最初可运行代码 弹窗组件代码&#xff1a; &#xff08;后来发现以下代码可运行&#xff0c;但打包 typescript 类型检查出错&#xff0c;可打包的代码在文末&#xff09; <template><div v-if"isVisible" class"dialog"><div class&quo…

TP4056锂电池充放电芯片教程文章详解·内置驱动电路资源!!!

目录 TP4056工作原理 TP4056引脚详解 TP4056驱动电路图 锂电池充放电板子绘制 编写不易&#xff0c;仅供学习&#xff0c;感谢理解。 TP4056工作原理 TP4056是专门为单节锂电池或锂聚合物电池设计的线性充电器&#xff0c;充电电流可以用外部电阻设定&#xff0c;最大充电…