【Mysql】主从一致

news2024/11/28 14:44:30

【Mysql】主从一致

  • (一)主从复制
    • 【1】什么是主从复制
    • 【2】为什么需要主从复制
    • 【3】mysql复制原理
    • 【4】具体步骤
    • 【5】mysql主从形式
    • 【6】具体操作过程
      • (1)首先在虚拟机服务器上安装mysql,进行简单的配置
      • (2)mac使用mysql命令没有效果的解决方案
      • (3)使用mac本地的mysql作为主服务器,虚拟机的mysql作为从服务器
      • (4)从机配置

(一)主从复制

【1】什么是主从复制

mysql的主从复制是指数据可以从一个mysql数据库服务器主节点复制到一个或者多个从节点。mysql默认采用异步复制方式,这样从节点不用一致访问主服务器来更新自己的数据,数据的更新可以在远程链接上进行,从节点可以复制主数据库中的所有数据库或者特定的数据库,或者特定的表。

【2】为什么需要主从复制

(1)在业务复杂的系统中,有这么一个情景,有一句sql语句需要锁表,导致暂时不能使用读的服务,那么久很影响运行中业务,使用主从复制,可以让主库负责写,从库负责读,这样,即使主库出现了锁表的情景,通过读从库也可以保证业务的正常运作

一般都是一主多从,通过负载均衡,读的请求会比写的多,读的请求放在多个服务器里,通过负载均衡去访问不同读从库

(2)做数据的热备
也就是从库给主库做数据的备份存储

(3)架构的扩展,业务量越来越大,I/O访问频率过高,单机无法满足,此时做多库的存储,降低磁盘I/O访问的频率,提高单个集齐的I/O性能。

【3】mysql复制原理

(1)原理介绍
1-master服务器将数据的改变记录二进制binlog日志,当master上的数据发生改变时,就把这些数据的改变写入二进制日志中;

问题:如何提高主从复制的速度?

2-slave服务器会在一定时间间隔内对master服务器的二进制日志进行探测,看看这个日志是不是发生了改变,如果日志发生了改变,就开始一个IO线程请求master二进制时间

3-同时主节点为每个IO线程启动一个dump线程,用于向其发送二进制时间,并且保存到从节点本地的中继日志中,从节点就会启动sql线程从中继日志中读取二进制日志,在本地重放,使得其数据和主节点的保持一致,最后IO线程和sql线程将进入睡眠状态,等待下一次被唤醒。

(2)也就是说
1-从库会生成两个线程,一个IO线程,一个sql线程
2-IO线程会去请求主库的binlog日志,并且把得到的binlog写到本地的relay-log中继日志文件中
3-主库会生成一个log dump线程,用来给从库IO线程传binlog
4-sql线程,会读取relay log我呢间中的日志,并且解析成sql语句逐一执行

(3)注意
1-master把操作语句记录到binlog日志中,然后授予slave远程连接的权限
master一定要开启binlog二进制日志功能;通常为了数据安全考虑,slave也开启binlog功能
2-slave开启两个线程:IO线程和sql线程。其中:IO线程负责读取master的binlog内容到中继日志relay log里;sql线程负责从relay log日志里读出binlog内容,并且更新到slave的数据库里,这样就能保证slave数据和master数据保持一致了
3-mysql复制至少需要两个mysql的服务,当然mysql服务可以分布在不同的服务器上,也可以在一台服务器上启动多个服务
4-mysql复制最好确保master和slave服务器上的mysql版本相同,如果不能满足版本一致,那么要保证master主节点的版本要低于slave从节点的版本
5-master和slave两节点荐时间需要同步

在这里插入图片描述

【4】具体步骤

(1)从库通过手工执行change master to 语句连接主库,提供了连续的用户一切条件(user、password、port、ip),并且让从库知道,二进制日志的起点位置(file名 position号);
(2)从库的IO线程和主库的dump线程建立连接
(3)从库根据change master to语句提供的file名和position号,IO线程向主库发起binlog的请求
(4)从库dump线程根据从库的请求,将本地binlog以events的方式发给从库IO线程
(5)从库IO线程接收binlog events,并存放到本地relay-log中,传送过来的信息,会记录到master.info中
(6)从库sql线程应用的relay-log,并且把应用过得记录到relay-log.info中,默认情况下,已经应用过得relay会自动被清理purge

【5】mysql主从形式

(1)一主一从
(2)主主复制:互相作为主服务器和从服务器
使用场景:如果是一主一从,那么当主服务器挂掉的时候,所有服务器只能用来读,不能用来写了
但是使用主主复制,每个服务器都同时具备读写的功能,两台服务器互相备份
(3)一主多从(多用)
主用来承担写的需求
从用来承担读的请求
(4)多主一从(多用)
(5)联级复制
进行数据灾备

【6】具体操作过程

(1)首先在虚拟机服务器上安装mysql,进行简单的配置

虚拟机安装mysql5.7的过程文件:https://blog.csdn.net/u012318074/article/details/103377958
注意的是mysql5.7在修改密码时会要求安全等级,这时候要改一些配置
set global validate_password_policy=0;
set global validate_password_length=1;
SET PASSWORD FOR ‘root’@‘localhost’= “123456”;

(2)mac使用mysql命令没有效果的解决方案

主要是因为电脑没有配置mysql的路径
参考的信息:https://www.cnblogs.com/hzaixt/p/13713962.html

1-进入路径
cd /usr/local/opt/mysql@5.7/bin

2-编辑配置文件
vim ~/.bash_profile

3-添加mysql配置路径
# Mysql
export MYSQL_HOM="/usr/local/opt/mysql@5.7/bin”

4-退出后保存更新
source ~/.bash_profile

5-再使用 mysql -uroot -p 就可以登录了

(3)使用mac本地的mysql作为主服务器,虚拟机的mysql作为从服务器

配置mac主机和虚拟机从机的参考文件:https://blog.csdn.net/weixin_68588547/article/details/125322887?spm=1001.2014.3001.5506

(1)打开虚拟机服务器的3306端口的防火墙权限
查看防火墙信息: firewall-cmd --list-all
添加端口号: sudo firewall-cmd --add-port=3306/tcp --permanent
重启防火墙: firewall-cmd --reload
再查看防火墙信息:firewall-cmd --list-all

(2)配置mac上的mysql配置文件
打开终端,输入下面命令,打开并修改mysql配置文件,配置开启二进制日志

vim /usr/local/etc/my.cnf

#主从复制的配置如下
log-bin=master-bin      #二进制文件名称
binlog-format=ROW       #二进制日志格式
server-id=1     #要求各个服务器的id必须不一样
binlog-do-db=msb        #同步的数据库名称

(3)重新启动mysql

创建主库msb
create database msb;

(经过上面的配置以后,可以直接使用命令来重启了:mysql.server restart)
1. 启动MySQL服务 /usr/local/opt/mysql@5.7/bin/mysql.server start
2. 停止MySQL服务 /usr/local/opt/mysql@5.7/bin/mysql.server stop
3. 重启MySQL服务 /usr/local/opt/mysql@5.7/bin/mysql.server restart

(4)登录主库mysql,执行sql进行授权

执行sql:GRANT REPLICATION SLAVE ON *.* to ‘username’@‘%’ identifiled by ‘password’;
创建一个用户username,密码为password,并且给username用户授予REPLICATION SLAVE权限。常用于建立复制时所需要用到的用户权限,也就是slave必须被master授权具有该权限的用户,才可以通过该用户复制。

(执行下面这四行代码)
修改设置密码的安全等级
把副本的权限授权给所有地址的从服务器
set global validate_password_policy=0;
set global validate_password_length=1;
grant replication slave on *.* to 'root'@'%' identified by '123456’;
flush privileges;

(5)查看主库的状态

show master status;

position
binlog_do_db:指定同步的数据库

在这里插入图片描述
接下来的主机就有了复制副本的功能了

(4)从机配置

打开mysql的配置文件

vim /etc/my.cnf

添加下面的内容

[mysqld]
log-bin=master-bin #二进制文件的名称
binlog-format=ROW #二进制文件的格式
server-id=2 #服务器的id

保存后重启mysql

service mysqld restart

重新登录mysql

mysql -uroot -p123456

执行下面的sql

change master to 
master_host='主库的ip地址',
master_user='之前设置master时的username',
master_password='之前设置master时的password',
master_log_file='查看master状态时的file名',
master_log_pos='查看master状态时的position';


change master to 
master_host='192.168.0.***',
master_user='root',
master_password='123456’,

master_log_file='master-bin.000001',
master_log_pos=154;

mac查看ip地址的位置
在这里插入图片描述
执行完上面sql之后,输入命令开始主从复制

start slave;

查看从数据库的状态

show slave status\G

在这里插入图片描述
slave_IO_Running是用来拉取数据的
Slave_SQL_Running是用来执行sql的
这两个结果都要为yes才行

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

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

相关文章

力扣(LeetCode)38. 外观数列(C++)

双指针模拟 初始字符串 sss 已给定,根据 sss 构造下一个外观数列 ttt ,构造完毕, ststst ,循环 n−1n-1n−1 次,构造出一个外观数列。 构造步骤 : 令 jjj 指向当前元素 , kkk 从 jjj 往右,记录…

新库上线 | CnOpenData招聘公司基本信息扩展数据

招聘公司基本信息扩展数据 一、数据简介 线上招聘是指各公司将其岗位需求、工作地点能力要求和薪酬等招聘信息发布在互联网上,供求职者参考,以线上的方式进行招聘。线上招聘网站是通过互联网相关技术,集结这些线上招聘信息,帮助雇…

Linux下自动删除过期备份和自动异地备份的脚本

每天自动删除过期备份 首先编写一个简单的Shell脚本DeleteExpireBackup.sh: 1 2 3 4 5 6 7 #!/bin/bash # 修改需要删除的路径 location"/database/backup/" # 删除最后修改时间为30天以前的备份文件夹 find $location -mtime 30 -type d | xargs rm …

3dmax渲染大图有斑点怎么办?

嗨喽大家好,经常有后台私信问:3dmax渲染大图老是有斑点怎么办?而且斑点有白色的,还有绿色、黑色甚至彩色。怎么去除这些斑点呢? 其实以上的常见的斑点问题,大部分是灯光设置的问题。今天我们便来盘点下下面…

第二章:字节码指令集与解析案例

一、概述执行模型字节码与数据类型字节码指令分类加载与存储指令局部变量压栈指令常量入栈指令出栈装入局部变量表指令算术运算指令代码举例一代码举例二代码举例三:i 和 i 的区别比较指令的说明类型转换指令宽化类型转换(Widening Numeric Conversions)窄化类型转换…

指纹浏览器是什么?可以用来解决跨境电商的什么问题?

如果你是跨境电商中的一员,那我相信你肯定不陌生指纹浏览器吧!毕竟指纹浏览器可以说是每个跨境人必备的工具了,更别说它的一系列功能简直是为跨境电商商家量身打造的! 龙哥作为跨境老手,对指纹浏览器不要太熟悉&#x…

葡萄糖-顺铂Glucose-cisplatin|葡萄糖-聚乙二醇-顺铂cisplatin-PEG-Glucose

葡萄糖-顺铂Glucose-cisplatin|葡萄糖-聚乙二醇-顺铂cisplatin-PEG-Glucose 中文名称:葡萄糖-顺铂 英文名称:Glucose-cisplatin 别称:生物素修饰葡萄糖,生物素-葡萄糖 PEG接枝修饰葡萄糖 葡萄糖-聚乙二醇-顺铂 cisplatin-PE…

Go:命令行参数解析包 flag 简介

文章目录示例运行小结在 Golang 程序中有很多种方法来处理命令行参数。简单的情况下可以不使用任何库,直接处理 os.Args;其实 Golang 的标准库提供了 flag 包来处理命令行参数;还有第三方提供的处理命令行参数的库,比如 Pflag 等。…

【附源码】计算机毕业设计JAVA研究生推免系统

【附源码】计算机毕业设计JAVA研究生推免系统 目运行 环境项配置: Jdk1.8 Tomcat8.5 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: JAVA myba…

期货开户手机APP有哪些?

一、文华随身行 随身行是文华财经旗下APP软件,提供行情、图表、交易、行情讨论等综合服务。随身行是主流的期货交易软件,已接通全国139家期货公司 不过目前使用文华随身行APP是需要付费的,是直接向软件公司付费,与期货公司无关&…

2022 裁员风潮着实有点大,席卷全球~

近期无论国内外,裁员新闻接连不断,这次裁员风,给人的感觉,像是全球所有公司达成了 “某种协议”,行动上高度一致,开始接二连三的裁员,以往每年各个公司都有裁员,只是比例很小&#x…

【SpringBoot】SpringBoot+SpringSecurity+CAS实现单点登录

文章目录一.CAS的概述1.SSO2.CAS3.概念二.CAS的流程三.CAS服务端部署1.下载地址2.源码打包3.部署运行4. java.io.FileNotFoundException: \etc\cas\thekeystore (系统找不到指定的文件。)四.CAS的定制1.定制数据源2.兼容 HTTP3.定制登录页五.SpringBoot集成CAS1.工程创建2.导入…

2022年程序员“生存报告”出炉,仅23%月薪不足1万,你在什么段位?

转眼2022年仅剩2个月,在充满未知的这一年,程序员群体的职场现状如何? 近日,拉勾招聘数据研究院对程序员群体开展深度调研后,发布了一份《2022程序员群体职场洞察报告》(以下简称报告)&#xff…

深入理解 MultipartFile 处理文件

在Java中处理文件向来是一种不是很方便的操作,然后随着Spring框架的崛起,使用Spring框架中的MultipartFile来处理文件也是件很方便的事了,今天就为大家带来剖析MultipartFile的神秘面纱。MultipartFile本身并没有很复杂的结构,也正…

DBCO点击试剂特点:DBCO-PEG12-OH,DBCO-PEG12-Tos,DBCO-TCO

DBCO 试剂是一类点击化学标记试剂,含有非常活泼的 DBCO((二苯并环辛炔)基团,DBCO 试剂可以通过无铜点击化学与叠氮化物标记的分子或生物分子发生反应。DBCO 点击化学可以在水性缓冲液中运行,也可以在有机溶…

pyinstaller打包python脚本为exe可执行文件实例:错误排查小脚本

根据TIOBE全球编程语言排名,python是目前世界排名第一的编程语言。考虑到代码及数据的保密性,以及其他人电脑上可能没有装python环境,因此我们需要将自己编写的python脚本打包成exe格式的可执行文件发送给其他人使用。小编推荐一款名为pyinst…

Spring Boot 2.7.5 整合 Swagger 3 实现可交互的后端接口文档

文章目录前言集成访问代码参考文献前言 问: 什么是 OpenAPI? 答: OpenAPI 规范(OAS),是定义一个标准的、与具体编程语言无关的RESTful API的规范。OpenAPI 规范使得人类和计算机都能在“不接触任何程序源代码和文档、不监控网络通信”的情…

智能音箱中采用的数字音频功放

智能改变生活,随高科技的发展智能科技已经融入我们生活当中,智能家居和IOT物联网的发展越来越深入人心,从手机到家电在到家居因为智能化而都在慢慢的改变;智能音响,足不出户,看尽大千世界;一屋一…

《RO 仙境传说》 Game Jam 获奖名单公布!

一睹获胜者的作品吧~ 《RO 仙境传说》Game Jam 已经圆满结束!许多社区成员都创造了非常棒的体验。 祝贺所有获奖者,并感谢每一位参与并分享了想法的用户。 接下来将公布综合优秀奖、最佳创意奖和最佳设计奖的得主!获奖名单是由 Th…

第 21 章 InnoDB Cluster

第21章 InnoDB Cluster 文章目录第21章 InnoDB Cluster本章介绍 MySQL InnoDB Cluster ,它整合了 MySQL 多项技术,使您能够部署和管理 MySQL 的完整集成的高可用解决方案。本内容是 InnoDB Cluster 的高级概述,有关完整文档,请参阅…