Mysql 主从复制原理及其工作过程,配置一主两从实验

devtools/2025/1/20 17:55:45/
主从原理:MySQL 主从同步是一种数据库复制技术,它通过将主服务器上的数据更改复制到一个或多个从服务器,实现数据的自动同步。
主从同步的核心原理是将主服务器上的二进制日志复制到从服务器,并在从服务器上执行这些日志中的操作。

主要基于MySQL二进制日志 主要包括三个线程(2个I/O线程,1个SQL线程)

1569852111092

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

本实验需要用到三台虚拟机

首先在三台虚拟机上分别:yum install -y mysql-server

方法一:基于binlog的主从同步

主库配置(虚拟机1):

vim /etc/my.cnf 写入

server_id=11

启动服务:systemctl  start mysql
 

设置开机自启:systemctl  enable  mysqld --now
 

mysql> create user rep@'192.168.234.%' identified with mysql_native_password by '123456';

#identified with mysql_native_password 表示使用 mysql_native_password 认证插件来验证用户的身份。

mysql> grant replication slave on *.* to rep@'192.168.234.%'; #赋予权限

注意:show master status 是设置和维护 MySQL 主从复制的重要命令,它提供了从服务器所需的二进制日志的关键信息,帮助实现主从服务器之间的数据同步。

从库配置(虚拟机2):
vim /etc/my.cnf写入

启动服务:systemctl  start mysql
 

设置开机自启:systemctl  enable  mysqld --now

mysql> start slave;启动从服务器


虚拟机2主从配置成功!

从库配置(虚拟机3):
vim /etc/my.cnf写入

启动服务:systemctl  start mysql
 

设置开机自启:systemctl  enable  mysqld --now

跟上面一样的配置

mysql> start slave;启动从服务器

虚拟机3主从配置成功!

验证:

在主服务器(虚拟机1)上创建一个新的数据库,新的数据表

mysql> create database db1;

mysql> use db1;
mysql> create table t1(id int,name varchar(10));

mysql> insert into t1 values(1,'zhangsan'), (2,'lisi');

在从服务器(虚拟机2,虚拟机3)上查看是否同步

验证成功!

方法二:基于gtid的主从同步配置

主服务器(虚拟机1):

vim /etc/my.cnf写入

systemctl  restart  mysqld.service

从服务器·(虚拟机2):

systemctl  restart  mysqld.service

mysql> stop slave;  #停止slave服务·

mysql> start slave;
 

主从配置成功!


 


从服务器·(虚拟机3):

systemctl  restart  mysqld.service

mysql> stop slave;

mysql> start slave;

主从配置成功!

验证:

在主服务器(虚拟机1)上创建一个新的数据库,新的数据表

mysql> create database db2;

mysql> use db2;mysql> create table t2(id int,name varchar(20),year int);

mysql> insert into t2 values(1,'zhangsan',16), (2,'lisi',17),(3,'wangwu',18);

在从服务器(虚拟机2,虚拟机3)上查看是否同步

验证成功!


http://www.ppmy.cn/devtools/152151.html

相关文章

管理口令安全和资源(一)

学习目标 Manage passwords using profiles: 使用配置文件(profiles)来管理密码。这意味着你应该能够设置和修改密码策略,比如密码的复杂性、有效期、尝试次数限制等。在Oracle数据库中,配置文件是一组可以应用于所有用户的预定义…

力扣203题(2)——移除链表元素

题目及递归法在我的这一篇博客,各位小伙伴可以移步这里q查看: 力扣203题—— 移除链表元素-CSDN博客 在原有链表上删除: 纠错:里面有个注释写顺了,这是定义链表指针去遍历一遍链表类似于遍历数组 共勉!

手机上做笔记的APP工具?有哪些好用的记笔记APP

在数字化时代,手机笔记软件成为了我们记录生活、学习和工作的得力助手。今天,就让我们一起探索几款热门且实用的手机笔记APP,看看它们各自的魅力所在。 Flowus Flowus 是一款功能强大的云笔记软件,被誉为汉化版的 Notion&#x…

ElasticSearch是什么?基于Lucene的,那么为什么不是直接使用Lucene呢?

目录 ElasticSearch概述 Lucene与ElasticSearch的关系 为什么不直接使用Lucene 一个ES和数据库的对比 ElasticSearch是一个分布式的、开源的、实时的搜索和分析引擎,它是基于Apache Lucene构建的,旨在提供快速、可扩展、高性能的搜索解决方案。以下是对ElasticSearch及其…

2025年01月17日Github流行趋势

项目名称:MiniCPM-o 项目地址url:https://github.com/OpenBMB/MiniCPM-o 项目语言:Python 历史star数:14181 今日star数:371 项目维护者:yiranyyu, iceflame89, yaoyuanTHU, LDLINGLINGLING, tc-mb 项目简介…

今天你学C++了吗?——C++中的STL

♥♥♥~~~~~~欢迎光临知星小度博客空间~~~~~~♥♥♥ ♥♥♥零星地变得优秀~也能拼凑出星河~♥♥♥ ♥♥♥我们一起努力成为更好的自己~♥♥♥ ♥♥♥如果这一篇博客对你有帮助~别忘了点赞分享哦~♥♥♥ ♥♥♥如果有什么问题可以评论区留言或者私信我哦~♥♥♥ ✨✨✨✨✨✨ 个…

类和对象(3)——继承:extends关键字、super关键字、protected关键字、final关键字

目录 1. 继承 1.1 继承的概念 1.2 extends关键字 1.3 继承方式 2.继承类的成员访问 2.1 成员变量 2.2 成员方法 3. super关键字 4. super、this 与 构造方法 4.1 子类中的super()调用 4.1.1 父类只有无参构造方法 4.1.2 父类有带参构造方法时 4.2 super 与 this 的…

电路研究9——GPRS用的AT命令手册

因为用到了GPRS模块,是合宙的所以就用到了他给的AT指令了,这个是在合宙网上扒下来的手册,便于到时使用: 补:本来再模块里面说的是AirM2M 无线模块AT命令手册,但是我查到了的是网上百度2024年6月的版本&…