Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >mysql主从复制实现读写分离(一)

mysql主从复制实现读写分离(一)

作者头像
lomtom
发布于 2021-10-27 07:22:12
发布于 2021-10-27 07:22:12
65500
代码可运行
举报
文章被收录于专栏:博思奥园博思奥园
运行总次数:0
代码可运行

一、场景引入

前提背景

在某些场景下,例如淘宝京东这样海量的数据,高访问量的场景,无疑对数据库造成了相当大的负载,同时对于系统的稳定性和扩展性提出很高的要求。

而单个服务器所能够提供的服务以及负载都是有限的。

所以,为了系统的问题,以及较快的响应速度或处理能力,在数据库方面就有了集中解决方案,分库分表,读写分离,这些都能在一定程度上有效地减小单台数据库的压力。

而本文就是从读写分离角度来一探究竟。

实现原理

主要理解以下三个点就差不多了: 1、主机负责写操作 2、从机负责读操作 3、从机自动从主机中同步数据

然而,我们对于一个新的东西,我们就要提出我们的哲学三问: 我是谁?我在那?我要干嘛? 是什么?为什么?怎么做?

1、什么是读写分离

读写分离,基本的原理是让主数据库处理事务性增、改、删操作(INSERT、UPDATE、DELETE),而从数据库处理SELECT查询操作。数据库复制被用来把事务性操作导致的变更同步到集群中的从数据库。

2、为什么要读写分离呢?

因为数据库的“写”(写10000条数据到oracle可能要3分钟)操作是比较耗时的。但是数据库的“读”(从oracle读10000条数据可能只要5秒钟)。所以读写分离,解决的是,数据库的写入,影响了查询的效率。

3、什么时候要读写分离?

数据库不一定要读写分离,如果程序使用数据库较多时,而更新少,查询多的情况下会考虑使用,利用数据库 主从同步 。可以减少数据库压力,提高性能。当然,数据库也有其它优化方案。memcache 或是 表折分,或是搜索引擎。都是解决方法。

4.主从复制、读写分离的基本设计

在实际的生产环境中,对数据库的读和写都在同一个数据库服务器中,是不能满足实际需求的。无论是在安全性、高可用性还是高并发等各个方面都是完全不能满足实际需求的。因此,通过主从复制的方式来同步数据,再通过读写分离来提升数据库的并发负载能力。

取自:读写分离的实现原理及使用场景[1]

这里使用docker进行数据库的安装,docker的优势以及就怎么安装docker就不多做赘述了,感兴趣的可以去翻一下我以前的文章。

一、安装mysql

这里只安装了一个主机(master),一个从机(slave)

代码语言:javascript
代码运行次数:0
运行
复制

二、配置同步

为什么?

如果不进行同步的配置,那么从机无法获取主机的数据,最终就会导致同步失败。

1、配置主机用户

代码语言:javascript
代码运行次数:0
运行
复制

2、修改配置文件

在从机中的配置文件加入以下参数。

1.主机

代码语言:javascript
代码运行次数:0
运行
复制

1.从机

代码语言:javascript
代码运行次数:0
运行
复制

1、修改配置文件(以master为例)

代码语言:javascript
代码运行次数:0
运行
复制

2、拷贝(主从都需要拷贝,以master为例) 如果服务器有vi编辑器,直接使用vi编辑器即可。

代码语言:javascript
代码运行次数:0
运行
复制

3、重启mysql

代码语言:javascript
代码运行次数:0
运行
复制

4、查看是否配置成功

代码语言:javascript
代码运行次数:0
运行
复制

如果出现以下数据即为成功。

5、在从机(slave)中配置主机(master)

代码语言:javascript
代码运行次数:0
运行
复制

三、测试

在第一个数据库(master)创建我们配置的数据库,然后随意修改该数据库的数据,刷新slave,数据同步成功。

四、注意

1、因为在配置当中指定了数据库(lomtomdb),也就是binlog-do-db参数,所以从机只会同步主机中的lomtomdb数据库,其他数据库不同步。2、修改配置文件时,log-bin参数所指定的目录一定是要mysql能够操作的文件,也就是说,如果你指定了其他目录,请给予mysql操作权限。

本文首发于CSDN,作者:lomtom 原文链接:https://blog.csdn.net/qq_41929184/article/details/112306554 你的支持就是我最大的动力。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-01-07,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 博思奥园 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
大厂都在用的MySQL主从复制、读写分离及高可用方案
随着数据量的增大,读写并发的增加,系统可用性要求的提升,单机 MySQL 出现危机:
JavaEdge
2021/02/20
8.4K0
mysql主从复制与读写分离示例
一、实验拓扑图 二、实验要求 (1)在主服务器搭建时间同步服务器。从服务器进行时间同步。mysql安装过程略。 (2)配置主从复制 (3)搭建amoeba实现mysql读写分离 步骤: 1、根据拓扑图
L宝宝聊IT
2018/06/20
7590
这篇MySQL主从复制与分库分表读取分离稳了!
MySQL主从复制、分库分表以及读写分离是在数据库领域中常用的一些技术手段,它们可以帮助我们提高数据库的性能、可用性和扩展性。
杨不易呀
2023/09/08
1.5K3
这篇MySQL主从复制与分库分表读取分离稳了!
MySQL主从复制+读写分离原理及配置实例
MySQL的主从复制和MySQL的读写分离两者不分家,基于主从复制的架构才可实现数据的读写分离。
小手冰凉
2019/10/12
7660
MySQL主从复制+读写分离原理及配置实例
高大上的MySql主从复制到底是什么
通常我们对数据库的读和写都是在同一个数据库服务器中操作,但是当我们的数据量大的时候我们可能会考虑性能问题,那么为了提升系统性能,我们就可以通过MySQL的主从复制(读写分离)来减轻数据库的负载,并且如果当主数据库服务器宕机,我们数据库的数据也不会丢失,因为我们复制到了另外一个服务器上,甚至是多台数据库服务器(一主多从),而MySQL只支持一个主数据库多个数据库。
用户7386338
2020/05/29
4250
mysql 读写分离_详解MySQL读写分离
MySQL的主从复制和读写分离两者有着紧密的联系,首先要部署主从复制,只有主从复制完成了才能在此基础上进行数据的读写分离。
全栈程序员站长
2022/08/11
7.6K0
mysql 读写分离_详解MySQL读写分离
MySQL主从复制与读写分离
1、mysql主从复制(类型): 1)基于语句的复制,将执行的命令复制。默认采用此法,效率高。 2)基于行的复制。将改变的内容复制。 3)混合类型的复制 复制过程:master在日志中记录改变,并通知存储引擎提交,slave将maser的日志复制到中继日志,slave从中继日志读取事件并更新,使其与master一致。 2、mysql读写分离:只在主服务器上写,只在从服务器上读 分类: 1)基于程序代码内部实现: 2)基于中间代理层实现:客户端是mysql间通过代理连接。amoeba是代表性产品。基于java
L宝宝聊IT
2018/06/20
7900
mysql学习总结09 — 优化(架构层)-主从复制与读写分离
数据库服务器压力增大,增加多台mysql数据库服务器,需要建立主从复制机制保证数据一致同步。
CS逍遥剑仙
2018/10/09
1.1K0
mysql学习总结09 — 优化(架构层)-主从复制与读写分离
mysql一主多从 读写分离_MySQL主从复制原理
  在企业应用中,成熟的业务通常数据量都比较大。单台 mysql 在安全性、高可用性和高并发方面都无法满足实际的需求,实际生产环境中经常会配置多台主从数据库服务器以实现读写分离。
全栈程序员站长
2022/09/22
1.7K0
mysql一主多从 读写分离_MySQL主从复制原理
MySQL主从复制 mysql-proxy实现读写分离
docker安装步骤 https://docs.docker.com/install/linux/docker-ce/centos/#install-docker-ce-1
星哥玩云
2022/08/17
6350
MySQL主从复制 mysql-proxy实现读写分离
Mycat从入门安装到MySQL主从复制,再到读写分离实现
Mycat可不是我的猫,他是基于Java语言编写的一款开源数据库中间件,是一个实现了MySQL协议的服务器。能够实现对主从数据库的读写分离、主从复制、水平或垂直切分表等功能。
大猫的Java笔记
2020/12/08
5470
Mycat从入门安装到MySQL主从复制,再到读写分离实现
mysql主从复制读写分离与高可用配置
前面我们说了mysql的安装配置(并提供一键安装脚本),mysql语句使用以及备份恢复mysql数据;本次要介绍的是mysql的主从复制,读写分离;及高可用MHA; 环境如下: master:CentOS7_x64 mysql5.721 172.16.3.175 db1 slave1:CentOS7_x64 mysql5.7.21 172.16.3.235 db2 slave2:CentOS7_x64 mysql5.7.21 172.16.3.235 db3 proxysql/MHA:CentOS7_x64 mysql5.7.21 172.16.3.235 proxysql
兔云小新LM
2019/07/22
7440
mysql主从复制读写分离与高可用配置
听说Mysql你很豪横?-------------MySQL5.7主从复制!读写分离!
读写分离就是只在主服务器上写,只在从服务器上读 主数据库处理事务性査询,而从数据库处理 select査询 数据库复制被用来把事务性査询导致的变更同步到集群中的从数据库
不吃小白菜
2020/09/03
7820
听说Mysql你很豪横?-------------MySQL5.7主从复制!读写分离!
mycat oracle读写分离_mycat读写分离原理
每个方法都有优缺点,我们选择对程序代码改动最小(只改数据源)的方法三,讲解mycat的配置和使用。
全栈程序员站长
2022/11/04
1K0
mycat oracle读写分离_mycat读写分离原理
一文搞懂MySQL主从复制方案、读写分离及高可用
随着数据量的增大,读写并发的增加,系统可用性要求的提升,单机 MySQL 出现危机:
JavaEdge
2021/02/03
1.3K0
一文搞懂MySQL主从复制方案、读写分离及高可用
学会MySQL主从复制读写分离,看这篇就够了
在很多项目,特别是互联网项目,在使用MySQL时都会采用主从复制、读写分离的架构。
java技术爱好者
2020/09/22
5620
Mysql主从复制以及读写分离
主从复制:主库master将DDL,DML操作写入二进制文件binlog,从库通过IO-thread将binlog转换为中继日志relaylog,并且通过sql-thread从relaylog读取数据,重新释放数据记录变化并反应到自身数据来达到主从同步
风起--追风
2022/05/16
5120
【详解】Mycat在MySQL主从复制基础上实现读写分离
随着互联网应用的快速发展,数据库的性能瓶颈逐渐成为制约系统扩展的主要因素之一。为了提高数据库的读写性能,读写分离技术被广泛采用。本文将介绍如何使用Mycat在MySQL主从复制的基础上实现读写分离,以提升系统的整体性能。
大盘鸡拌面
2025/05/08
910
深入解密MySQL主从复制
MySQL 是最受欢迎的关系型数据库管理系统之一,被广泛应用于各种业务系统。主从复制是MySQL 的重要能力,用于实现数据冗余、提高可用性和性能。了解MySQL主从复制,可以更好地管理和优化数据库,为业务系统提供更强大的支持。
windealli
2024/03/13
1.1K0
深入解密MySQL主从复制
MySQL主从复制及读写分离
还有一个半同步复制,他在协议中添加了一个同步步骤,这意味着主节点在提交时需要等待从节点确认它已经接收到事务。只有这样,主节点才能继续提交操作。
黑马金牌编程
2022/05/01
5260
推荐阅读
相关推荐
大厂都在用的MySQL主从复制、读写分离及高可用方案
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验