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

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

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

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

MySQL主从同步是基于Bin Log实现的,而Bin Log记录的是原始SQL语句。

当主库数据发生变更时,写入本地Bin Log文件

  • 从库IO线程发起dump主库Bin Log文件的请求
  • 主库IO线程推送Bin Log文件到从库中
  • 从库IO线程把Bin Log内容写入本地的Relay Log文件中
  • 从库SQL线程读取Relay Log文件内容
  • 从库SQL线程重新执行一遍SQL语句

首先保持实验环境干净(关闭防火墙 selinux,克隆的机器是没有下载过MySQL的)

准备克隆了三台机子ip分别为192.168.1.130     192.168.1.133       192.168.1.134

同时下载

 yum install mysql-server -y

 选取ip为192.168.1.130作为主布机子

首先主库配置

 vim /etc/my.cnf
  grant replication slave on *.* to  rep@'192.168.1.%';

启动

 systemctl enable --now mysqld.service

在主库里授权一个用户

 create user rep@'192.168.1.%' identified with mysql_native_password by '123456';

查看binlog文件名(要用到)

 show master status;

接着配置另外两个从库

vim /etc/my.cnf

查看配置内容 


#
# This group is read both both by the client and the server
# use it for options that affect everything
#
[client-server]#
# This group is read by the server
#
[mysqld]
server_id=133#
# include all files from the config directory
#
!includedir /etc/my.cnf.d

#
# This group is read both both by the client and the server
# use it for options that affect everything
#
[client-server]#
# This group is read by the server
#
[mysqld]
server_id=134
#
# include all files from the config directory
#
!includedir /etc/my.cnf.d

 

接着启动

 systemctl enable --now mysqld.service
设置

change master to  master_host='192.168.1.130', master_user='rep', master_log_file='binlog.000001', master_log_pos=678;

查看状态

show slave status \G
*************************** 1. row ***************************Slave_IO_State: Waiting for source to send eventMaster_Host: 192.168.1.130Master_User: repMaster_Port: 3306Connect_Retry: 60Master_Log_File: binlog.000001Read_Master_Log_Pos: 678Relay_Log_File: localhost-relay-bin.000002Relay_Log_Pos: 323Relay_Master_Log_File: binlog.000001Slave_IO_Running: YesSlave_SQL_Running: YesReplicate_Do_DB:Replicate_Ignore_DB:Replicate_Do_Table:Replicate_Ignore_Table:Replicate_Wild_Do_Table:Replicate_Wild_Ignore_Table:Last_Errno: 0Last_Error:Skip_Counter: 0Exec_Master_Log_Pos: 678Relay_Log_Space: 537Until_Condition: NoneUntil_Log_File:Until_Log_Pos: 0Master_SSL_Allowed: NoMaster_SSL_CA_File:Master_SSL_CA_Path:Master_SSL_Cert:Master_SSL_Cipher:Master_SSL_Key:Seconds_Behind_Master: 0
Master_SSL_Verify_Server_Cert: NoLast_IO_Errno: 0Last_IO_Error:Last_SQL_Errno: 0Last_SQL_Error:Replicate_Ignore_Server_Ids:Master_Server_Id: 130Master_UUID: 3928f497-d672-11ef-8e26-000c294d2ac6Master_Info_File: mysql.slave_master_infoSQL_Delay: 0SQL_Remaining_Delay: NULLSlave_SQL_Running_State: Replica has read all relay log; waiting for more updatesMaster_Retry_Count: 86400Master_Bind:Last_IO_Error_Timestamp:Last_SQL_Error_Timestamp:Master_SSL_Crl:Master_SSL_Crlpath:Retrieved_Gtid_Set:Executed_Gtid_Set:Auto_Position: 0Replicate_Rewrite_DB:Channel_Name:Master_TLS_Version:Master_public_key_path:Get_master_public_key: 0Network_Namespace:
1 row in set, 1 warning (0.00 sec)

连接成功


进行测试

在主库创建库

 create database jj1;

创建表

create table jj(id int);

插入数据

insert into jj values(1),(2),(4);

连个从库中查看

 

http://www.lryc.cn/news/523653.html

相关文章:

  • Android 右键后无Java class创建
  • 【从零开始入门unity游戏开发之——C#篇46】C#补充知识点——命名参数和可选参数
  • 哈尔滨有双线服务器租用吗?
  • JVM 面试八股文
  • STM32 FreeRTOS内存管理简介
  • 【云岚到家】-day02-客户管理-认证授权
  • 【达梦数据库】两地三中心环境总结
  • 【springboot 集成 mybatis-plus】
  • 深入浅出 Go语言并发安全字典 sync.Map:原理、使用与优化
  • 【Go】Go数据类型详解—指针
  • 道格拉斯-普克算法(DP)轮廓点精简(Python)
  • WPF如何跨线程更新界面
  • Ubuntu 24.04 LTS 服务器折腾集
  • ROS机器人学习和研究的势-道-术-转型和变革的长期主义习惯
  • Linux 管道操作
  • 【Python】深入探讨Python中的单例模式:元类与装饰器实现方式分析与代码示例
  • imbinarize函数用法详解与示例
  • 【NextJS】PostgreSQL 遇上 Prisma ORM
  • ASP.NET Core - 配置系统之配置提供程序
  • 【LeetCode: 215. 数组中的第K个最大元素 + 快速选择排序】
  • 【Flink系列】10. Flink SQL
  • JavaScript网页设计案例-JavaScript实现数据脱敏的几种解决方式
  • 第12篇:从入门到精通:掌握python高级函数与装饰器
  • 审计文件标识作为水印打印在pdf页面边角
  • leetcode416.分割等和子集
  • 使用docker-compose安装ELK(elasticsearch,logstash,kibana)并简单使用
  • 深度学习中超参数
  • [JavaScript] 运算符详解
  • Hooks 使用规则
  • Ubuntu 24.04 LTS 安装 Docker Desktop