Mysql架构篇--Mysql(M-S) 主从同步

news2024/11/23 22:34:41

文章目录

  • 前言:
  • 一、主从同步是什么?
  • 二、主从同步实现:
    • 1.准备工作:
    • 2.开启主从复制:
      • 2.1 mysql 服务端配置文件修改:
      • 2.2 mysql master 节点用户创建:
      • 2.3 mysql slave 节点开启数据复制:
    • 3.新加入slave的节点如何开启主从复制:
      • 3.1 slave 从节点设置节点id:
      • 3.2 在slave节点新建数据库:
      • 3.3 在slave节点还原数据库:
      • 3.4 开启主从同步:
  • 三、主从同步原理:
    • 1.binlog 日志:
    • 2.binlog 日志记录:
      • 2.1 日志记录格式:
      • 2.2 三种记录格式的区别:
      • 2.3 binlog 主从复制流程:
  • 四、总结:


前言:


一、主从同步是什么?

MySQL主从同步(MySQL Replication)是MySQL服务器的一个常用特性,它能够将MySQL服务器数据自动同步到其他MySQL服务器上,从而实现数据备份和负载均衡的功能。在实际应用中,MySQL主从同步可以用于实现高可用、灾备转移、读写分离等。

二、主从同步实现:

1.准备工作:

  • 首先需要有大于等于2个的mysql 实例,一个作为master,其它的作为slave;

2.开启主从复制:

2.1 mysql 服务端配置文件修改:

  • 作为master 的节点需要在配置文件中开启binlog,代码如下:
# log-bin 开启binlog 日志,master-log 为记录日志的文件前准名字
log-bin=master-log
# master 的服务节点唯一id
server-id=1
# 可选参数配置哪些数据库是需要被同步的
binlog-do-db=rep
binlog-do-db=user
# 可选参数配置哪些数据库是不需要被同步的
binlog-ignore-db=mysql
binlog-ignore-db=test
# 此处演示使用配置使用旧的密码方式进行数据传输,因为mysql8 默认已经按照ssl 进行加密传输了
default_authentication_plugin=mysql_native_password
  • 作为slave 的节点,配置节点id,代码如下:
server-id=2
default_authentication_plugin=mysql_native_password

配置完成记得重启master和slave mysql 的服务

2.2 mysql master 节点用户创建:

-- 创建slave_rep 用户,密码是123456,可以被连接的ip 段是192.168.75
CREATE USER 'slave_rep'@'192.168.75.%' IDENTIFIED BY '123456';  
-- 对创建的用户赋予复制权限
GRANT REPLICATION SLAVE ON *.* TO 'slave_rep'@'192.168.75.%';

2.3 mysql slave 节点开启数据复制:

  • 在master 节点查看状态:
show master status;

在这里插入图片描述

  • slave 节点设置数据同步节点:
change master to master_host='192.168.75.128',master_user='slave_rep',master_password='123456', master_port=3306,
master_log_file='master-log.000002', master_log_pos=340

其中,master_ip_address是主服务器的IP地址,username和password是用于同步的用户名和密码,master-log.000002和340是主服务器上二进制日志文件的名称和位置,需要根据实际情况修改。

  • slave 启动主从同步:
start slave;
  • slave 查看主从同步状态:
show slave status ;

在这里插入图片描述

如果发现 Slave_IO_Running和Slave_SQL_Running都显示为Yes,说明配置MySQL主从成功。 但凡有一个不是Yes,是什么Connecting,No之类的,说明没配置成功。


  • 配置成功后,在master 创建允许同步的数据库,修改数据都会被同步到slave 节点;

3.新加入slave的节点如何开启主从复制:

对于已经存在的主从同步 节点,现在如果要在增加一个slave 从节点;

3.1 slave 从节点设置节点id:

server-id=3
default_authentication_plugin=mysql_native_password

配置完成记得重启 mysql 服务

3.2 在slave节点新建数据库:

注意和master节点中要同步的数据库名称保持一致

3.3 在slave节点还原数据库:

将master 下要同步得数据数据全量备份后,还原到slave 节点的对应的数据库中

3.4 开启主从同步:

步骤同 2.3 mysql slave 节点开启数据复制:相同

三、主从同步原理:

1.binlog 日志:

binlog 记录了对于数据操作的ddl 和dml 语句,这些语句是可以直接执行;

2.binlog 日志记录:

2.1 日志记录格式:

在 MySQL 8 中,binlog-format 参数已经被弃用,被 default_binlog_format 参数所取代。在 MySQL 8 中,如果未显式指定二进制日志的格式,default_binlog_format 参数将控制 MySQL 记录二进制日志的格式。
default_binlog_format 参数有以下可选值:

  • ROW:记录行级别别更改。在 MySQL 8 中,这是默认的二进制日志格式。
  • STATEMENT:记录每个需要记录的 SQL 语句。
  • MIXED:混合使用 ROW 和 STATEMENT 两种格式,选择使用哪一种格式取决于具体的 SQL 语句。

2.2 三种记录格式的区别:

  • 基于语句级别的复制(statement-based replication,SBR):这种方式是最初的复制方式,将主服务器上执行的修改数据的SQL语句记录到二进制日志文件中,然后将这些SQL语句发送到从服务器,从服务器再执行这些SQL语句完成数据同步。此方法的优点是复制过程中只传输SQL语句,网络传输量小;缺点是可能会有一些数据不一致的情况出现,例如在主服务器上执行的一些非确定性函数(如 uuid,date 等),或者在从服务器上存在不存在的表或数据行。

  • 基于行级别的复制(row-based replication,RBR):这种方式是在SBR基础上发展而来,它直接将修改数据的二进制数据发送到从服务器,然后在从服务器上执行相同的二进制数据完成数据同步。此方法的优点是能够保证数据一致性,能够处理一些复杂的SQL语句;缺点是对于大量的操作,可能会产生大数据量传输。

  • 基于混合复制(mixed-based replication,MBR):它是综合了SBR和RBR两种方式的优点,即在不同的情况下选择不同的方式。例如,对于不涉及大量数据变更的SQL语句使用语句级别的方式,对于大量数据变更的SQL语句使用行级别方式。该方式比较灵活,能够平衡性能和数据一致性的关系。

需要注意的是,建议在配置主从复制时明确指定二进制日志的格式,以避免误解和不必要的问题。在一致性设置和数据同步方面,明确定义二进制日志格式可以提高主从数据同步的效率和稳定性。

2.3 binlog 主从复制流程:

在这里插入图片描述

  • slave 节点先发送请求给到主节点,主节点在有数据变化时就可以推送数据给到 从节点;
  • 从节点接到数据后先写到log 中,然后在由其它的线程对log 数据进行解析然后入库;

四、总结:

Mysql 主从同步主要是通过master 节点开启binlog 日志,然后slave 节点消费binlog 日志的数据,将数据更新到各自的库中。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

突破传统设计灵感,虚拟展厅设计方案

导语: 随着科技的不断发展,虚拟展厅设计方案正成为现代设计行业的新宠。这种创新的设计形式不仅突破了传统设计的局限,还为传统设计公司带来了诸多优势和特点,从而提高了设计产量和创意灵感。 在这篇软文中,我们将深入…

雅迪、爱玛谁是“新宠”?

电动两轮车下半场,谁是“新王”? 6月15日,爱玛科技有限公司(下称“爱玛”,603529.SH)迎来了上市两周年。 作为电动两轮车的头部玩家,雅迪控股有限公司(下称“雅迪”,01585.HK&…

HJ101 输入整型数组和排序标识,对其元素

描述 输入整型数组和排序标识,对其元素按照升序或降序进行排序 数据范围: 1≤n≤1000 1≤n≤1000 ,元素大小满足 0≤val≤100000 0≤val≤100000 输入描述: 第一行输入数组元素个数 第二行输入待排序的数组,每个…

python实现九九乘法表

九九乘法表 i 1 while i < 9:j 1while j < i:print(f{j}*{i}{i * j}, end\t)j 1print()i 1结果&#xff1a;

window10 查看本机TCP协议进程

1. netstat 是一个常见的网络工具&#xff0c;用于显示网络连接状态、路由表、接口统计信息等网络相关的信息&#xff0c;可以帮助诊断和解决网络问题。 其中&#xff0c;各参数的含义为&#xff1a; -a&#xff1a;显示所有的网络连接和监听端口。 -e&#xff1a;显示以太网…

CDH yarn Fair 队列最大资源使用限制,任务无法提交

一、问题背景描述 1.任务提交异常日志 2023-06-29 15:48:20,877 INFO org.apache.flink.yarn.YarnClusterDescriptor [] - Deployment took more than 60 seconds. Please check if the requested resources are available in the YARN cluster 2023-06-29 15:48:21,129 IN…

1-什么是NumPy?【视频版】

目录 问题解答观看视频 问题 解答 NumPy&#xff0c;全称Numerical Python&#xff0c;是一个开源的Python科学计算库。它为Python提供了大量的数学库&#xff0c;包括&#xff1a; 强大的N维数组对象成熟的广播功能集成C/C和Fortran代码的工具有用的线性代数、傅里叶变换和随…

第一个spring程序

我们今天写第一个spring程序 我们采用maven形式创建工程。 我们首先在pom.xml中加入引用。 <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0"xmlns:xsi"http://www.w3.org/2001/XMLSch…

(6)蜂鸣器(又称音调报警)

文章目录 6.1 使用有源蜂鸣器而不是无源蜂鸣器 6.2 安装蜂鸣器 6.3 使蜂鸣器安静 蜂鸣器&#xff08;或音调报警器&#xff09;可用于以声音指示飞行器的状态变化。根据电路板的能力&#xff0c;它可以是一个有源设备&#xff08;只需要施加电压来产生一个单一频率的音调&am…

给定一组数据样本,计算:【样本的平均值】, 【样本的标准差】, 【样本的变异系数】,【样本的标准误差】

一、指标含义 样本的平均值&#xff1a;指样本中所有数据的总和除以样本大小&#xff0c;是样本的中心趋势的度量。平均值常用于描述数据的集中程度&#xff0c;具有良好的代表性和易于计算的优点。 样本的标准差&#xff1a;指样本中每个数据与平均值的偏差的平方和的平均值的…

openssl版本升级与降级

openssl版本升级与降级 flyfish 环境 Ubuntu 22.04 1.1.1升级3.1.1 查看openssl版本 openssl versionOpenSSL 1.1.1t 7 Feb 2023https://www.openssl.org/source/ 编译和安装 ./config --prefix/usr/local/openssl311 make -j8 make install进入/usr/local/openssl311/l…

JavaWeb两大组件FILTERLISTENER

一.Filter&#xff1a;过滤器 是什么&#xff1a; 当访问服务器的资源时&#xff0c;过滤器可以将请求拦截下来&#xff0c;完成一些特殊的功能。 作用&#xff1a; 一般用于完成通用的操作。如&#xff1a;登录验证、统一编码处理、敏感字符过滤… 具体流程&#xff1a; 原始…

本地部署 FastChat

本地部署 FastChat 1. 什么是 FastChat2. Github 地址3. 安装 Miniconda34. 创建虚拟环境5. 安装 FastChat6. 使用命令行进行推理7. 使用 Web GUI 服务进行推理8. 使用 Lora 进行训练9. 其他 文章还在创作中。。。 1. 什么是 FastChat FastChat 是一个开放平台&#xff0c;用…

同步和异步、同步复位、异步复位、同步释放(Verilog、Verdi、DC综合)

文章目录 1.同步和异步2. 同步复位、异步复位、同步释放2.1 同步复位2.1.1 Verilog code2.1.2 Verdi waveform2.1.3 DC Synthesis 2.2 异步复位2.2.1 Verilog code 2.3 同步释放&#xff08;异步信号和CLK信号存在时序检查、Recover time&Removel time&#xff09;2.4 异步…

初识Docker:(7)查询Docker镜像的DockerFile

1. 前言 我们知道了根据dockerfile来制作镜像&#xff0c;如果给你一个现成的镜像&#xff0c;你能逆向查看出dockerfile吗&#xff1f; 否则&#xff0c;你怎么知道该镜像使用的是CMD还是ENTRYPOINT &#xff0c;使用的是shell格式还是CMD格式&#xff1f;由于格式决定了doc…

numpy反向传播算法示例

numpy反向传播算法示例 数据 通过 scikit-learn 库提供的便捷工具生成 2000 个线性不可分的 2 分类数据集 按着7: 3比例切分训练集和测试集 backpropagation.py #!/usr/bin/env python # encoding: utf-8 """ desc: 反向传播算法 """impor…

leetcode电话号码的字母组合C++实现教程

链接: 电话号码的字母组合 class Solution {char* PNumStr[10] {"","","abc","def","ghi","jkl","mno","pqrs","tuv","wxyz"};//因为每次都需要执行拷贝&#xff0c;…

了解嵌入式系统的不同细分领域:探索嵌入式BSP的定义

嵌入式BSP是指嵌入式系统中的板级支持软件。它是针对特定硬件平台的软件包&#xff0c;提供了操作系统和硬件之间的抽象层&#xff0c;以便开发人员可以更方便地使用硬件功能和编写应用程序。 嵌入式BSP的功能包括&#xff1a; 设备初始化和配置&#xff1a;BSP负责初始化硬件设…

学做测试平台开发-Vuetify 框架

Vuetify 是 Vue 的语义化组件框架&#xff0c;旨在提供整洁、语义化和可重用的组件&#xff0c;使得构建应用程序更方便。 Vuetify 核心是为了提供各种可重复使用的&#xff0c;即插即用并且适合各种项目规格的组件。 Vue 的语义成分。利用 Vue 的功能组件&#xff0c;所有基…

kubectl port-forward 指令

背景&#xff1a; 当K8s的Service类型为ClusterIP&#xff0c;不是NodePort&#xff0c;就只能集群内部访问&#xff0c;想在外部访问可以执行kubectl port-forward&#xff0c;将一个或多个本地端口转发到 Pod或者Service 作用&#xff1a; 做转发&#xff0c;将本地端口转发…