mysql面试题七(集群)

目录

1.mySQL 中有哪些常见日志

错误日志(Error Log)

二进制日志(Binary Log, Binlog)

重做日志(Redo Log)

回滚日志(Undo Log)

慢查询日志(Slow Query Log)

一般查询日志(General Query Log)

中继日志(Relay Log)

2.mysql主从复制

主从复制原理

主从复制配置步骤

注意事项

3.异步复制和半同步

异步复制(Asynchronous Replication)

半同步复制(Semi-Synchronous Replication)

4.mysql 高可用方案有哪些


1.mySQL 中有哪些常见日志

MySQL 中有多种日志,它们各自承担着不同的功能,对于数据库的运行、故障诊断、数据恢复、性能分析和复制等都有着重要作用。以下列举了 MySQL 中常见的几种日志:

  1. 错误日志(Error Log)

    • 作用:记录 MySQL 服务器启动、运行过程中的错误信息、警告消息和其他重要事件。它是排查数据库问题的第一手资料,帮助管理员了解服务器运行状态和定位问题。
    • 配置:通过 log_error 参数指定错误日志文件的位置。
  2. 二进制日志(Binary Log, Binlog)

    • 作用:记录数据库中所有更改数据的逻辑操作(如 INSERTUPDATEDELETECREATE TABLE 等),主要用于数据复制(主从复制、多源复制)和数据恢复(基于时间点的恢复、增量备份)。Binlog 是逻辑日志,记录的是 SQL 语句或其等价事件。
    • 配置:通过 log_bin 参数开启二进制日志,binlog_format 参数设置日志格式(STATEMENT、ROW、MIXED),log_bin_basename 参数指定日志文件的基本名,max_binlog_size 设置单个日志文件的最大尺寸。
  3. 重做日志(Redo Log)

    • 作用:InnoDB 存储引擎特有的日志,记录对数据页的物理更改操作。重做日志用于崩溃恢复,确保事务的持久性。即使在服务器突然宕机的情况下,也能通过重播重做日志将未写入数据文件的已提交事务的更改恢复出来。
    • 配置:由 InnoDB 自动管理,通常不需要显式配置。可通过 innodb_log_file_size 设置单个日志文件的大小,innodb_log_files_in_group 设置日志文件组中文件的数量,innodb_flush_log_at_trx_commit 控制日志刷新到磁盘的频率。
  4. 回滚日志(Undo Log)

    • 作用:InnoDB 存储引擎用于实现事务的原子性和隔离性。回滚日志记录了事务对数据的旧版本,用于在事务回滚时撤销已做的更改,以及在多版本并发控制(MVCC)中为其他事务提供一致性读视图。
    • 配置:由 InnoDB 自动管理,通常不需要显式配置。可通过 innodb_undo_tablespacesinnodb_undo_logs 等参数调整回滚日志的空间管理策略。
  5. 慢查询日志(Slow Query Log)

    • 作用:记录执行时间超过指定阈值(由 long_query_time 参数设定)的 SQL 查询语句,以及没有使用到索引的查询。慢查询日志是优化查询性能的重要工具,帮助识别和改进数据库中的低效查询。
    • 配置:通过 slow_query_log 参数开启慢查询日志,slow_query_log_file 参数指定日志文件路径。
  6. 一般查询日志(General Query Log)

    • 作用:记录所有对 MySQL 服务器的连接、断开以及每个连接上执行的所有 SQL 语句(包括成功的、失败的和不产生任何表更改的查询)。一般查询日志用于审计和调试,但因其记录量大,通常仅在诊断问题时临时开启。
    • 配置:通过 general_log 参数开启一般查询日志,general_log_file 参数指定日志文件路径。
  7. 中继日志(Relay Log)

    • 作用:在主从复制环境中,从服务器接收主服务器的二进制日志事件后,将其写入本地的中继日志中,然后由 SQL 线程从中继日志中读取事件并应用到从服务器的数据库中。中继日志是主从复制过程中的中间传递环节。
    • 配置:在从服务器上自动创建和管理,一般无需显式配置。可通过 relay_logrelay_log_info_file 等参数调整中继日志的相关设置。

以上就是 MySQL 中常见的日志类型及其作用。正确配置和使用这些日志对于监控数据库运行状况、诊断问题、优化性能、实现数据复制以及确保数据一致性至关重要。在实际使用中,应根据需求合理启用和管理相关日志,同时注意日志文件的大小和数量,避免对系统资源造成过大压力。

2.mysql主从复制

MySQL 主从复制(Master-Slave Replication)是一种数据同步技术,通过将主数据库(Master)的数据变更自动复制到一个或多个从数据库(Slave),实现数据的分布式存储、负载均衡、容灾备份和读写分离等功能。以下是 MySQL 主从复制的基本原理、配置步骤和注意事项:

主从复制原理

  1. 二进制日志(Binlog):主库将所有更改数据的 SQL 语句(或等价的事件)记录到二进制日志中。这些日志记录了数据库的逻辑更改操作,是主从复制的基础。

  2. 复制线程

    • IO 线程(Slave IO Thread):从库启动一个 IO 线程,连接到主库,请求并接收主库的二进制日志事件。
    • SQL 线程(Slave SQL Thread):从库接收到二进制日志事件后,启动 SQL 线程,将这些事件在从库上按顺序执行,实现数据的同步。
  3. 复制过程

    • 主库:执行客户端提交的事务,将更改记录到二进制日志。
    • 从库:IO 线程读取主库的二进制日志事件并写入本地的中继日志(Relay Log);SQL 线程从中继日志中读取并执行事件,更新从库数据。
    • 心跳与确认:主从之间通过定期发送心跳包保持连接,从库在接收到事件并执行后向主库发送确认信息。

主从复制配置步骤

  1. 主库配置

    • 开启二进制日志:设置 log_bin 参数启用二进制日志。
    • 设置服务器唯一ID:通过 server-id 参数为每个服务器分配一个唯一的标识符。
  2. 从库配置

    • 设置服务器ID:与主库不同,避免冲突。
    • 指定主库信息:通过 change master to 语句指定主库的主机名/IP、端口、用户名、密码以及要从哪个二进制日志文件和位置开始复制。
  3. 启动复制

    • 从库启动复制:在从库上执行 start slave 命令启动复制线程。
    • 检查复制状态:使用 show slave status 命令检查复制是否正常进行。

注意事项

  • 数据一致性:在设置主从复制前,确保主从库的数据一致。通常需要进行全量备份恢复或使用 mysqldump 导出主库数据导入从库。

  • 复制延迟:从库的更新通常会滞后于主库,延迟取决于网络延迟、从库的处理能力等因素。对于实时性要求较高的应用,需考虑复制延迟的影响。

  • 故障转移与恢复:主库故障时,可将从库提升为主库(手动或自动),但需要注意数据的一致性和同步问题。主库恢复后,可能需要重新配置复制链路或进行数据同步。

  • 读写分离:通过主从复制实现读写分离,将读操作导向从库,写操作仍由主库处理,可以减轻主库压力,提高系统整体性能。

  • 监控与维护:定期检查复制状态,监控主从延迟,及时处理复制中断、数据不一致等问题。对主从库的性能、磁盘空间、日志文件等进行常规维护。

  • 安全:确保主从间复制用户的权限适当,使用安全的连接方式(如 SSL),防止数据在传输过程中被窃取。

总之,MySQL 主从复制通过复制主库的二进制日志到从库并执行,实现了数据的异步复制和分布式存储。正确配置和管理主从复制能够提高系统的可用性、扩展性和数据安全性,是大规模数据库部署和管理中的重要技术手段。

3.异步复制和半同步

MySQL 中的异步复制(Asynchronous Replication)和半同步复制(Semi-Synchronous Replication)是两种不同的数据复制模式,它们决定了主库在处理客户端事务提交后的不同行为以及与从库数据同步的严格程度。

异步复制(Asynchronous Replication)

特点与工作原理

  • 非阻塞:主库在接收到客户端的写请求并完成事务处理后,立即向客户端返回确认(即提交事务),无需等待从库的任何响应。这意味着主库在事务提交后即刻释放资源,继续处理后续请求,无需等待数据复制到从库。
  • 延时:由于主库不等待从库确认,数据同步到从库存在一定的延迟,延迟时间取决于网络状况、从库处理速度等因素。
  • 风险:在异步复制模式下,如果主库在数据尚未完全复制到从库时发生故障,可能导致从库数据落后于主库,即数据不一致。在故障切换时,未复制到从库的事务可能丢失。

适用场景

  • 对数据一致性要求相对较低,允许一定时间窗口内的数据延迟。
  • 对主库性能敏感,追求最大化写入吞吐量。
  • 可接受在主库故障时可能存在的少量数据损失风险。

半同步复制(Semi-Synchronous Replication)

特点与工作原理

  • 部分阻塞:主库在接收到客户端的写请求并完成事务处理后,不立即返回确认给客户端,而是等待至少一个从库(或满足特定条件的从库集合)接收并写入其中继日志(Relay Log)后,才向客户端返回确认。
  • 确认机制:主库上的半同步插件会在事务提交后等待从库的确认信号(Acknowledge),确保至少有一个从库已接收事务数据,降低了数据丢失的风险。
  • 延迟与性能折衷:相较于异步复制,半同步复制增加了对从库响应的等待时间,可能导致主库写入性能下降,但显著提高了数据一致性。在大多数情况下,这个等待时间是短暂的,不会对系统整体性能造成显著影响。
  • 故障处理:如果从库未能及时响应,半同步复制可以配置超时策略,超过指定时间后降级为异步复制,以避免主库长时间阻塞。这种机制在一定程度上兼顾了数据安全性和系统可用性。

适用场景

  • 对数据一致性要求较高,无法接受长时间的数据延迟。
  • 能够接受一定程度的写入性能降低以换取更高的数据安全性。
  • 需要在主库故障时最大限度地减少数据丢失的可能性。

总结来说,异步复制和半同步复制的主要区别在于主库在提交事务时对从库响应的依赖程度:

  • 异步复制以牺牲数据一致性为代价,换取更高的写入性能和更低的主库延迟,适用于对数据延迟容忍度较高、追求高性能写入的应用场景。
  • 半同步复制在保证较高数据一致性和降低数据丢失风险的同时,适度牺牲写入性能,适用于对数据安全性有较高要求、能够接受适度性能损失的业务环境。

4.mysql 高可用方案有哪些

MySQL高可用九种方案_mysql 高可用方案-CSDN博客

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

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

相关文章

截断堆积柱状图

本教程原文链接:截断堆积柱状图绘制教程 欢迎大家转载!!!! 本期教程 写在前面 堆积柱状图是柱状图的常见类型之一,也是平时使用概率较高的图形之一。我们前期发布了很多个柱状图的绘制教程,若你…

java学习笔记4

7. 二维数组 7.1 定义 二维数组及就是数组的嵌套,数组的元素还是数组; 二维数组是一个 元素为一维数组 的一维数组; 语法上Java支持多维数组,但从内存分配原理的角度看,Java中只有一维数组,没有多维数组; 7.2 二维数组的初始化和赋值 7.2.1 长度已知 数据类型[][] 数…

【工厂模式】简单工厂模式-简单例子

目录 一、简单介绍 二、未使用工厂模式之前 三、简单工厂模式 初始 优化 总结 一、简单介绍 工厂模式是一种软件设计模式,用于创建对象的方法。在工厂模式中,创建对象的逻辑被封装在一个单独的类中,该类负责根据特定条件或参数创建合适…

windows下使用命令uvicorn启动fastapi程序有乱码,方框形状奇怪字符

问题简述 执行命令uvicorn main:app --reload后出现的问题如图所示 这个问题非常容易解决! 原因是windows控制台 默认未开启 ANSI颜色的支持 那么我们只需要开启就可以了 轻松解决 1 按下winR 打开运行 2 输入regedit 点击确定编辑注册表 3 新建值 值的名称为…

探索PostCSS:打造定制化、前瞻性的现代CSS开发工作流

PostCSS,作为一个高度可扩展的CSS处理器,以其强大的插件系统和对CSS未来特性的前瞻支持,已经成为现代前端开发中的重要工具。本篇文章将深入探讨PostCSS的核心概念、工作原理、主要优势,以及如何利用它来提升CSS开发效率与代码质量…

vue3组件封装系列-表单请求

我们在开发一些后台管理系统时,总是会写很多的列表查询页面,如果不封装组件,就会无限的复制粘贴,而且页面很冗余,正常情况下,我们都是要把组件进行二次封装,来达到我们想要效果。这里我分享一下…

《中学科技》是什么级别的刊物?如何投稿?

《中学科技》是什么级别的刊物?如何投稿? 《中学科技》创刊于1976年,由上海世纪出版(集团)有限公司主管,上海科技教育出版社有限公司主办的省级学术期刊,《中学科技》以传播科技知识、启迪智慧…

Centos安装软件失败There are no enabled repos.

这个错出现的原因可能是:没有先安装wget源,就把源给备份了 解决方案: 下载对应版本repo文件, 放入/etc/yum.repos.d/里,下载地址:CentOS镜像使用帮助 查看自己CentOS的版本,下载对应的repo文件&#xff…

spring boot中的标注@Component、@Service等

让我告诉你什么叫水货。 一、水货横行 一直以来,我对Spring Boot项目中的标注,像Component啦、Service啦、Configuration啦,甚至Autowired啦,等等,都似懂非懂。Autowired与Resource有什么区别也不清楚。 个中原因&a…

LearnOpenGL(三)之GLSL

一、GLSL 着色器是使用一种叫GLSL的类C语言写成的。 着色器的开头总是要声明版本,接着是输入和输出变量、uniform 和main函数。每个着色器的入口点都是main函数,在这个函数中 我们处理所有的输入变量,并将结果输出到输出变量中。 二、数据…

XiaodiSec day026 Learn Note 小迪渗透学习笔记

XiaodiSec day026 Learn Note 小迪渗透学习笔记 记录得比较凌乱,不尽详细 day26 sql 注入 知识点 oracle & Mongodb 相关手动注入 开始 sqlmap 不支持 nosql –purge 清除缓存 –current-db 查看当前数据库 –dump -r 直接使用数据包访问,在…

2-Embedding例子:简单NN网络、迁移学习例子(glove语料预训练)

一、简单例子:构造简单NN网络生成Embedding 1、pytorch例子 2、tensorflow例子 # 1导入模块 import tensorflow as tf from tensorflow.keras.models import Sequential from tensorflow.keras.layers import Embedding import numpy as np# 2构建语料库 corpus[[…

4.15 day6 ARM

uart.c #include "uart4.h" void uart4_config() {RCC->MP_AHB4ENSETR | (0X1 << 6);//&#xff27;RCC->MP_AHB4ENSETR | (0X1 << 1);//BRCC->MP_APB1ENSETR | (0X1 << 16);//UART4 //管脚复用GPIOG->MODER & (~(0X3 << …

Linux命令接着学习

which命令&#xff0c;找到各种命令程序所处在的位置 语法&#xff1a;which查找的命令 那么对于我们想查找其他类型文件所在的位置&#xff0c;我们可以用到find命令 find命令 选项为-name&#xff0c;表示按照文件名进行查找 find命令中通配符 find命令和前面rm命令一样&…

MT3023 歌词中找单词

1.暴力 10/12 #include <bits/stdc.h> using namespace std; int n; string a[10005]; int main() {cin >> n;for (int i 0; i < n; i)cin >> a[i];string ll;cin >> ll;for (int i 0; i < n; i){string u a[i];int num 0;int j 0;for (in…

解线性方程组——追赶法解三对角方程组 | 北太天元

一、问题描述 对于线性方程组 A x b , A ( b 1 c 1 a 2 b 2 c 2 ⋱ ⋱ ⋱ ⋱ ⋱ ⋱ a n − 1 b n − 1 c n − 1 a n b n ) , b ( f 1 f 2 ⋮ f n ) Axb,\quad A\begin{pmatrix}b_1&c_1&&&&\\a_2&b_2&c_2&&&\\&\ddots&\d…

CentOS 7安装、卸载MySQL数据库(一)

说明&#xff1a;本文介绍如何在CentOS 7操作系统下使用yum方式安装MySQL数据库&#xff0c;及卸载&#xff1b; 安装 Step1&#xff1a;卸载mariadb 敲下面的命令&#xff0c;查看系统mariadb软件包 rpm -qa|grep mariadb跳出mariadb软件包信息后&#xff0c;敲下面的命令…

mysql基础14——视图

视图 视图是一种虚拟表 可以把一段查询语句作为视图存储在数据库中 需要的时候把视图看作一个表&#xff0c;对里面的数据进行查询 视图并没有真正存储数据 避免了数据存储过程中可能产生的冗余 提高了存储的效率 子查询 嵌套在另一个查询中的查询 派生表 如果在查询中…

六、项目发布 -- 4. 电子书详情页API开发、电子书列表API开发

电子书详情页API的编写 同理如下app.get中路由、回调&#xff1b;回调中要连接数据库、接收前端传过来的值、到数据库中做查询&#xff0c;然后回调&#xff08;如果回调失败返回什么JSON&#xff0c;如果回调成功返回什么JSON&#xff09;&#xff1b;最后千万别忘记了关闭数…

milvus 相似度检索的底层原理

Milvus作为一款专为向量相似度检索设计的开源搜索引擎&#xff0c;其底层原理涉及高效的向量索引结构、并行计算优化、分布式架构设计等多个关键技术点。以下是对Milvus进行相似度检索时底层原理的简要概述&#xff1a; ### 1. **向量索引结构** #### **近似最近邻搜索 (Appr…