MySQL运维篇(四)读写分离

一、介绍

读写分离,简单地说是把对数据库的读和写操作分开,以对应不同的数据库服务器。主数据库提供写操作,从数据库提供读操作,这样能有效地减轻单台数据库的压力。

通过 MyCat 即可轻易实现上述功能,不仅可以支持 MySQL,也可以支持 Oracle和 SQL Server。
在这里插入图片描述

二、 一主一从

1. 原理

MySQL 的主从复制,是基于二进制日志(binlog)实现的。

2. 准备

在这里插入图片描述

三、 一主一从读写分离

MyCat 控制后台数据库的读写分离和负载均衡由 schema.xml 文件 datahost 标签的 balance 属性控制。
在这里插入图片描述
writeHost 代表的是写操作对应的数据库,readHost 代表的是读操作对应的数据库。 所以我们要想实现读写分离,就得配置 writeHost 关联的是主库,readHost 关联的是从库。

而仅仅配置好了 writeHost 以及 readHost 还不能完成读写分离,还需要配置一个非常重要的负责均衡的参数 balance,取值有4种,具体含义如下:
在这里插入图片描述
所以,在一主一从模式的读写分离中,balance 配置 1 或 3 都是可以完成读写分离的。

四、双主双从

1. 介绍

一个主机 Master1 用于处理所有写请求,它的从机 Slave1 和另一台主机 Master2 还有它的从机 Slave2 负责所有读请求。当 Master1 主机宕机后,Master2 主机负责写请求,Master1 、Master2 互为备机。架构图如下:
在这里插入图片描述

2. 准备

我们需要准备5台服务器,具体的服务器及软件安装情况如下:在这里插入图片描述

关闭以上所有服务器的防火墙:

systemctl stop firewalld

systemctl disable firewalld

3. 搭建

3.1 主库配置(Master1和Master2)

在这里插入图片描述

(1)修改配置文件 /etc/my.cnf

#mysql 服务ID,保证整个集群环境中唯一,取值范围:12^32-1,默认为1
server-id=1

#指定同步的数据库
binlog-do-db=db01
binlog-do-db=db02
binlog-do-db=db03

# 在作为从数据库的时候,有写入操作也要更新二进制日志文件
log-slave-updates

(2)重启MySQL服务器

systemctl restart mysqld

(3)创建账户并授权

#创建itcast用户,并设置密码,该用户可在任意主机连接该MySQL服务
CREATE USER 'itcast'@'%' IDENTIFIED WITH mysql_native_password BY 'Root@123456';

#为 'itcast'@'%' 用户分配主从复制权限
GRANT REPLICATION SLAVE ON *.* TO 'itcast'@'%';

通过指令,查看两台主库的二进制日志坐标

show master status ;

3.2 从库配置

(1) 修改配置文件 /etc/my.cnf

#mysql 服务ID,保证整个集群环境中唯一,取值范围:1232-1,默认为1
server-id=2

(2)重启MySQL服务器

systemctl restart mysqld

3.3 从库关联主库

3.3.1 两台从库配置关联的主库

需要注意 slave1 对应的是 master1,slave2 对应的是 master2。

(1)在 slave1(192.168.200.212)上执行

CHANGE MASTER TO MASTER_HOST='192.168.200.211', MASTER_USER='itcast', MASTER_PASSWORD='Root@123456', MASTER_LOG_FILE='binlog.000002', MASTER_LOG_POS=663;

(2)在 slave2(192.168.200.214)上执行

CHANGE MASTER TO MASTER_HOST='192.168.200.213', MASTER_USER='itcast', MASTER_PASSWORD='Root@123456', MASTER_LOG_FILE='binlog.000002', MASTER_LOG_POS=663;

(3)启动两台从库主从复制,查看从库状态

start slave;

show slave status \G;

在这里插入图片描述

3.3.2 两台主库相互复制

Master2 复制 Master1,Master1 复制 Master2。

(1)在 Master1(192.168.200.211)上执行

CHANGE MASTER TO MASTER_HOST='192.168.200.213', MASTER_USER='itcast', MASTER_PASSWORD='Root@123456', MASTER_LOG_FILE='binlog.000002', MASTER_LOG_POS=663;

在 Master2(192.168.200.213)上执行

CHANGE MASTER TO MASTER_HOST='192.168.200.211', MASTER_USER='itcast', MASTER_PASSWORD='Root@123456', MASTER_LOG_FILE='binlog.000002', MASTER_LOG_POS=663;

五、双主双从读写分离

1. 配置

MyCat 控制后台数据库的读写分离和负载均衡由 schema.xml 文件 datahost 标签的 balance 属性控制,通过 writeType 及 switchType 来完成失败自动切换的。
在这里插入图片描述

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

搜索与图论第三期 树与图的深度优先遍历

前言 该部分内容实际上是DFS的一个扩展,只要是会了DFS之后,这部分其实也差不多,直接上例题啦就。 1…

STM32F103标准外设库——SysTick系统定时器(八)

个人名片: 🦁作者简介:一名喜欢分享和记录学习的在校大学生 🐯个人主页:妄北y 🐧个人QQ:2061314755 🐻个人邮箱:2061314755qq.com 🦉个人WeChat:V…

架构10- 理解架构的模式4-数据管理模式

一、分片模式:将数据存储区分为多个水平分区或分片,以便更好地管理和处理大量数据。 当业务量达到单个业务表通过缓存和队列削峰等措施后的平均TPS超过1万时,我们不得不考虑数据库分片。 在进行分片之前,我们需要根据数据分布、压…

Qt编程之仿gnome-terminal终端样式 +颜色文字显示

Qt仿linux 终端样式 颜色文字 1.说再多废话不如直接show code2.实现效果 本文采用QTextBrowser作为文本显示窗口,进行文本的显示。本文实例实现的效果并没有终端的输入效果,这里只是提供一些仿终端样式思路。 1.说再多废话不如直接show code 1.ui文件…

SpringMVC入门案例

引言 Spring MVC是一个基于MVC架构的Web框架,它的主要作用是帮助开发者构建Web应用程序。它提供了一个强大的模型驱动的开发方式,可以帮助开发者实现Web应用程序的各种功能,如请求处理、数据绑定、视图渲染、异常处理等。 开发步骤 1.创建we…

XSS漏洞:xss.haozi.me靶场通关

xss系列往期文章: 初识XSS漏洞-CSDN博客 利用XSS漏洞打cookie-CSDN博客 XSS漏洞:xss-labs靶场通关-CSDN博客 XSS漏洞:prompt.mi靶场通关-CSDN博客 目录 0x00 0x01 0x02 0x03 0x04 0x05 0x06 0x07 0x08 0x09 0x0A 0x0B 0x0C…

JS取余运算符 %,ES2023 新增数组方法Array.at

取余运算符(%)的作用就是用来两个操作数进行相除运算之后的余数。 注意,两个操作数取余是有循环范围的,这个范围为 0 - 第二个参数 - 1。 如下图: 对于6取余的话,得到的取余数据就会一直在0-5之间进行循环…

克魔助手工具详解、数据包抓取分析、使用教程

目录 摘要 引言 克魔助手界面 克魔助手查看数据捕获列表 数据包解析窗口 数据包数据窗口 克魔助手过滤器表达式的规则 抓包过滤器实例 总结 参考资料 摘要 本文介绍了克魔助手工具的界面和功能,包括数据包的捕获和分析,以及抓包过滤器的使用方…

精品基于Uniapp+springboot农产品安全领域的信息采集系统App

《[含文档PPT源码等]精品基于Uniappspringboot农产品安全领域的信息采集系统App》该项目含有源码、文档、PPT、配套开发软件、软件安装教程、项目发布教程、包运行成功! 软件开发环境及开发工具: 开发语言:Java 后台框架:sprin…

arcgis javascript api4.x以basetilelayer方式加载arcgis发布的栅格切片服务

需求: 以arcgis js api的basetilelayer加载arcgis发布的栅格切片服务 效果图: 其中和tileinfo和lods,这样获取: https://map.geoq.cn/arcgis/rest/services/ChinaOnlineCommunity/MapServer/?fpjson urltemplate: …

C++发展史

目录 什么是C C的发展史 C的重要性 C在实际工作中的应用 “21天教你学会C” 什么是C 先看看祖师爷,记得多拜拜🤭 C语言是结构化和模块化的语言,适合处理较小规模的程序。对于复杂的问题,规模较大的 程序,需要高度…

算法学习系列(二十三):最小生成树问题

目录 引言一、最小生成树问题二、Prim算法三、Kruskal算法 引言 这个最小生成树问题其实思想都非常的简单,然后代码也是比较简单的,很多人听到这个问题觉得难,比如说跟我一样,主要是因为不知道这个算法,就是一种未知的…

原生SSM整合(Spring+SpringMVC+MyBatis)案例

SSM框架是Spring、Spring MVC和MyBatis三个开源框架的整合,常用于构建数据源较简单的web项目。该框架是Java EE企业级开发的主流技术,也是每一个java开发者必备的技能。下面通过查询书籍列表的案例演示SSM整合的过程. 新建项目 创建文件目录 完整文件结…

CRM系统的销售漏斗是什么?如何提升销售效率?

​ CRM管理系统有许多重要的功能,很多人不太了解什么叫销售漏斗。网上关于CRM销售漏斗的讲解。看完以后仿佛懂了,细心想了想,好像没说透。下面说说CRM销售漏斗如何指导销售人员行动。简单来说就是分解销售目标、规划销售时间、预测销售业绩。…

【时间复杂度】时间复杂度优化法则简讲

一、引言 时间复杂度是衡量算法运行效率的一项重要指标,它描述了随着输入规模的增加,算法的执行时间如何增长。在算法设计与分析中,我们经常面临着优化时间复杂度的任务,以便提高程序的性能。本博客将深入探讨时间复杂度的优化法…

【MYSQL】事务隔离级别

脏读、幻读、不可重复读 脏读 一个事务正在对一条记录做修改,在这个事务完成并提交前,另一个事务也来读取同一条记录,读取了这些未提交的“脏”数据,并据此做进一步的处理,就会产生未提交的数据依赖关系。这种现象被形…

删除edge浏览器文本框储存记录值以及关闭自动填充

当我们点击输入框时总会出现许多以前输入过的信息。 一、删除edge浏览器文本框储存记录值 1、首先按下↓键选中你想删除的信息 2、然后按ShiftfnDel鍵(MAC)/ShiftDel鍵(Win),就可以成功删除。 二、关闭自动填充。 1、在地址栏输入edge://wallet/settings跳转到以…

语言大模型的分布式训练与高效微调指南

原文:语言大模型的分布式训练与高效微调指南 - 知乎 目录 收起 1 分布式训练 2 ZeRO驱动的数据并行 3 全分片数据并行 4 实现 5 高效微调 6 实践指南 7 关于DeepSpeed和FSDP的更多内容 OneFlow编译 翻译|杨婷、宛子琳 最近语言大模型&#xff…

[windows]给WSL安装一个桌面gnome版本

【安装前提】 请提前安装好WSL系统,最好ubuntu系统>18.04 【安装步骤】: WSL 不支持 systemd 而 Gnome 桌面又是基于 systemd,所以先解决这个问题。 sudo apt update sudo apt install git git clone https://github.com/DamionGans/u…

redis数据安全(五)事务

一、概念: 1、介绍:Redis 事务的本质是一组命令的集合。事务支持一次执行多个命令,一个事务中所有命令都会被序列化。在事务执行过程,会按照顺序串行化执行队列中的命令,其他客户端提交的命令请求不会插入到事务执行命…
最新文章