MySQL的主从复制以及读写分离

news2024/9/21 4:30:23

主从复制

主从复制的原理;

读写分离,MHA(高可用)的前提是得要有主从复制

主从复制的模式:

1、MySQL的默认模式:

异步模式 住=主库在更新完事务之后会立即把结果返回给从服务器,并不关心从库是否接收到,以及从库是否处理成功。

问题:网络问题可能没有同步,或者是其他因素的影响导致同步失败。

优点:快 效率高

2、全同步模式:

主库在更新完事务之后,立即把结果返回到从库,所有的从库执行完毕之后才能继续下一个同步。安全但是性能受到影响。

3、半同步模式:

介乎于异步和全同步之间,主库更新完事务之后,也是同步到从库。同步完成之后有一个等待时间,等待时间是一个tcp/ip的往返时间 一般是5毫秒左右。

即在一定程度上保证了效率,也在一定程度上保证了数据的完整性。

主从复制的架构模式:高可用架构一般都是奇数

一主两从

二主三从

主从复制的特点:主可以复制到从,从不可以复制到主

面试题

主从复制的延迟怎么解决:

1、网络问题,防火墙额原因

2、硬件设备问题,cpu内存和磁盘出了问题

3、配置文件写错了

(适用于场景要求高的)配置文件当中进行设置的方式提高数据的安全性。

双一设置的前提数据库的存储引擎innodb

双一设置:

innodb_flush_log_at_trx_commit=1

每次提交都会刷新事务日志,确保事务的持久性,但是会影响性能。

sync_binlog=1

每次提交事务,将二进制日志的内容保存到磁盘,确保日志的持久性。提高了安全性。

性能化设置:

sync_binlog=10

最多提交几次事务会进行磁盘刷新,日志内容保存到磁盘

innodb_flush_log_at_trx_commit=2 (可有可无)

每次更新都保存在内存中,不进行刷新。

innodb_buffer_pool_size=xxx兆

控制innodb缓冲池的大小,增大可以提高数据库的性能,但是占用的是系统内存,配置的时候要注意合理化时间。


主从复制如何实现:

实现是基于MySQL的二进制日志,根据主库的二进制文件的标志位,实现主和从的同步。

主从服务器之间,服务器的时间要同步

架构:

三台服务器

192.168.124.10 主服务器

192.168.124.50 从服务器

192.168.124.51 从服务器

配置主服务器

vim /etc/my.cnf

log-slaveupdates=true

允许从服务器从主库复制数据时可以写入从库自己的二进制日志当中。

进入数据库中,创建用户,给用户赋权,最后刷新。

然后show master status;查看一下

位置是857

配置从服务器

进入配置文件

​
vim /etc/my.cnf

​

更改一下id

relay-log=relay-log-bin

从服务器上获取二进制日志的开头,开启从库的二进制日志

relay-log-index=slave-relay-bin.index

二进制日志的索引文件的名称

relay log recovery=1

配置从服务器在启动时是否执行二进制日志的回复操作(和主库同步),1表示开始

然后进入数据库创建用户和给用户赋权

然后配置同步,注意 master_log_file 和 master_log_pos 的值要与Master查询的一致

然后启动slave,在验证一下是否成功

Slave_l0_Running: Yes

从库和主机的读写通信是否正常

Slave_SQL Running: Yes

slave MySQL进程状态是否正常

从服务器2也是一样的配置,唯一不同的就是配置文件时id要改一下

然后进入工具中验证一下实验的结果:

在主服务器数据库创建任何内容,从服务器也会显示相同的内容


读写分离:

主从架构当中,主库负责写,从库负责读。

读写分离的方式:

1、代码 开发人员纯靠代码完成,涉及到数据库的二次开发,性能号,不需要额外的硬件设备

2、中间层代理 代理服务器。在客户端和主从架构之间有一个代理服务器,代理服务器收到客户端的请求之后,通过客户端的sql语句来进行判断,读转到从,写转到主。

Amoeba:读写分离最常见的客户端代理软件,java代码开发的一个软件

如何实现读写分离:

再加上两台机器

一个代理服务器:192.168.124.20

一个客户端:192.168.124.30

在代理服务器中安装java和amoeba

java安装完毕

amoeba安装完毕

在主服务器上创建连接代理服务器的用户以及权限

进入amoeba.xml配置文件中确定主从以及用户名密码

第二步确定谁是主确定谁是从

进入dbServer.xml配置文件中

让这个程序在后台运行

然后查看java的端口有没有连接,端口起来之后就成功了

进入主服务器从服务器把日志这个选项打开

同上

然后重启一下,进入客户端查看


总结+面试题
1、主从同步复制原理
2、读写分离你们使用什么方式?   amoeba 代理 mycat 代码 sql_proxy
通过amoeba代理服务器,实现只在主服务器上写,只在从服务器上读;
主数据库处理事务性查询,从数据库处理select 查询;
数据库复制被用来把事务查询导致的变更同步的集群中的从数据库

3、如何查看主从同步状态是否成功
在从服务器上内输入 show slave status\G 查看主从信息查看里面有IO线程的状态信息,还有master服务器的IP地址、端口事务开始号。
当 Slave_IO_Running和Slave_SQL_Running都是YES时 ,表示主从同步状态成功

4、如果I/O不是yes呢,你如何排查?
首先排查网络问题,使用ping 命令查看从服务器是否能与主服务器通信
再查看防火墙和核心防护是否关闭(增强功能)
接着查看从服务slave是否开启
两个从服务器的server-id 是否相同导致只能连接一台
master_log_file master_log_pos的值跟master值是否一致

5、show slave status能看到哪些信息(比较重要)
IO线程的状态信息
master服务器的IP地址、端口、事务开始的位置
最近一次的错误信息和错误位置
最近一次的I/O报错信息和ID
最近一次的SQL报错信息和id

6、主从复制慢(延迟)会有哪些可能?怎么解决?
主服务器的负载过大,被多个睡眠或 僵尸线程占用  导致系统负载过大,从库硬件比主库差,导致复制延迟
主从复制单线程,如果主库写作并发太大,来不及传送到从库,就会到导致延迟
慢sql语句过多
网络延迟


mysql主从复制

若主从版本不一致,从的版本一定要高于主,保证可以向下兼容
因为若主的版本更新,低版本的从无法兼容的。

 

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Github 2024-07-17 开源项目日报 Top10

根据Github Trendings的统计,今日(2024-07-17统计)共有10个项目上榜。根据开发语言中项目的数量,汇总情况如下: 开发语言项目数量非开发语言项目3Python项目3Rust项目2TypeScript项目2MDX项目1项目化学习 创建周期:2538 天协议类型:MIT LicenseStar数量:161973 个Fork数量…

Unity UGUI 之 Slider

本文仅作学习笔记与交流,不作任何商业用途 本文包括但不限于unity官方手册,唐老狮,麦扣教程知识,引用会标记,如有不足还请斧正 1.Slider是什么 滑块,由三部分组成:背景 填充条 手柄 填充条就是…

提升网站性能:ThinkPHP6中如何实现Mysql分页查询

随着互联网的快速发展,web应用程序的开发也越来越复杂。而分页查询是web应用程序中常见的功能之一。thinkphp6是一个web框架,可以帮助开发人员快速开发应用程序。在本文中,我们将讨论如何在thinkphp6中使用mysql进行分页查询。 首先&#xf…

【java计算机毕设】医用物理学实验考核系统java MySQL ssm JSP maven项目设计源码+文档 寒暑假作业

目录 1项目功能 2项目介绍 3项目地址 1项目功能 【java计算机毕设】医用物理学实验考核系统java MySQL ssm JSP maven项目设计源码文档 寒暑假作业 2项目介绍 系统功能: 医用物理学实验考核系统包括管理员、学生、教师三种角色。 管理员功能包括个人中心模块用于…

Google Cloud Platform数据工程简介

Google Cloud Platform数据工程简介 前言 云计算的出现为数据驱动型组织提供了采用成本效益高且可扩展的数据工程解决方案的机会。在云服务提供商中,Google Cloud Platform (GCP) 是近年来表现优异的领导者之一。GCP的增长被归因于其在企业和初创公司中的日益普及…

【Leetcode】十八、动态规划:不同路径 + 最大正方形

文章目录 1、动态规划2、leetcode509:斐波那契数列3、leetcode62:不同路径4、leetcode121:买卖股票的最佳时机5、leetcode70:爬楼梯6、leetcode279:完全平方数7、leetcode221:最大正方形 1、动态规划 只能…

SAP库龄计算报表(源码)

一个简单的库龄计算报表,根据移动类型来判断最后移动日期,包含批次和非批次库存。 *&---------------------------------------------------------------------* *& Report ZMMR_016 *&---------------------------------------------------…

数据代理实践

1,什么事数据代理机制? 通过访问 代理对象的属性 来向该访问 目标对象的属性 数据代理机制的视线需要依靠,Object.defineProperty()方法 2, ES6新特性: 在对象中的函数/方法 :function是可以省略的 &l…

P2-AI产品经理-九五小庞

项目要怎么做 需求,技术,构建流程,算法 要懂,懂什么? 懂产品方案,包含: 不懂,会遇到哪些问题? 跟算法供应商沟通的专业度不足,容易被边缘化,…

手写数字识别(机器学习)

一:一对多分类方法(one-vs-all) 这里先上的代码,想看原理可以到代码下面。 在数据集中,y的取值为1~10,y10表示当前数字为0 首先读取数据,并对数据进行切分。 import pandas as pd import numpy as np import matplotlibmatplo…

美摄科技企业级视频拍摄与编辑SDK解决方案

在数字化浪潮汹涌的今天,视频已成为企业传递信息、塑造品牌、连接用户不可或缺的强大媒介。为了帮助企业轻松驾驭这一视觉盛宴的制作过程,美摄科技凭借其在影视级非编技术领域的深厚积累,推出了面向企业的专业视频拍摄与编辑SDK解决方案&…

Linux磁盘扩容lvm

目录 Linux磁盘管理基础知识介绍 1.确认分区类型 2.添加新硬盘 3.给新硬盘添加分区 (2)指定分区类型 4.创建物理卷 5.创建卷组 6.扩展逻辑卷 7.刷新文件系统 (1)查看文件系统 xfs文件系统使用(centos&#…

RocketMQ集群搭建,看完这篇文章你就懂了(基于2m-2s-async模式)

前言 上一篇初步认识了RocketMQ,这一篇文章我们简单来搭建一个RocketMQ集群。RocketMQ支持多种集群部署模式,其中最常用的是多主多从的异步复制模式(2m代表两个master,2s代表两个slave,async代表异步刷盘的机制&#…

数据结构 - AVL树

文章目录 一、AVL树的介绍二、AVL树的实现1、基本框架2、查找3、插入4、删除5、测试6、总代码 三、AVL树的性能 一、AVL树的介绍 1、概念 AVL树(Adelson-Velsky and Landis Tree)是一种自平衡的二叉搜索树。它得名于其发明者G. M. Adelson-Velsky和E. M…

广东工程职业技术学院财经学院领导一行莅临泰迪智能科技参观交流

7月19日,广东工程职业技术学院财经学院市场调查与统计分析专业主任苏志鹏、专业老师余乐莅临广东泰迪智能科技股份有限公司产教融合实训基地参观交流。泰迪智能科技董事长张良均、副总经理施兴、高校业务部经理孙学镂、校企合作经理吴桂锋进行接待。 仪式伊始&#…

保持形态真实性的大脑生成建模| 文献速递-基于人工智能(AI base)的医学影像研究与疾病诊断

Title 题目 Realistic morphology-preserving generative modelling of the brain 保持形态真实性的大脑生成建模 01 文献速递介绍 医学影像研究通常受到数据稀缺和可用性的限制。治理、隐私问题和获取成本都限制了医学影像数据的访问,加上深度学习算法对数据的…

苍穹外卖(一)之环境搭建篇

Ngnix启动一闪而退 启动之前需要确保ngnix.exe的目录中没有中文字体,在conf目录下的nginx.conf文件查看ngnix的端口号,一般默认为80,若80端口被占用就会出现闪退现象。我们可以通过logs/error.log查看错误信息,错误信息如下&…

k8s+containerd(kvm版)

k8s(Kubernetes)是由Gogle开源的容器编排引擎,可以用来管理容器化的应用程序和服务,k 高可用:系统在长时间内持续正常地运行,并不会因为某一个组件或者服务的故障而导致整个系统不可用可扩展性&#xff1a…

freesql简单使用操作mysql数据库

参考:freesql中文官网指南 | FreeSql 官方文档 这两天准备做一个测试程序,往一个系统的数据表插入一批模拟设备数据,然后还要模拟设备终端发送数据包,看看系统的承压能力。 因为系统使用的第三方框架中用到了freesql&#xff0c…

【数据结构】包装类、初识泛型

🎇🎉🎉🎉点进来你就是我的人了 博主主页:🙈🙈🙈戳一戳,欢迎大佬指点! 人生格言: 当你的才华撑不起你的野心的时候,你就应该静下心来学习! 欢迎志同道合的朋友…