当前位置: 首页 > news >正文

简述mysql主从复制原理及工作过程,配置一主两从并验证

MySQL内建的复制功能是构建大型,高性能应用程序的基础,通过将MySQL的某一台主机(master)的数据复制到其他主机(slaves)上,并重新执行一遍来执行,复制过程中一台服务器充当主服务器,而其他一个或多个其他服务器充当从服务器。

主从复制原理

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

1、Master将数据变化记录到二进制日志中;
2、Slave将Master的二进制日志拷贝到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

配置一主两从验证

环境准备

准备三台Linux机器,ip地址分别为192.168.106.11,192.168.106.12,192.168.106.13

其中192.168.106.11设置为master,另外两台设置为slave

三台主机均需安装mysql。

注意:如果是其中一台主机安装了mysql进行克隆,那么三台主机mysql的uuid会重复,会导致后续配置不成功

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

主库配置:

在配置文件里添加server_id

[root@openEuler-1 ~]# vim /etc/my.cnf


[root@openEuler-1 ~]# systemctl restart mysqld

创建并授权用户访问

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

mysql> grant replication slave on *.* to rep@'192.168.106.%';

查看

mysql> show master status;
+---------------+----------+--------------+------------------+-------------------+
| File          | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+---------------+----------+--------------+------------------+-------------------+
| binlog.000002 |      682 |              |                  |                   |
+---------------+----------+--------------+------------------+-------------------+

从库配置:

在配置文件里添加server_id

[root@openEuler-2 ~]# vim /etc/my.cnf

[root@openEuler-2 ~]# systemctl restart mysqld.service
 

[root@openEuler-3 ~]# vim /etc/my.cnf

[root@openEuler-3 ~]# systemctl restart mysqld.service
 

分别在两台主机配置

mysql> change master to
    -> master_host='192.168.106.11',
    -> master_user='rep',
    -> master_password='123456',
    -> master_log_file='binlog.000002',
    -> master_log_pos=682;
Query OK, 0 rows affected, 8 warnings (0.01 sec)
 

启动

mysql> start slave;

查看从库是否配置成功:

Slave_IO_Running: Yes
Slave_SQL_Running: Yes

两项均为Yes表示配置成功

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

开启gtid

对三台主机分别进入配置文件添加

server_id=主机号

gtid_mode=ON
enforce-gtid-consistency=ON

[root@openEuler-1 ~]# systemctl restart mysqld     #重启服务

主库配置:

创建并授权用户访问

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

mysql> grant replication slave on *.* to rep@'192.168.106.%';

#重新加载授权表

mysql> flush privileges;

从库配置:

分别在两台主机配置

mysql> change master to
    -> master_host='192.168.106.11',
    -> master_user='rep',
    -> master_password='123456';
 

启动并查看从库状态

均为yes表示成功

验证

在主库创建数据库,在从库上查看是否同步创建成功。

从库同步创建db1成功,主从同步配置完成。

相关文章:

  • 封装红黑树实现map和set
  • 缺陷检测之图片标注工具--labme
  • 【python】You-Get
  • 使用京东AsyncTool实现异步编排
  • 4、IP查找工具-Angry IP Scanner
  • 用deepseek学大模型03-数学基础 概率论 条件概率 全概率公式 贝叶斯定理
  • 周雨彤:用角色与生活,诠释审美的艺术
  • 1、cadence从零开始让一个VCO起振——基本设置
  • MATLAB算法实战应用案例精讲-【数模应用】空间插值(附MATLAB、R语言和python代码实现)
  • JavaScript设计模式 -- 迭代器模式
  • 【信息学奥赛一本通 C++题解】1285:最大上升子序列和
  • 同花顺数据爬取并生成K线
  • 【SpringBoot苍穹外卖】debugDay0 打开前端页面
  • sed命令详细教程
  • 力扣-二叉树-513 找二叉树左下角的值
  • FFmpeg 全面知识大纲梳理
  • 【LLM】浙大: 大模型基础 第一版 第一章:语言模型基础
  • CMake configure_file
  • Mycat中间件
  • 实现能源高效利用、优化能源结构、降低碳排放的智慧能源开源了
  • 中国强镇密码丨洪泽湖畔的蒋坝,如何打破古镇刻板印象
  • 78家公募年度业绩比拼:23家营收净利双升,十强座次微调
  • 俄罗斯纪念卫国战争胜利80周年阅兵式首次彩排在莫斯科举行
  • 中国人保不再设监事会,国寿集团未再设置监事长职务
  • 建发股份:将于5月6日召开股东大会,审议提名林茂等为公司新一届董事等议案
  • 【社论】优化限购限行,激发汽车消费潜能