Lnmp架构之mysql数据库实战1
1、mysql数据库编译

编译成功

2、mysql数据库初始化
配置数据目录

全局文件修改内容


生成初始化密码并进行初始化设定


3、mysql主从复制

什么是mysql的主从复制?
MySQL的主从复制是一种常见的数据库复制技术,用于将一个数据库服务器(称为主服务器)上的数据同步到另一个或多个数据库服务器(称为从服务器)上。
在主从复制中,主服务器负责处理所有的写入操作(INSERT、UPDATE、DELETE等),同时将这些写入操作记录在二进制日志(binary log)中。从服务器通过连接到主服务器并从二进制日志获取数据变更记录,然后将这些操作应用到自己的数据库中。
mysql复制的原理
1. 主库(Master服务器)记录二进制日志(Binary Log):主库负责处理所有的写操作(INSERT、UPDATE、DELETE等),并将这些操作记录在二进制日志中。二进制日志包含了数据变更的详细信息,以便从库能够获取到。
2. 从库(Slave服务器)连接主库:从库通过配置主库的IP地址和认证信息来连接主库。
3. 从库生成I/O线程(I/O Thread):从库启动时,生成一个I/O线程。I/O线程负责连接到主库,并监听主库上的二进制日志事件。它会一直读取主库的二进制日志,将数据写入从库的中继日志(Relay Log)中。
4. 主库接收从库连接请求:主库收到从库的连接请求后,会验证从库的身份,并将需要复制的二进制日志发送给从库的I/O线程。
5. I/O线程将事件写入中继日志:I/O线程将从主库获取到的二进制日志事件写入从库的中继日志中。中继日志是从库上的一系列二进制日志文件,它保存了从主库同步过来的数据变更事件。
6. 从库生成SQL线程(SQL Thread):同时,从库还会生成一个SQL线程。SQL线程负责读取中继日志中的二进制日志事件,并在从库上执行这些事件。它会将事件转换为对应的SQL语句,然后逐条执行这些SQL语句,将数据变更应用到从库的数据库中。
7. SQL线程执行中继日志中的事件:SQL线程会读取中继日志中的二进制日志事件,并逐条解析执行这些事件。它将事件转换为相应的SQL语句,并在从库上执行这些SQL语句,将数据变更应用到从库的数据库中。
8. 从库周期性地重复上述步骤:从库会周期性地重复执行上述步骤,以保持与主库的同步。I/O线程会持续监听主库的二进制日志事件,将其写入中继日志;SQL线程会读取中继日志中的事件并执行。通过不断重复这个过程,从库能够保持与主库的数据一致性。
配置master服务器



配置slave服务器
在server2上(已安装设定好mysql服务)


测试:
在master(主服务器)上

在server2(从服务器)上实现同步

当master上有数据时的同步方法
将server1和server2上的数据文件复制到server3上


在server3上



在server1 master 上
注意:生产环境中备份时需要锁表,保证备份前后的数据一致 mysql> FLUSH TABLES WITH READ LOCK;
备份后再解锁 mysql> UNLOCK TABLES;
注意:mysqldump命令备份的数据文件,在还原时先DROP TABLE,需要合并数据时需要删除此语句

在server3上



测试:


只有读的操作远远多于写的操作时才会用一主多从,数据库的外部需要接入高可用负载均衡;
缺陷:
master 端Binlog是直接考给slave的是异步操作
异步操作:master 端更新完了之后直接发给slave,master不需要知道slave端是否接收到,这样就会导致比如master端到slave端网络出现问题;意思就是master可以成功运作,也把日志发给slave 但是由于网络的问题,这个数据没有真正发送给slave端,那么这时候master down掉之后,slave端开始接管的时候 数据就会丢失。

在IO中有个内置的半同步模式

在IO中,有个内置的半gtid模式
切到gtid模式
master配置

slave配置(所有节点配置相同)

重新配置+重新启动


在gtid模式下,当master有问题的时候,就会挑离它id最近的slave作为master,供给下面的slave,以此类推。
通过设置gtid 大大降低复杂度。通过全局的方式,不用关心它的日志文件和binlog号,gtid 只关心它的下一跳是谁就行,就是gtid next。
master端添加数据

slave即可查询到gtid标识号

server3也可以

半同步模式(必须要走gtid)
解决IO
给master端安装半同步模块

slave端也安装半同步模块并激活重启IO线程

将半同步参数写入配置文件,确保重启后依然生效(master和salve都由设置)


测试

当停掉所有的slave端的IO线程:

此时,再在master端插入数据

想要数据保持高度一致性,要将等待时间设定成无穷大,表示master只要没收到slave端返回信息则就会一直等待,不会输出错误数据。
当所有的slave节点再次启动IO线程,mysql会自动切回半同步模式
mysql> START SLAVE IO_THREAD;
Query OK, 0 rows affected (0.00 sec)
并行复制(提高效率)
默认slave节点sql单线程回放,会造成数据同步延时较高
slave节点添加以下参数解决,不需要在master端设定,因为sql线程只存在于slave端


注意:所有的slave端都要添加并行参数
延迟复制
如果在master端误操作,可以在slave端进行数据恢复,只需要停掉sql线程;
延迟只是延迟了sql ,IO已经复制过来了 ,数据已经在中继日志里保存起来了,只不过sql没有进行回放。

相关文章:
Lnmp架构之mysql数据库实战1
1、mysql数据库编译 编译成功 2、mysql数据库初始化 配置数据目录 全局文件修改内容 生成初始化密码并进行初始化设定 3、mysql主从复制 什么是mysql的主从复制? MySQL的主从复制是一种常见的数据库复制技术,用于将一个数据库服务器(称为主…...
ChatGLM 大模型炼丹手册-理论篇
序言一)大还丹的崛起 在修真界,人们一直渴望拥有一种神奇的「万能型丹药」,可包治百病。 但遗憾的是,在很长的一段时间里,炼丹师们只能对症炼药。每一枚丹药,都是特效药,专治一种病。这样就导致,每遇到一个新的问题,都需要针对性的炼制,炼丹师们苦不堪言,修真者们吐…...
Spring Boot集成Redis实现数据缓存
🌿欢迎来到衍生星球的CSDN博文🌿 🍁本文主要学习Spring Boot集成Redis实现数据缓存 🍁 🌱我是衍生星球,一个从事集成开发的打工人🌱 ⭐️喜欢的朋友可以关注一下🫰🫰&…...
CentOS 7 安装Libevent
CentOS 7 安装Libevent 1.下载安装包 新版本是libevent-2.1.12-stable.tar.gz。(如果你的系统已经安装了libevent,可以不用安装) 官网:http://www.monkey.org/~provos/libevent/ 2.创建目录 # mkdir libevent-stable 3.解压 …...
线性代数的本质——几何角度理解
B站网课来自 3Blue1Brown的翻译版,看完醍醐灌顶,强烈推荐: 线性代数的本质 本课程从几何的角度翻译了线代中各种核心的概念及性质,对做题和练习效果有实质性的提高,下面博主来总结一下自己的理解 1.向量的本质 在物…...
SSH key 运作方式
1、本地创建SSH key pairs 2、把public key上传到网站服务器(如GitHub 3、当使用ssh方式连接时 本地SSH client向远端请求ssh连接远端发来random data要求加密本地ssh client用private key加密,把加密的data发送过去(不发送private key远端接…...
【基于MBD开发模式的matlab持续集成(一)】
基于MBD开发模式的matlab持续集成 引言 或许是感受到行业内卷的愈加激烈,在传统制造和高新技术相结合的新能源领域对软件工程开发的要求也愈加提高,尤其在互联网已经大行 其道的敏捷开发,便顺其自然的被新能源的老板们所看重。 概述 本文…...
Linux学习记录——이십팔 网络基础(1)
文章目录 1、了解2、网络协议栈3、TCP/IP模型4、网络传输1、同一局域网(子网)2、局域网通信原理3、跨一个路由器的两个子网4、其它 详细的网络发展历史就不写了 1、了解 为什么会出现网络?一开始多个计算机之间想要共享文件,就得…...
CSS动效合集之实现气泡发散动画
前言 👏CSS动效合集之实现气泡发散动画,速速来Get吧~ 🥇文末分享源代码。记得点赞关注收藏! 1.实现效果 2.实现步骤 定义一个数组bubbles,用来存储气泡列表的基本新,w表示宽高,x表示绝对定位…...
六、串口通信
六、串口通信 串口接口介绍使用串口向电脑发送数据电脑发送数据控制LED灯 串口接口介绍 SBUF是串口数据缓存器,物理上是两个独立的寄存器,但占用相同的地址。写操作时,写入的是发送寄存器;读操作时,读出的是接收寄存器…...
如何将 JavaScript Excel XLSX 查看器添加到Web应用程序
在 JavaScript 中创建 Excel 查看器可能是一项艰巨的任务,但使用 SpreadJS JavaScript 电子表格,创建过程要简单得多。在本教程博客中,我们将向您展示如何使用 SpreadJS 的强大功能来创建一个查看器,该查看器允许您在 Web 浏览器中…...
网安周报|CISA发布增强开源安全性的计划
1、CISA发布增强开源安全性的计划 美国一家领先的安全机构发布了一项期待已久的计划,详细说明了它将如何增强联邦政府和整个生态系统的开源安全性。美国网络安全和基础设施安全局(CISA)开源软件安全路线图在安全开源峰会上发布。据估计&#…...
使用 Docker 安装 Elasticsearch (本地环境 M1 Mac)
Elasticsearchkibana下载安装 docker pull elasticsearch:7.16.2docker run --name es -d -e ES_JAVA_OPTS“-Xms512m -Xmx512m” -e “discovery.typesingle-node” -p 9200:9200 -p 9300:9300 elasticsearch:7.16.2docker pull kibana:7.16.2docker run --name kibana -e EL…...
Visual Studio中MD与MT的区别及运行库类型选择
MT与MD的区别 /MT:是multithread-static version,是多线程静态版本的意思,项目会使用运行时库的多线程静态版本,编译器会将LIBCMT.lib放入.obj文件中,以便链接器使用LIBCMT.lib解析外部符号;/MTdÿ…...
Vue3函数式编程
文章目录 前言一、三种编程风格1.template2.jsx/tsx3.函数式编写风格 二、函数式编程1.使用场景2.参数3.例子3.render渲染函数 总结 前言 本文主要记录vue3中的函数式编程以及其他编程风格的简介 一、三种编程风格 1.template Vue 使用一种基于 HTML 的模板语法,…...
【逗老师的无线电】艾德克斯TTL串口转网口
最近手搓了一个可以用于艾德克斯ITECH电源或者电子负载的TTL串口转网口的模块,用上之后,上位机软件就可以配置以太网IP连接设备啦。就像这样。 一、ITECH TTL接口定义 二、整体逻辑 嗯,就这么简单。IT9000控制软件的Ethernet功能就是直接S…...
如何修改jupyter notebook默认打开路径
1、用jupyter notebook在其他位置打开自己的ipython项目: jupyter notebook是一个很好用的工具,可以保存运行结果,还可以给项目添加很多可视化操作与介绍文字。安装anaconda后,jupyter notebook就会自动安装,点开它会…...
【leetcode】数组排序
【leetcode】数组排序 task03 主要了解了数组中常见的排序方法: 1.常见数组排序方法 冒泡排序(Bubble Sort): 冒泡排序是一种简单的排序算法,它多次遍历数组,比较相邻的元素并交换它们,直到整…...
【C刷题训练营】第四讲(打好基础很重要)
前言: 大家好,这是c语言刷题训练营的第四讲,打好基础便于对c语言语法与算法思维的提高,感谢你的来访与支持! 💥🎈个人主页:Dream_Chaser~ 🎈💥 ✨✨刷题专栏…...
MySQL 某个字段存储不了内容
1. 原因 某个字段存储的内容过大 2. 解决 修改max_allowed_packet参数 max_allowed_packet参数是指mysql服务器端在一次传送数据包的过程当中最大允许的数据包大小。如果超过了设置的最大长度,则会数据库保持数据失败。 2.1 查询参数 show variables like %max…...
【人工智能】神经网络的优化器optimizer(二):Adagrad自适应学习率优化器
一.自适应梯度算法Adagrad概述 Adagrad(Adaptive Gradient Algorithm)是一种自适应学习率的优化算法,由Duchi等人在2011年提出。其核心思想是针对不同参数自动调整学习率,适合处理稀疏数据和不同参数梯度差异较大的场景。Adagrad通…...
深入理解JavaScript设计模式之单例模式
目录 什么是单例模式为什么需要单例模式常见应用场景包括 单例模式实现透明单例模式实现不透明单例模式用代理实现单例模式javaScript中的单例模式使用命名空间使用闭包封装私有变量 惰性单例通用的惰性单例 结语 什么是单例模式 单例模式(Singleton Pattern&#…...
质量体系的重要
质量体系是为确保产品、服务或过程质量满足规定要求,由相互关联的要素构成的有机整体。其核心内容可归纳为以下五个方面: 🏛️ 一、组织架构与职责 质量体系明确组织内各部门、岗位的职责与权限,形成层级清晰的管理网络…...
汇编常见指令
汇编常见指令 一、数据传送指令 指令功能示例说明MOV数据传送MOV EAX, 10将立即数 10 送入 EAXMOV [EBX], EAX将 EAX 值存入 EBX 指向的内存LEA加载有效地址LEA EAX, [EBX4]将 EBX4 的地址存入 EAX(不访问内存)XCHG交换数据XCHG EAX, EBX交换 EAX 和 EB…...
Spring数据访问模块设计
前面我们已经完成了IoC和web模块的设计,聪明的码友立马就知道了,该到数据访问模块了,要不就这俩玩个6啊,查库势在必行,至此,它来了。 一、核心设计理念 1、痛点在哪 应用离不开数据(数据库、No…...
初探Service服务发现机制
1.Service简介 Service是将运行在一组Pod上的应用程序发布为网络服务的抽象方法。 主要功能:服务发现和负载均衡。 Service类型的包括ClusterIP类型、NodePort类型、LoadBalancer类型、ExternalName类型 2.Endpoints简介 Endpoints是一种Kubernetes资源…...
jmeter聚合报告中参数详解
sample、average、min、max、90%line、95%line,99%line、Error错误率、吞吐量Thoughput、KB/sec每秒传输的数据量 sample(样本数) 表示测试中发送的请求数量,即测试执行了多少次请求。 单位,以个或者次数表示。 示例:…...
PostgreSQL——环境搭建
一、Linux # 安装 PostgreSQL 15 仓库 sudo dnf install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-$(rpm -E %{rhel})-x86_64/pgdg-redhat-repo-latest.noarch.rpm# 安装之前先确认是否已经存在PostgreSQL rpm -qa | grep postgres# 如果存在࿰…...
Golang——7、包与接口详解
包与接口详解 1、Golang包详解1.1、Golang中包的定义和介绍1.2、Golang包管理工具go mod1.3、Golang中自定义包1.4、Golang中使用第三包1.5、init函数 2、接口详解2.1、接口的定义2.2、空接口2.3、类型断言2.4、结构体值接收者和指针接收者实现接口的区别2.5、一个结构体实现多…...
AI语音助手的Python实现
引言 语音助手(如小爱同学、Siri)通过语音识别、自然语言处理(NLP)和语音合成技术,为用户提供直观、高效的交互体验。随着人工智能的普及,Python开发者可以利用开源库和AI模型,快速构建自定义语音助手。本文由浅入深,详细介绍如何使用Python开发AI语音助手,涵盖基础功…...
