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",你需要通过「交换字符」的方式使这两个字符串相同。 每次「交换字符」的时候,你都可以在两个字符串中各选一个字…...
屋顶变身“发电站” ,中天合创屋面分布式光伏发电项目顺利并网!
5月28日,中天合创屋面分布式光伏发电项目顺利并网发电,该项目位于内蒙古自治区鄂尔多斯市乌审旗,项目利用中天合创聚乙烯、聚丙烯仓库屋面作为场地建设光伏电站,总装机容量为9.96MWp。 项目投运后,每年可节约标煤3670…...
【android bluetooth 框架分析 04】【bt-framework 层详解 1】【BluetoothProperties介绍】
1. BluetoothProperties介绍 libsysprop/srcs/android/sysprop/BluetoothProperties.sysprop BluetoothProperties.sysprop 是 Android AOSP 中的一种 系统属性定义文件(System Property Definition File),用于声明和管理 Bluetooth 模块相…...
04-初识css
一、css样式引入 1.1.内部样式 <div style"width: 100px;"></div>1.2.外部样式 1.2.1.外部样式1 <style>.aa {width: 100px;} </style> <div class"aa"></div>1.2.2.外部样式2 <!-- rel内表面引入的是style样…...
关于 WASM:1. WASM 基础原理
一、WASM 简介 1.1 WebAssembly 是什么? WebAssembly(WASM) 是一种能在现代浏览器中高效运行的二进制指令格式,它不是传统的编程语言,而是一种 低级字节码格式,可由高级语言(如 C、C、Rust&am…...
Caliper 配置文件解析:config.yaml
Caliper 是一个区块链性能基准测试工具,用于评估不同区块链平台的性能。下面我将详细解释你提供的 fisco-bcos.json 文件结构,并说明它与 config.yaml 文件的关系。 fisco-bcos.json 文件解析 这个文件是针对 FISCO-BCOS 区块链网络的 Caliper 配置文件,主要包含以下几个部…...
深入浅出深度学习基础:从感知机到全连接神经网络的核心原理与应用
文章目录 前言一、感知机 (Perceptron)1.1 基础介绍1.1.1 感知机是什么?1.1.2 感知机的工作原理 1.2 感知机的简单应用:基本逻辑门1.2.1 逻辑与 (Logic AND)1.2.2 逻辑或 (Logic OR)1.2.3 逻辑与非 (Logic NAND) 1.3 感知机的实现1.3.1 简单实现 (基于阈…...
Webpack性能优化:构建速度与体积优化策略
一、构建速度优化 1、升级Webpack和Node.js 优化效果:Webpack 4比Webpack 3构建时间降低60%-98%。原因: V8引擎优化(for of替代forEach、Map/Set替代Object)。默认使用更快的md4哈希算法。AST直接从Loa…...
VisualXML全新升级 | 新增数据库编辑功能
VisualXML是一个功能强大的网络总线设计工具,专注于简化汽车电子系统中复杂的网络数据设计操作。它支持多种主流总线网络格式的数据编辑(如DBC、LDF、ARXML、HEX等),并能够基于Excel表格的方式生成和转换多种数据库文件。由此&…...
使用SSE解决获取状态不一致问题
使用SSE解决获取状态不一致问题 1. 问题描述2. SSE介绍2.1 SSE 的工作原理2.2 SSE 的事件格式规范2.3 SSE与其他技术对比2.4 SSE 的优缺点 3. 实战代码 1. 问题描述 目前做的一个功能是上传多个文件,这个上传文件是整体功能的一部分,文件在上传的过程中…...
Vue3 PC端 UI组件库我更推荐Naive UI
一、Vue3生态现状与UI库选择的重要性 随着Vue3的稳定发布和Composition API的广泛采用,前端开发者面临着UI组件库的重新选择。一个好的UI库不仅能提升开发效率,还能确保项目的长期可维护性。本文将对比三大主流Vue3 UI库(Naive UI、Element …...
