MySQL 主从复制

一、概念及应用场景

二、主从复制原理

三、MySQL主从复制的工作过程

四、主从复制实验

 

一、概念及应用场景:
在企业应用中,成熟的业务通常数据量都比较大
单台MySQL在安全性、 高可用性和高并发方面都无法满足实际的需求
配置多台主从数据库服务器以实现读写分离

二、主从复制原理
MySQL主从复制原理
MySQL的复制类型
基于语句的复制(STATEMENT, MySQL默认类型)
基于行的复制(ROW)
混合类型的复制(MIXED)

三、MySQL主从复制的工作过程;
⭐⭐ 两日志、三线程
(1)在每个事务更新数据完成之前,Master 在二进制日志(Binary log)记录这些改变。写入二进制日志完成后,Master 通知存储引擎提交事务。
(2)Slave 将 Master 的复制到其中继日志(Relay log)。首先slave 开始一个工作线程(I/O),I/O线程在 Master 上打开一个普通的连接,然后开始 Binlog dump process。Binlog dump process 从 Master 的二进制日志中读取事件,如果已经跟上 Master,它会睡眠并等待 Master 产生新的事件,I/O线程将这些事件写入中继日志。
(3)SQL slave thread(SQL从线程)处理该过程的最后一步,SQL线程从中继日志读取事件,并重放其中的事件而更新 Slave 数据,使其与 Master 中的数据一致,只要该线程与 I/O 线程保持一致,中继日志通常会位于 OS 缓存中,所以中继日志的开销很小。
复制过程有一个很重要的限制,即复制在 Slave 上是串行化的,也就是说 Master 上的并行更新操作不能在 Slave 上并行操作。

四、主从复制实验
虚拟机:
mysql-master 192.168.10.17
mysql-slave1 192.168.10.20
mysql-slave2 192.168.10.21

三台虚拟机都事先安装好了MySQL 下面对主从机器进行配置

1、配置主从同步
① master服务器修改配置文件
# vim /etc/my.cnf
#在mysqld模块下修改一下内容
#开启二进制日志文件(之后生成的日志名为master-bin)
log_bin=master-bin
#开启从服务器日志同步
log_slave=updates=true
#主服务器id为1(不可重复)
server-id = 1

 

 service mysqld restart  重启MySQL

②进去MySQL数据库配置规则

 

 查看master数据库状态

 

 

mysql>
#以上可见产生了master-bin.000001日志文件,定位为603
#从服务器需要定位到此处进行复制

 

2、从服务器配置

# vim  /etc/my.cnf
#开启二进制日志文件
log-bin=master-bin
#设置server id为2,slave2 为3
server-id = 2 3
#从主服务器上同步日志文件记录到本地
relay-log=relay-log-bin
#定义relay-log的位置和名称(index索引)
relay-log-index=slave-relay-bin.index

 

 开启从服务器功能

 

 查看从服务器状态

 

 

测试 在主服务器上创建一个数据库

 

posted @   零六零一  阅读(37)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
点击右上角即可分享
微信分享提示