开源数据库Mysql_DBA运维实战 (总结)
开源数据库Mysql_DBA运维实战 (总结)


SQL语句都包含哪些类型
DDL
DCL
DML
DQL
Yum 安装MySQL的配置文件
- 配置文件:/etc/my.cnf
- 日志目录:/var/log/mysqld.log
- 错误日志:/var/log/mysql/error.log
MySQL的主从切换
- 查看主从复制状态
- 停止主数据库的写入操作
- 记录当前二级制日志文件和位置
- 更新从数据库的配置
- 在新主数据库上启用写入操作
MySQL主从复制的步骤
MySQL主从复制是一种用于数据备份和负载均衡的机制,它允许在一个MySQL服务器(主服务器)上执行写操作,并将这些操作同步到其他一个或多个MySQL服务器(从服务器)。通过这种方式,可以提高数据库性能、可靠性和可扩展性。
MySQL主从复制所需的基本步骤:
1. 配置主服务器
在主服务器上,需要启用二进制日志记录(binlog)并设置唯一的服务器ID。二进制日志记录将捕获所有对数据库的写操作,而服务器ID将在主服务器和从服务器之间提供唯一标识符。2. 配置从服务器
在从服务器上,需要启用中继日志记录(relay log),并将其指定为主服务器的二进制日志位置。然后设置唯一的服务器ID,以便主服务器和从服务器之间进行正确的数据同步。3. 启动复制过程
在主服务器上,必须创建一个从服务器帐户,并授予复制权限。从服务器将使用此帐户连接到主服务器,并检查二进制日志以获取更改。在从服务器上,必须配置连接信息以确保与主服务器的正确通信。
完成这些步骤后,主服务器上的任何更改都将自动同步到从服务器。从服务器将成为可读副本,可以使用它来处理只读查询,而主服务器则处理写操作。
需要注意的是,在MySQL主从复制中,从服务器只能读取数据。如果要在从服务器上执行任何写操作,则必须将其作为主服务器启动,并且必须确保在切换时正确处理数据同步。
MySQL主从复制的原理
前提是作为主服务器角色的数据库服务器必须开启二进制(binlog)日志
原理: 主服务器上面的任何修改都会保存在二进制日志( Bin-log日志) 里面。 从服务器上面启动一个I/O线程, 连接到主服务器上面请求读取二进制(Bin-log)日志,然后把读取到的二进制日志写到本地的Realy-log(中继日志)里面。 从服务器上面同时开启一个SQL线程,读取Realy-log(中继日志),如果发现有更新立即把更新的内容在本机的数据库上面执行一遍。
MySQL主从延迟如何解决
网络优化:延迟问题可能与网络带宽和延迟有关。确保主从服务器之间的网络连接稳定,并优化网络带宽,可以减少复制延迟。
优化复制线程:MySQL主从复制中有一个I/O线程负责读取主服务器的二进制日志,另一个SQL线程负责应用日志到从服务器。优化这些复制线程的性能参数和配置,如增加线程数、调整缓冲区大小等,可以提高复制的效率。
减少主服务器的负载:如果主服务器的负载较高,可能会导致复制延迟。考虑优化主服务器的性能和负载,如调整查询优化、增加硬件资源等,以减轻主服务器的负载,提高复制性能。
优化从服务器的配置:从服务器的性能和配置也会影响复制延迟。确保从服务器具备足够的资源,如CPU、内存、磁盘等,并根据实际情况进行适当的配置优化,以提高复制性能。
监控和调优:定期监控主从复制的延迟情况,并分析延迟发生的原因。根据监控结果进行调优,如调整复制参数、优化查询语句、增加硬件资源等,以缩小复制延迟。
MySQL的优化操作
MySQL是一个常用的关系型数据库管理系统,对其进行优化操作可以提升数据库的性能和效率。
我们可以定期优化和重建索引,提高索引的性能和效率,使用合适的查询缓存机制,根据负载情况,调整MySQL配置参数,合理设计表结构,避免冗余数据,使用主从复制和主从集群来实现读写分离和负载均衡,以提高系统的可用性和性能
以下是一些常见的MySQL优化操作:
1. 索引优化:通过创建适当的索引来加快查询速度。可以使用`CREATE INDEX`语句创建索引,也可以使用`EXPLAIN`命令来分析查询语句的执行计划,找出需要创建索引的字段。
2. 查询优化:避免使用`SELECT *`查询所有字段,而是只选择需要的字段。使用`WHERE`子句限制查询的范围,避免全表扫描。使用`JOIN`语句来优化多表查询。
3. 配置优化:调整MySQL的配置参数来适应实际需求。例如,增加`innodb_buffer_pool_size`参数的值可以提高InnoDB存储引擎的性能。
4. 表结构优化:避免使用过多的冗余字段和表,合理设计表结构。使用合适的数据类型来存储数据,避免浪费空间。
5. 缓存优化:使用缓存来减少对数据库的访问。可以使用MySQL自带的查询缓存功能,也可以使用外部缓存系统如Redis。
6. 查询缓存的使用:MySQL自带的查询缓存功能可以缓存查询结果,提高查询性能。但是在高并发环境下,查询缓存可能会导致性能问题,因此需要根据实际情况来决定是否启用查询缓存。
以上只是一些常见的MySQL优化操作,具体的优化策略需要根据实际情况进行调整。在进行优化操作之前,建议先进行性能测试和分析,找出瓶颈所在,并根据实际情况来选择合适的优化方法。
1. 选择合适的存储引擎: InnoDB
2. 选取磁盘读写速度较快的设备作为Mysql服务器
3. 充分使用索引
4. 增加慢查询日志功能
5. 频繁访问的数据,用缓存数据库解决
6. 单条查询最后增加 LIMIT 1,停止全表扫描
7. 设置最大连接数
8. 设置引擎的读写速度
MySQL如何备份
使用mysqldump命令导出mysql数据库的结构和数据,保存为sql文件
Mysqldump -u username -p password --all-databases > backup.sql
MySQL集群架构
集群目的
负载均衡 解决高并发
高可用HA 服务可用性
远程灾备 数据有效性
一主一从
主节点:负责接受客户端的写请求,并将写入数据同步到节点
从节点:只能读取数据,不能对数据库进行写操作,通过异步复制的方式,接受主节点的binlog,并在本地重放这些操作,实现与主库数据的同步
MySQL读写分离
定义: MySQL读写分离是指将数据库的读操作和写操作分别分配到不同的服务器上执 行,以提高服务器的整体性能。
实现方式: 一般实现MySQL读写分离可以通过在应用程序中手动编写读写分离代码或 使用第三方中间件,在应用程序与数据库之间增加一个代理层来实现。目前比较常用的 中间件有MHA、MaxScale、proxysql等。
原理: 读写分离的原理就是将所有的写操作都集中在一个master server上,而把读操 作分散到多个slave server中,并通过复制来保证数据的一致性。读写分离的优势在于 能够避免过多的查询操作对主服务器的影响,从而提高了应用程序的并发能力。
配置: 在配置MySQL的读写分离时,需要在应用程序中指定读写分离的地址和端口号, 并且要注意读操作是否会异常等问题。维护: 在维护MySQL的读写分离时,需要对主 服务器和从服务器都进行监控,尽可能降低延迟并确保数据的一致性。同时还需要做好 备份和恢复工作,以便在出现故障时能够迅速恢复。
MySQL的具体恢复流程
如果存在备份文件,可以从备份文件进行恢复,停止mysql,将备份文件复制到mysql目录下,启动mysql
相关文章:
开源数据库Mysql_DBA运维实战 (总结)
开源数据库Mysql_DBA运维实战 (总结) SQL语句都包含哪些类型 DDL DCL DML DQL Yum 安装MySQL的配置文件 配置文件:/etc/my.cnf日志目录:/var/log/mysqld.log错误日志:/var/log/mysql/error.log MySQL的主从切换 查看主…...
图神经网络与分子表征:1. 分子图和图神经网络基础
CSDN的朋友们大家好,好久没写系列文章了。 近期读了很多图神经网络(GNN)和分子表征(molecular representation)的论文,正好最近不是很忙,所以我决定把自己的学习过程记录下来,与大家…...
Spring Boot与Redisson的整合。分布式锁
Spring Boot与Redisson的整合可以帮助您在Spring Boot应用程序中使用分布式锁、缓存等功能。下面是一些基本步骤来整合Spring Boot与Redisson: 添加Maven/Gradle依赖: 在您的Spring Boot项目的pom.xml(Maven)或build.gradle&#…...
Lua中逻辑运算符and,or,not 区别与用法
在Lua中,逻辑运算符包括 and、or 和 not。它们用于对布尔值进行逻辑运算。 and运算符: 当同时满足两个表达式时,返回第二个表达式的值;否则,返回第一个表达式的值。如果第一个表 达式的值为false或nil,则…...
使用 spaCy 增强 NLP 管道
介绍 spaCy 是一个用于自然语言处理 (NLP) 的 Python 库。SpaCy 的 NLP 管道是免费且开源的。开发人员使用它来创建信息提取和自然语言理解系统,例如 Cython。使用该工具进行生产,拥有简洁且用户友好的 API。 如果您处理大量文本,您会想了解更多相关信息。例如,它是关于什…...
【HCIP】08.ISIS中间系统
链路状态协议,传递LSA信息ISIS基于数据链路层封装在OSI时,也有自己的网络层地址和自己的路由协议,即ISIS。之前的ISIS支持OSI的网络层地址,是为OSI中的CLNP(无连接网络协议)网络设计的路由协议,…...
Android 13 Framework 添加自定义的系统服务CustomService
目的: 添加自定义的系统服务,在自定义的服务中开发定制的API接口和功能,独立于系统核心服务,方便开发和维护。 开发环境:Android 13 MTK平台 涉及修改的文件如下 device/mediatek/sepolicy/base/private/service_contexts device/mediatek/sepolicy/base/vendor/platfo…...
前端食堂技术周刊第 95 期:Fresh 1.4、Rollup 迁移至 SWC计划、RSC Devtools、使用开源库的边界、AI 帮你讲论文
美味值:🌟🌟🌟🌟🌟 口味:冰葡美式 食堂技术周刊仓库地址:https://github.com/Geekhyt/weekly 大家好,我是童欧巴。欢迎来到前端食堂技术周刊,我们先来看下…...
【TypeScript】枚举类型
在 TypeScript 中,枚举(Enum)是一种用于定义命名常量集合的数据类型。枚举使代码更加可读和可维护,因为它们为一组具有语义的值提供了命名。 以下是 TypeScript 中枚举的基本用法和特点: // 声明一个枚举 enum Direc…...
快速通过华为HCIP认证
你可以按照以下步骤进行准备和学习: 华为认证课程和资料--提取码:1234https://pan.baidu.com/s/1YJhD8QbocHhZ30MvrKm8hg 了解认证要求:查看华为官方网站上的HCIP认证要求和考试大纲,了解考试的内容、考试形式和考试要求。 学习相关知识&am…...
派森 #P124. 公式计算
描述 输入数正整数m,输出0! 1! ...m!的计算结果。 样例 输入 5 输出 154 代码: m int(input()) result 1 factorial 1 for i in range(1, m 1):factorial * iresult factorial print(result) # 法2def factorial(n):"""计…...
opencv进阶14-Harris角点检测-cv2.cornerHarris
类似于人的眼睛和大脑,OpenCV可以检测图像的主要特征并将这 些特征提取到所谓的图像描述符中。然后,可以将这些特征作为数据 库,支持基于图像的搜索。此外,我们可以使用关键点将图像拼接起 来,组成更大的图像。&#x…...
JVM中对象和GC Root之间的四种引用关系
1. 强引用 只有所有 GC Roots 对象都不通过【强引用】引用该对象,该对象才能被垃圾回收 由GC Root直接new出来的对象是强引用,只有当GC Root不再引用该对象的时候,才会被回收 例子: List<String> list new ArrayList<&…...
【李宏毅机器学习】注意力机制
输出 我们会遇到不同的任务,针对输出的不一样,我们对任务进行划分 给多少输出多少 给一堆向量,输出一个label,比如说情感分析 还有一种任务是由机器决定的要输出多少个label,seq2seq的任务就是这种,翻译也…...
Nginx使用keepalived配置VIP
VIP常用于负载均衡的高可用,使用VIP可以给多个主机绑定一个IP,这样,当某个负载应用挂了之后,可以自动切到另一个负载。 我这里是在k8s环境中做的测试,集群中有6个节点,我给140和141两个节点配置VIP。 1. 安…...
C语言编写图形界面
文章目录 环境使用库基础概念句柄 程序的入口创建窗口定义窗口类注册窗口类创建窗口 完整代码运行效果 环境 使用的是VSCode MinGW; 使用库 我们使用windows.h库来实现图形化界面。 头文件如下: #include <windows.h>windows.h是 Windows 操作…...
K8s学习笔记3
Kubernetes功能: Kubernetes是一个轻便的可扩展的开源平台,用于管理容器化应用和服务。通过Kubernetes能够进行应用的自动化部署和扩缩容。在Kubernetes中,会将组成应用的容器组合成一个逻辑单元以更易管理和发现。Kubernetes积累了作为Goog…...
ceph集群的扩容缩容
文章目录 集群扩容添加osd使用ceph-deploy工具手动添加 添加节点新节点前期准备新节点安装ceph,出现版本冲突 ceph-deploy增加节点 集群缩容删除osd删除节点 添加monitor节点删除monitor节点使用ceph-deploy卸载集群 实验所用虚拟机均为Centos 7.6系统,8…...
gremlin安装使用 详细步骤
gremlin是一个图数据库查询工具,注意他只是一个工具类似于dbeaver,navicat,sqlyog,是专门来分析图数据库的一个工具。 下载 下载地址Apache Download Mirrors 省事的可以直接 wget https://www.apache.org/dyn/closer.lua/tin…...
Java语言怎么编写一个程序计算出租车的运输费用:出租车起步15公里以内20块钱,需要支付调头费用
下面是一个Java语言编写的计算出租车运输费用的程序: java import java.util.Scanner; public class TaxiFareCalculator { public static void main(String[] args) { Scanner input new Scanner(System.in); System.out.print("请输入出租车行驶的里程&…...
基于ASP.NET+ SQL Server实现(Web)医院信息管理系统
医院信息管理系统 1. 课程设计内容 在 visual studio 2017 平台上,开发一个“医院信息管理系统”Web 程序。 2. 课程设计目的 综合运用 c#.net 知识,在 vs 2017 平台上,进行 ASP.NET 应用程序和简易网站的开发;初步熟悉开发一…...
MongoDB学习和应用(高效的非关系型数据库)
一丶 MongoDB简介 对于社交类软件的功能,我们需要对它的功能特点进行分析: 数据量会随着用户数增大而增大读多写少价值较低非好友看不到其动态信息地理位置的查询… 针对以上特点进行分析各大存储工具: mysql:关系型数据库&am…...
QMC5883L的驱动
简介 本篇文章的代码已经上传到了github上面,开源代码 作为一个电子罗盘模块,我们可以通过I2C从中获取偏航角yaw,相对于六轴陀螺仪的yaw,qmc5883l几乎不会零飘并且成本较低。 参考资料 QMC5883L磁场传感器驱动 QMC5883L磁力计…...
Java 加密常用的各种算法及其选择
在数字化时代,数据安全至关重要,Java 作为广泛应用的编程语言,提供了丰富的加密算法来保障数据的保密性、完整性和真实性。了解这些常用加密算法及其适用场景,有助于开发者在不同的业务需求中做出正确的选择。 一、对称加密算法…...
Rapidio门铃消息FIFO溢出机制
关于RapidIO门铃消息FIFO的溢出机制及其与中断抖动的关系,以下是深入解析: 门铃FIFO溢出的本质 在RapidIO系统中,门铃消息FIFO是硬件控制器内部的缓冲区,用于临时存储接收到的门铃消息(Doorbell Message)。…...
Angular微前端架构:Module Federation + ngx-build-plus (Webpack)
以下是一个完整的 Angular 微前端示例,其中使用的是 Module Federation 和 npx-build-plus 实现了主应用(Shell)与子应用(Remote)的集成。 🛠️ 项目结构 angular-mf/ ├── shell-app/ # 主应用&…...
Yolov8 目标检测蒸馏学习记录
yolov8系列模型蒸馏基本流程,代码下载:这里本人提交了一个demo:djdll/Yolov8_Distillation: Yolov8轻量化_蒸馏代码实现 在轻量化模型设计中,**知识蒸馏(Knowledge Distillation)**被广泛应用,作为提升模型…...
Java求职者面试指南:计算机基础与源码原理深度解析
Java求职者面试指南:计算机基础与源码原理深度解析 第一轮提问:基础概念问题 1. 请解释什么是进程和线程的区别? 面试官:进程是程序的一次执行过程,是系统进行资源分配和调度的基本单位;而线程是进程中的…...
STM32---外部32.768K晶振(LSE)无法起振问题
晶振是否起振主要就检查两个1、晶振与MCU是否兼容;2、晶振的负载电容是否匹配 目录 一、判断晶振与MCU是否兼容 二、判断负载电容是否匹配 1. 晶振负载电容(CL)与匹配电容(CL1、CL2)的关系 2. 如何选择 CL1 和 CL…...
Java数组Arrays操作全攻略
Arrays类的概述 Java中的Arrays类位于java.util包中,提供了一系列静态方法用于操作数组(如排序、搜索、填充、比较等)。这些方法适用于基本类型数组和对象数组。 常用成员方法及代码示例 排序(sort) 对数组进行升序…...
