当前位置: 首页 > news >正文

mysql主从复制与读写分离

mysql主从复制与读写分离

MySQL主从复制是一种常见的数据复制技术,用于将一个MySQL数据库服务器的数据复制到其他服务器上。

单台mysql在安全性,高并发方面都无法满足实际需求

配置多台主从数据库服务器以实现读写分离

读写分离,主数据库的处理增,改,删操作,从尔数据库select查询操作,数据库复制被用来把事务性操作导致的变更到同步集群的数据库。

 读写分离?

数据库的写操作比较耗时

数据库的写入影响了查询速度

什么时候读写分离?

数据库主从同步,再通过读写分离可分担数据库压力,提高性能。

实际生产环境中,数据库的读写都在通一个数据库服务中,是不能满足实际的需求的,无论是安全性,高可用还是高并发等各个方面都是完全不能满足实际需求的,因此通过主从复制的方式来同步数据,再通过读写分离来提升数据库并发能力,类似rsync,不同于rsync对磁盘文件做备份,mysql主从复制是对数据库中数据和语句做的备份。

 1)master节点会将数据的盖面记录成二进制日志,当master上的数据发生改变时,则将其改变写入二进制日志中

2)Slave节点会在一定时间间隔内对Master的二进制日志进行探测其是否发生改变,如果发生改变,则开始一个I/O线程请求Master的二进制事件

3)同时Master节点为每个I/O线程启动一个dump线程,用于向其发送二进制事件,并保存至Slave节点本地的中继日志(Relay log)中,Slave节点将启动SQL线程从中继日志中读取二进制日志,在本地重放,即解析成SQL语句逐一执行,使得其数据和Master节点的保持一致,最后I/O线程和SQL线程将进入睡眠状态,等待下一次被唤醒。

ps:

中继日志通常会位于OS缓存中,所以中继日志的开销很小

复制过程有一个很重要的限制,即复制在Slave上是串行化,也就是说Master上的并行更新操作不能在Slave上并行操作。

简述原理

主开启二进制日志从开启中继日志,数据的写入操作在主服务器上进行

主服务器所有写入操作写入二进制日志程

从开启io线程请求向主服务器二进制日志事件/记录

主为每个io线程开启dump线程向从发送二进制事件

从保存二进制日志事件到中继日志

从开启sql线程读取中继日志中的二进制事件并解析成sql语句进行转发/逐一执行

chrony也是时间同步服务

systemctl status chrony

ntp服务来做时间同步

yum -y install ntp ntpdate

vim /etc/ntp.conf

server 127.127.232.0

fugde 123.127.232.0 stratum 8(时间层级)

systemctl start ntpd

ntpdate ntp.aliyun.com(同步阿里源)

ntpdate 192.168.232.20

which ntpdate

/usr/bin/ntpdate

crontab -e

 

 双1设置数据谢图最安全

innodb_flush_logs_at_trx_commit=1 #redo log(事务日志)的刷盘策略,每次事务提交mysql都会把事务日志缓存区的数据写入到日志文件中,并刷新到磁盘中,该模式为系统默认

sync_binlog=1

在进行每1次事务提交(写入二进制日志)后,mysql将执行fsync的磁盘同步指令,将缓冲区数据刷新到磁盘

双1设置对安全性要求非常高,而且次磁盘io写能力足够支持的业务

innodb_flush_logs_at_trx_commit=2

每次事务提交时mysql都会把日志缓存区的日志文件中,但是并不会同时刷新到磁盘上,该么事下,mysql会每秒执行一次刷新的磁盘操作

sync_binlog=500 在进行五百次提交后,mysql将进行一次fsync的磁盘同步指令,并将缓冲区刷新到磁盘中

 grant replication slave on *.* to 'myslave' @ '192.168.232.20'

 继服务器

innodb_buffer_pool_size=2048M

用于缓存数据和索引的内存大小,让更多数据写入内存中完成,减少磁盘操作,可设置为服务器可用内存的70%-80%

 vim /etc/my.cnf

binlog_format=maxed

mysql>grant replication slave on *.* to 'myslave' @ '192.168.232.%' indentified by '123123';

mysql>flush privileges;

mysql>show master status;

vim /etc/my.cnf

server-id = 2

relay-log=relay-log-bin

relay-log-index=relay-log-bin-index

systemctl restart mysqld

mysql>cahnge master to master_host='192.168.232.30',master_user='myslave',master_password'123123',master_log_file='mysql-bin.00001',mater_log_pos=603;

start slave;

show slave status\G 查看连接状态

查看slave_io_running:yes

slave_sql_running:yes

seconds_behind_master 参数来判断是否发生主从延迟 0一切良好 正值出现延迟,复值bug值

是否是yes

有问题:端口有没有打开

(master_port 指定端口号)

mysql配置文件server_id是否一样

确定change命名是否正确

show databases;

create database kgc;

use kgc;

create table ky27 (id int,name char(10),age int);

insert into ky27 values(1,'yht',28);

mysql主从服务器延迟

 

 使用物理主机提升io性能

如何减少

 

#在主库查询半同步状态

show status like rRpl semi%';

当半同步复制发生超时(由rpl_semi_sync_master_timeout参数控制,默认为1000ms,即1s),会暂时关闭半同步复制,转而使用异步复制,也是会自动降为异步工作。当 master_dump 线程发送完一个事务的所有事件之后,如果在 rpl_semi_sync_master_timeout 内,收到了从库的响应,则主从又重新恢复为半同步复制。

简述

在超时时间内没收到从服务器的回复自动降为异步复制,在一定时间收到回复会升为半同步复制

半同步复制独立出ack collector thread

 负责主会用ack  collector线程来接收从反馈的确认信息

 

读写分离

读写分离就只是在主服务器上写,只在从服务器上读,基本的原理是让主数据库处理事务性操作,从而数据库处理select查询,数据库复制被用来把主服务器上的事务操作导致的变更同步到集群中的数据库

基于程序代码内部实现

代码的读写分离select 从服务器

insert主服务器

基于中间代理层实现

代理一般位于客户端和服务器之间,代理服务器接收到客户端的请求通过判断后转发到后端数据库

mysql-proxy(自带),atlas(360内部),amoeba,mycat(分库分表,配合数据库的主从模式还可以实现读写分离)

相关文章:

mysql主从复制与读写分离

mysql主从复制与读写分离 MySQL主从复制是一种常见的数据复制技术,用于将一个MySQL数据库服务器的数据复制到其他服务器上。 单台mysql在安全性,高并发方面都无法满足实际需求 配置多台主从数据库服务器以实现读写分离 读写分离,主数据库的…...

技术控,看这里,一款支持断点调试的数据科学工具

数据科学是一门利用统计学、机器学习、数据挖掘、数据可视化等技术和方法,从数据中提取知识和信息的交叉学科。自上世纪60年代,统计学家John W.Tukey首次提出“数据分析”(Data Analysis)的概念起,数据科学已历经了几十…...

论文导读 | 大语言模型上的精调策略

随着预训练语言模型规模的快速增长,在下游任务上精调模型的成本也随之快速增加。这种成本主要体现在两方面上:一,计算开销。以大语言模型作为基座,精调的显存占用和时间成本都成倍增加。随着模型规模扩大到10B以上,几乎…...

进阶自动化测试,这3点你一定要知道的...

自动化测试指软件测试的自动化,在预设状态下运行应用程序或系统,预设条件包括正常和异常,最后评估运行结果。将人为驱动的测试行为转化为机器执行的过程。 自动化测试框架一般可以分为两个层次,上层是管理整个自动化测试的开发&a…...

网络编程套接字API

一. linux平台 1.创建套接字 成功返回文件描述符,失败返回-1 int socket (int __domain, int __type, int __protocol) ;2.套接字绑定IP地址和端口号 成功返回0,失败返回-1 int bind (int __fd, __CONST_SOCKADDR_ARG __addr, socklen_t __len);3.开启…...

数字藏品的价值和意义

2022年以来,数字藏品概念在国内火热起来。从年初的《关于防范 NFT相关金融风险的倡议》到8月份央行数字货币 DCEP的正式面世,从中国香港首个“NFT”艺术品在香港拍卖市场成交到国内多家互联网大厂推出数字藏品平台,越来越多的企业开始试水数字…...

Unity物理系统脚本编程(上)

一、获取刚体组件Rigidbody 当一个物体挂载了刚体时&#xff0c;即可在脚本中获取该物体的刚体组件&#xff0c;代码如下 Rigidbody rigid; void Start() { rigidGetComponent<Rigidbody>(); } 一般将刚体变量命名为rigid并定义为一个字段&#xff0c;方便复用. 二、施…...

Java基础(十七)File类与IO流

1. java.io.File类的使用 1.1 概述 File类及本章下的各种流&#xff0c;都定义在java.io包下。一个File对象代表硬盘或网络中可能存在的一个文件或者文件目录&#xff08;俗称文件夹&#xff09;&#xff0c;与平台无关。&#xff08;体会万事万物皆对象&#xff09;File 能新…...

跑步课程导入能力,助力科学训练

HUAWEI Health Kit为开发者提供用户自定义的跑步课程导入接口&#xff0c;便于用户在华为运动健康App和华为智能穿戴设备上查看来自生态应用的训练课表&#xff0c;开启科学、适度的运动训练。 跑步课程导入能力支持生态应用在获取用户的华为帐号授权后&#xff0c;将跑步课程…...

MySQL---8、创建和管理表

1、基础知识 1.1 一条数据存储的过程 创建数据库-->确认字段-->创建数据表-->插入数据1.2 标识符的命名规则 1、数据库名、表名不得超过30个字符&#xff0c;变量名限制为29个 2、必须只能包含A-Z、a-z、0-9,、_共63个字符 3、数据库名、表名、字段名等对象名中间不…...

图像分类简单介绍

文章目录 图像分类简单介绍什么是图像分类图像分类的背景和意义传统的图像分类方法基于深度学习的图像分类方法总结 图像分类简单介绍 图像分类是计算机视觉领域的一个基本任务&#xff0c;其目标是将输入的图像分配给某个预定义的类别&#xff08;即标签&#xff09;。在本教…...

很多博主用Markdown格式文章?直呼真不错!

概述 Markdown 是一种轻量级标记语言&#xff0c;它可以使我们专注于写作内容&#xff0c;而不用过多关注排版&#xff0c;很多博主、作家等都用它来撰写文章~ 本文将给各位小伙伴介绍 Markdown 语法的使用&#xff0c;本篇文章索奇就是用的纯 markdown 语法来写的~ 标题 一级…...

【2023/05/07】汇编语言

Hello&#xff01;大家好&#xff0c;我是霜淮子&#xff0c;2023倒计时第2天。 Share Stray birds of summer come to my window to sing and fly away. And yellow leaves of autumn,which have no songs,flutter and full there with a sigh. 译文&#xff1a; 夏天的鸟&…...

AI 生成第3篇测试文章:怎么编写测试计划?

背景 在软件开发过程中&#xff0c;测试是十分重要的环节&#xff0c;测试计划是测试的基础和重要的组成部分。一个完善的测试计划能够指导测试工作&#xff0c;明确测试范围和要求&#xff0c;提高测试效率&#xff0c;保证软件质量和可靠性。本文将从测试计划的定义、编写步…...

怎么洗稿容易过稿-在线洗稿软件

自媒体洗稿软件 即使您是一位优秀的自媒体写作人员&#xff0c;也难免遇到让人头疼的撰写问题&#xff0c;例如无法处理大量原始文本、需要手动删除冗余信息、缺少时间针对每篇文章进行深入修改等问题。但是&#xff0c;现在有了我们的一款自媒体洗稿软件&#xff0c;您再也不需…...

图书馆客流人数统计分析系统方案

智慧客流人数统计分析系统可以帮助图书馆管理者更好地管理人群流量。系统能够自动统计区域内的人流量高峰期&#xff0c;并通过数据分析提供更加合理的管控&#xff0c;从而提区域内人群流动性&#xff0c;避免拥堵的情况。 AI客流视觉监控 客流量管控分析系统意义 讯鹏客流量管…...

linux命令之crontab详解

crontab 提交和管理用户的需要周期性执行的任务 更多linux命令详解&#xff1a;linux命令在线工具 补充说明 crontab命令 被用来提交和管理用户的需要周期性执行的任务&#xff0c;与windows下的计划任务类似&#xff0c;当安装完成操作系统后&#xff0c;默认会安装此服务工…...

浅谈一下接口工具(jmeter、postman、swagger等)

一、接口都有哪些类型&#xff1f; 接口一般分为两种&#xff1a;1.程序内部的接口 2.系统对外的接口 系统对外的接口&#xff1a;比如你要从别的网站或服务器上获取资源或信息&#xff0c;别人肯定不会把 数据库共享给你&#xff0c;他只能给你提供一个他们写好的方法来获取…...

面试题:react、 vue中的key有什么作用? (key的内部原理)

面试题:react、 vue中的key有什么作用? &#xff08;key的内部原理) 1.虚拟DOM中key的作用: key是虚拟DOM对象的标识&#xff0c;当状态中的数据发生变化时&#xff0c;Vue会根据【新数据】生成【新的虚拟DON】,随后Vue进行【新虚拟DOM】与【旧虚拟DOM】的差异比较&#xff0…...

C++之继承

目录 一、继承的概念及定义 1.1继承的概念 1.2继承的定义 1.2.1继承的格式 1.2.2继承基类成员访问方式的变化 二、基类和派生类对象赋值转换 三、继承中的作用域 4.派生类的默认成员函数 五、继承与友元 六、继承与静态成员 七、菱形继承及菱形虚拟继承 7.1菱形继承的问…...

web vue 项目 Docker化部署

Web 项目 Docker 化部署详细教程 目录 Web 项目 Docker 化部署概述Dockerfile 详解 构建阶段生产阶段 构建和运行 Docker 镜像 1. Web 项目 Docker 化部署概述 Docker 化部署的主要步骤分为以下几个阶段&#xff1a; 构建阶段&#xff08;Build Stage&#xff09;&#xff1a…...

DeepSeek 赋能智慧能源:微电网优化调度的智能革新路径

目录 一、智慧能源微电网优化调度概述1.1 智慧能源微电网概念1.2 优化调度的重要性1.3 目前面临的挑战 二、DeepSeek 技术探秘2.1 DeepSeek 技术原理2.2 DeepSeek 独特优势2.3 DeepSeek 在 AI 领域地位 三、DeepSeek 在微电网优化调度中的应用剖析3.1 数据处理与分析3.2 预测与…...

基于uniapp+WebSocket实现聊天对话、消息监听、消息推送、聊天室等功能,多端兼容

基于 ​UniApp + WebSocket​实现多端兼容的实时通讯系统,涵盖WebSocket连接建立、消息收发机制、多端兼容性配置、消息实时监听等功能,适配​微信小程序、H5、Android、iOS等终端 目录 技术选型分析WebSocket协议优势UniApp跨平台特性WebSocket 基础实现连接管理消息收发连接…...

【单片机期末】单片机系统设计

主要内容&#xff1a;系统状态机&#xff0c;系统时基&#xff0c;系统需求分析&#xff0c;系统构建&#xff0c;系统状态流图 一、题目要求 二、绘制系统状态流图 题目&#xff1a;根据上述描述绘制系统状态流图&#xff0c;注明状态转移条件及方向。 三、利用定时器产生时…...

sqlserver 根据指定字符 解析拼接字符串

DECLARE LotNo NVARCHAR(50)A,B,C DECLARE xml XML ( SELECT <x> REPLACE(LotNo, ,, </x><x>) </x> ) DECLARE ErrorCode NVARCHAR(50) -- 提取 XML 中的值 SELECT value x.value(., VARCHAR(MAX))…...

鸿蒙中用HarmonyOS SDK应用服务 HarmonyOS5开发一个生活电费的缴纳和查询小程序

一、项目初始化与配置 1. 创建项目 ohpm init harmony/utility-payment-app 2. 配置权限 // module.json5 {"requestPermissions": [{"name": "ohos.permission.INTERNET"},{"name": "ohos.permission.GET_NETWORK_INFO"…...

智能分布式爬虫的数据处理流水线优化:基于深度强化学习的数据质量控制

在数字化浪潮席卷全球的今天&#xff0c;数据已成为企业和研究机构的核心资产。智能分布式爬虫作为高效的数据采集工具&#xff0c;在大规模数据获取中发挥着关键作用。然而&#xff0c;传统的数据处理流水线在面对复杂多变的网络环境和海量异构数据时&#xff0c;常出现数据质…...

九天毕昇深度学习平台 | 如何安装库?

pip install 库名 -i https://pypi.tuna.tsinghua.edu.cn/simple --user 举个例子&#xff1a; 报错 ModuleNotFoundError: No module named torch 那么我需要安装 torch pip install torch -i https://pypi.tuna.tsinghua.edu.cn/simple --user pip install 库名&#x…...

Linux 中如何提取压缩文件 ?

Linux 是一种流行的开源操作系统&#xff0c;它提供了许多工具来管理、压缩和解压缩文件。压缩文件有助于节省存储空间&#xff0c;使数据传输更快。本指南将向您展示如何在 Linux 中提取不同类型的压缩文件。 1. Unpacking ZIP Files ZIP 文件是非常常见的&#xff0c;要在 …...

Python 训练营打卡 Day 47

注意力热力图可视化 在day 46代码的基础上&#xff0c;对比不同卷积层热力图可视化的结果 import torch import torch.nn as nn import torch.optim as optim from torchvision import datasets, transforms from torch.utils.data import DataLoader import matplotlib.pypl…...