MySQL_主从复制读写分离
主从复制
概述
-
主从复制是指将主数据库的DDL和DML操作通过二进制日志传到从库服务器中,然后在从库上对这些日志重新执行(也叫重做),从而使得从库和主库的数据保持同步。
-
MySQL支持一台主库同时向多台从库进行复制,从库同时也可以作为其他从服务器的主库,实现链状复制。
-
MySQL复制的有点主要包含以下三个方面:
-
主库出现问题,可以快速切换到从库提供服务。
-
实现读写分离,降低主库的访问压力。
-
可以在从库中执行备份,以避免备份期间影响主库服务。
-
原理

-
从上图来看,复制分为三步:
-
Master主库在事务提交时,会把数据变更记录在二进制日志文件Binlog中。
-
从库读取主库的二进制日志文件Binlog,写入到从库中继日志Relay Log。
-
slave重做中继日志中的事件,将改变反映它自己的数据。
-
搭建
-
服务器准备
-
开放指定的3306端口号:
-
firewail-cmd --zone=public --add-port=3306/tcp -permanent
-
firewail-cmd -reload
-
-
关闭服务器的防火墙
-
systemctl stop firewalld
-
systemctl disable firewalld
-
-
准备好两台服务器之后,在上述的两台服务器中分别安装好MySQL,并完成基础的初始化准备工作。
-
-
主库配置
- 修改配置文件/etc/my.cnf
# mysql服务ID,保证整个集群环境中唯一,取值范围:1~2^32-1,默认为1 server-id=1 # 是否只读;1代表只读,0代表读写 read-only=0 # 忽略的数据,只不需要同步的数据库 # binlog-ignore-db=mysql # 指定同步的数据库 binlog-do-db=db01- 重启MySQL服务器
systemctl restart mysqld- 登录mysql,创建远程连接的账号,并授予主从复制权限
# 创建itcast用户,并设置密码,该用户可在任意主机连接MySQL服务 create user ‘itcast’@'%'IDENTIFIED with mysql_native_password by 'Root@123456'; # 为‘itcast’@'%'用户分配主从复制权限 crant replication slave on *.* to 'itcast'@'%';- 通过指令,查看二进制日志坐标
- 字段含义说明:
- file:从哪个日志文件开始推送日文件
- position:从哪个位置开始推送日志
- binlog_ignore_db:指定不需要同步的数据库
- 字段含义说明:
show master status; -
从库配置
- 修改配置文件/etc/my.cnf
# mysql服务ID,保证整个集群环境中唯一,取值范围:1~2^32-1,和主库不一样即可 server-id=2 # 是否只读;1代表只读,0代表读写 read-only=1- 重启MySQL服务
systemctl restart mysqld- 登录mysql,设置主库配置
change replication source to source_host='xxx.xxx',source_user='xxx', source_password='xxx',source_log_file='xxx',source_log_pos=xxx;- 上述是8.0.23中的语法。如果mysql是8.0.23之前的版本,执行如下sql
change master to master_host='xxx.xxx.xxx.xxx',master_user='xxx', master_log_file='xxx',master_log_pos=xxx;参数名 含义 source_host 主库IP地址 source_user 连接主库的用户名 source_password 连接主库的密码 source_log_file binlog日志文件名 source_log_pos binlog日志文件位置 - 开启同步操作
start replica; # 8.0.22之后 start slave; # 8.0.22之前- 查看主从同步状态
show replica status; # 8.0.22之后 show slave status; # 8.0.22之前读写分离
读写分离,简单地说是把对数据库的读和写操作分开,以对应不同的数据库服务器。主数据库提供写操作,从数据库提供读操作,这样能有效地减轻单台数据库的压力。
通过MyCat即可轻易实现上述功能,不仅可以支持mysql,也可以支持Oracle和Sql Server。
一主一从
-
原理
-
MySQL的主从复制,是基于二进制日志(binlog)实现的。
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-JmFZrILI-1677328808189)(file://C:\Users\82391\AppData\Roaming\marktext\images\2023-02-25-17-30-07-image.png?msec=1677317408340)]](https://img-blog.csdnimg.cn/f2a7d4761d004642b69dc06b4ea8de89.png)
-
一主一从读写分离
-
配置
-
MyCat控制后台数据库的读写分离和负载均衡有schema.xml文件datahost标签的balance属性控制

-
-
balance配置参数
参数值 含义 0 不开启读写分离机制,所有读操作都发送到当前可用的writeHost上 1 全部的readHost与备用的writeHost都参与select语句的负载均衡(主要针对于双主双从模式) 2 所有的读写操作都随机在writeHost,readHost上分发 3 所有的读请求随机分发到writeHost对应的readHost上执行,writeHost不负担读压力。
双主双从
-
介绍
-
一个主机Master1用于处理所有写请求,它的从机slave1和另一台主机Master2还有它的从机Slave2负责所有读请求。
-
当Master1主机宕机后,Master2主机负责写请求,Master1、Master2互为备机。

-
-
搭建
-
主库配置(m1/m2)
- 修改配置文件/etc/my.cnf
# mysql服务ID,保证整个集群环境中唯一,取值范围:1~2^32-1,默认为1 server-id=1 # server-id=3 # m2 # 指定同步的数据库 binlog-do-db=db01 binlog-do-db=db02 binlog-do-db=db03 # 在作为从数据库的时候,有写入操作也要更新二进制日志文件 log-slave-updates- 重启MySQL服务器
systemctl restart mysqld- 主库中创建账户并授权
# 创建itcast用户,并设置密码,噶用户可以任意主机连接该MySQL服务 create user 'itcast'@'%' identified with mysql_native_password by 'Root@123456'; # 为‘itcast’@'%'用户分配主从复制权限 grant replication slave on *.* to 'itcast'@'%';- 通过指令,查看两台主库的二进制日志坐标
show master status; -
从库配置(s1\s2)
- 修改配置文件/etc/my.cnf
server-id=2 # server-id=4-
重启mysql服务器
-
两台从库配置关联的主库(m2\s1\s2)
master_log_file和master_log_pos可以通过在主机上执行show master status;获得。
change master to master_host='xxx.xxx.xxx.xxx',master_user='xxx',master_password='xxx', master_log_file='xxx',master_log_pos=xxx; -
启动两台从库主从复制,查看从库状态
start slave; show slave status \G;
-
双主双从读写分离
-
配置
Mycat控制后台数据库的读写分离和负载均衡由schema.xml文件datahost标签的balance属性控制,通过writeType即switchType来完成失败自动切换的。
-
参数说明:
-
balance=“1”
- 代表全部的readHost与stand by writeHost参与select语句的负载均衡,简单的说,当双主双从模式(M1->S1,M2->S2,并且M1与M2互为主备),正常情况下,M2,S1,S2都参与select语句的负载均衡。
-
writeType
-
0:写操作都转发到第1台writeHost、WriteHost1挂了,会切换到WriteHost2上。
-
1:所有的写操作都随机地发送到配置的writeHost上
-
-
switchType
-
-1:不自动切换
-
1:自动切换
-


-
-
相关文章:
MySQL_主从复制读写分离
主从复制 概述 主从复制是指将主数据库的DDL和DML操作通过二进制日志传到从库服务器中,然后在从库上对这些日志重新执行(也叫重做),从而使得从库和主库的数据保持同步。 MySQL支持一台主库同时向多台从库进行复制,从…...
shell基础学习
文章目录查看shell解释器写hello world多命令处理执行变量常用系统变量自定义变量撤销变量静态变量变量提升为全局环境变量特殊变量$n$#$* $$?运算符:条件判断比较流程控制语句ifcasefor 循环while 循环read读取控制台输入基本语法:函数系统函数basenamedirname自定义函数shel…...
考虑交叉耦合因素的IPMSM无传感器改进线性自抗扰控制策略
考虑交叉耦合因素的IPMSM无传感器改进线性自抗扰控制策略一级目录二级目录三级目录控制原理ELADRC信号提取龙格贝尔观测器方波注入simulink仿真给定转速:转速环:电流环:一级目录 二级目录 三级目录 首先声明一下,本篇博客是复现…...
2023年全国最新食品安全管理员精选真题及答案5
百分百题库提供食品安全管理员考试试题、食品安全员考试预测题、食品安全管理员考试真题、食品安全员证考试题库等,提供在线做题刷题,在线模拟考试,助你考试轻松过关。 41.《中华人民共和国食品安全法》第35条规定,以下࿰…...
git 笔记
简介 内容介绍 介绍git怎么管理和实现的 核心概念 文件名-hash-文件内容: 可以通过文件路径定位位置, 也可以通过hash定位位置;快照: 所谓一个快照其实就是一棵树, 叶子结点是一个hash,对应一个文件, 根节点对应文件夹; 一棵树就是一个快照;commit是tree, tree将文件串联, …...
ChatGPT 的盈利潜力:我使用语言模型赚取第一笔钱的个人旅程
使用 Fiverr、Python ChatGPT 和数据科学赚钱的指南。众所周知,ChatGPT 是 12 月发生的互联网突破性事件,几乎每个人都跳过了使用 AI 赚钱的潮流。在本文中,我将分享我是如何使用 ChatGPT 赚到第一笔钱的。本文包括以下主题:回到基…...
计算机网络——问答2023自用
1、高速缓冲存储器Cache的作用? 这种局部存储器介于CPU与主存储器DRAM之间,一般由高速SRAM构成,容量小但速度快,引入它是为了减小或消除CPU与内存之间的速度差异对系统性能带来的影响 (Cache可以保存CPU刚用过或循环使…...
【1247. 交换字符使得字符串相同】
来源:力扣(LeetCode) 描述: 有两个长度相同的字符串 s1 和 s2,且它们其中 只含有 字符 "x" 和 "y",你需要通过「交换字符」的方式使这两个字符串相同。 每次「交换字符」的时候&…...
【一天一门编程语言】Lisp 语言程序设计极简教程
Lisp 语言程序设计极简教程 Lisp 是一种古老的编程语言,它的特点是拥有很高的表示能力和灵活的可扩展性,拥有大量的现成函数库,同时也是一种动态类型的语言,十分适合用来实现大规模软件系统。本文介绍了 Lisp 程序设计的基本知识,帮助读者快速上手。 一、Lisp 简介 Lis…...
全后端交互数据加密
前后端交互 通信请求使用https对请求参数进行签名,防止数据篡改对请求参数以及响应数据进行加解密app中使用ssl pinning防止抓包操作 https协议 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-78n9M2PH-1677252127361)(安全.assets/ht…...
稀疏特征和密集特征
在机器学习中,特征是指对象、人或现象的可测量和可量化的属性或特征。特征可以大致分为两类:稀疏特征和密集特征。 稀疏特征 稀疏特征是那些在数据集中不连续出现的特征,并且大多数值为零。稀疏特征的示例包括文本文档中特定单词的存在或不存…...
Linux网络TCP sticky分析工具
1 TCP粘包 - TCP_NODELAY TCP粘包(sticky)的表现是TCP nagle算法将应用层发送的多个包进行合并后,再发送,很容易出现burst导致bcm89230丢包。由于OABR不支持流控,所以需要使用Linux tc对对应的TCP port进行流量整形。 …...
华为OD机试题,用 Java 解【DNA 序列】问题
最近更新的博客 华为OD机试 - 猴子爬山 | 机试题算法思路 【2023】华为OD机试 - 分糖果(Java) | 机试题算法思路 【2023】华为OD机试 - 非严格递增连续数字序列 | 机试题算法思路 【2023】华为OD机试 - 消消乐游戏(Java) | 机试题算法思路 【2023】华为OD机试 - 组成最大数…...
python的所有知识点+代码+注释,不看就亏死了
目录 简介 特点 搭建开发环境 版本 hello world 注释 文件类型 变量 常量 数据类型 运算符和表达式 控制语句 数组相关 函数相关 字符串相关 文件处理 对象和类,注:不是那个对象!!!!&…...
读懂分布式事务
一、概述 1.1 什么是分布式事务 事务我们都很熟悉,事务提供一种机制将一个活动涉及的所有操作纳入到一个不可分割的执行单元,组成这组操作的各个单元,要么全部成功,要么全部失败。 事务有四大特性: Atomic…...
多目标粒子群算法求解帕累托前沿Pareto,Pareto的原理,测试函数100种求解之21
目录 背影 parte前沿的定义 注意事项 基于多目标粒子群的帕累托前沿求解 主要参数 MATLAB代码 效果图 结果分析 展望 背影 在目标优化过程种,很多时候都两个或者多个目标,并且目标函数不能同时达到最优,鱼与熊掌不可兼得,这个时候可以通过求解帕累托前沿,通过帕累托前沿…...
数组:二分查找、移除数组等经典数组题
二分查找:相关题目链接:https://leetcode.cn/problems/binary-search/题目重现:给定一个 n 个元素有序的(升序)整型数组 nums 和一个目标值 target ,写一个函数搜索 nums 中的 target,如果目标值…...
负责任动物纤维标准RAF
【负责任动物纤维标准RAF】RAF-Responsible Animal Fiber, 中文翻译为负责任动物纤维标准。RAF标准包含了三个子标准,即RWS(责任羊毛标准)、RMS(责任马海毛标准)和RAS(责任羊驼毛标准)。RWS&…...
storybook使用info插件报错
报错内容: RangeErrorMaximum call stack size exceededCall StackprettyPrintvendors-node_modules_pmmmwh_react-refresh-webpack-plugin_lib_runtime_RefreshUtils_js-node_mod-4ff2dd.iframe.bundle.js:160:27undefinedvendors-node_modules_pmmmwh_react-refresh-webpack-…...
【每日一题Day129】LC1247交换字符使得字符串相同 | 贪心
交换字符使得字符串相同【LC1247】 有两个长度相同的字符串 s1 和 s2,且它们其中 只含有 字符 "x" 和 "y",你需要通过「交换字符」的方式使这两个字符串相同。 每次「交换字符」的时候,你都可以在两个字符串中各选一个字…...
【SpringBoot】100、SpringBoot中使用自定义注解+AOP实现参数自动解密
在实际项目中,用户注册、登录、修改密码等操作,都涉及到参数传输安全问题。所以我们需要在前端对账户、密码等敏感信息加密传输,在后端接收到数据后能自动解密。 1、引入依赖 <dependency><groupId>org.springframework.boot</groupId><artifactId...
Python爬虫实战:研究feedparser库相关技术
1. 引言 1.1 研究背景与意义 在当今信息爆炸的时代,互联网上存在着海量的信息资源。RSS(Really Simple Syndication)作为一种标准化的信息聚合技术,被广泛用于网站内容的发布和订阅。通过 RSS,用户可以方便地获取网站更新的内容,而无需频繁访问各个网站。 然而,互联网…...
将对透视变换后的图像使用Otsu进行阈值化,来分离黑色和白色像素。这句话中的Otsu是什么意思?
Otsu 是一种自动阈值化方法,用于将图像分割为前景和背景。它通过最小化图像的类内方差或等价地最大化类间方差来选择最佳阈值。这种方法特别适用于图像的二值化处理,能够自动确定一个阈值,将图像中的像素分为黑色和白色两类。 Otsu 方法的原…...
Mac下Android Studio扫描根目录卡死问题记录
环境信息 操作系统: macOS 15.5 (Apple M2芯片)Android Studio版本: Meerkat Feature Drop | 2024.3.2 Patch 1 (Build #AI-243.26053.27.2432.13536105, 2025年5月22日构建) 问题现象 在项目开发过程中,提示一个依赖外部头文件的cpp源文件需要同步,点…...
大语言模型(LLM)中的KV缓存压缩与动态稀疏注意力机制设计
随着大语言模型(LLM)参数规模的增长,推理阶段的内存占用和计算复杂度成为核心挑战。传统注意力机制的计算复杂度随序列长度呈二次方增长,而KV缓存的内存消耗可能高达数十GB(例如Llama2-7B处理100K token时需50GB内存&a…...
网站指纹识别
网站指纹识别 网站的最基本组成:服务器(操作系统)、中间件(web容器)、脚本语言、数据厍 为什么要了解这些?举个例子:发现了一个文件读取漏洞,我们需要读/etc/passwd,如…...
springboot整合VUE之在线教育管理系统简介
可以学习到的技能 学会常用技术栈的使用 独立开发项目 学会前端的开发流程 学会后端的开发流程 学会数据库的设计 学会前后端接口调用方式 学会多模块之间的关联 学会数据的处理 适用人群 在校学生,小白用户,想学习知识的 有点基础,想要通过项…...
A2A JS SDK 完整教程:快速入门指南
目录 什么是 A2A JS SDK?A2A JS 安装与设置A2A JS 核心概念创建你的第一个 A2A JS 代理A2A JS 服务端开发A2A JS 客户端使用A2A JS 高级特性A2A JS 最佳实践A2A JS 故障排除 什么是 A2A JS SDK? A2A JS SDK 是一个专为 JavaScript/TypeScript 开发者设计的强大库ÿ…...
宇树科技,改名了!
提到国内具身智能和机器人领域的代表企业,那宇树科技(Unitree)必须名列其榜。 最近,宇树科技的一项新变动消息在业界引发了不少关注和讨论,即: 宇树向其合作伙伴发布了一封公司名称变更函称,因…...
Python 实现 Web 静态服务器(HTTP 协议)
目录 一、在本地启动 HTTP 服务器1. Windows 下安装 node.js1)下载安装包2)配置环境变量3)安装镜像4)node.js 的常用命令 2. 安装 http-server 服务3. 使用 http-server 开启服务1)使用 http-server2)详解 …...
