mysql知识点

一 MySQL 的 systemd 服务单元配置文件

/lib/systemd/system/mysql.service,它定义了 MySQL 服务的启动、运行、管理和关闭方式。以下是每个部分的详细解释和原理说明:

[Unit]

[Unit]
Description=MySQL Community Server
After=network.target
  • Description:描述该服务的名称,方便管理员识别其用途。这里是“MySQL Community Server”。
  • After=network.target:表明 MySQL 服务应在 network.target(即网络相关服务启动完成)之后启动,以确保 MySQL 能够依赖网络连接(如果配置了远程访问)。这不意味着网络一定启动成功,只是依赖其顺序。

[Install]

[Install]
WantedBy=multi-user.target
  • WantedBy=multi-user.target:指定服务的安装目标,将服务链接到 multi-user.target。该选项决定了服务的目标运行级别。multi-user.target 相当于传统的“多用户模式”(即不需要图形界面的运行级别),适用于大多数服务器环境。

[Service]

[Service]
Type=notify
User=mysql
Group=mysql
PIDFile=/run/mysqld/mysqld.pid
PermissionsStartOnly=true
ExecStartPre=/usr/share/mysql/mysql-systemd-start pre
ExecStart=/usr/sbin/mysqld
TimeoutSec=infinity
Restart=on-failure
RuntimeDirectory=mysqld
RuntimeDirectoryMode=755
LimitNOFILE=10000
Environment=MYSQLD_PARENT_PID=1
参数解析:
  1. Type=notify

    • 指定服务启动类型为 notify。在此模式下,服务会在启动过程中通过 systemd 的通知接口告知启动状态。MySQL 服务器在完全启动后会向 systemd 发送通知,表示服务已就绪。
  2. User=mysqlGroup=mysql

    • 指定 MySQL 服务以 mysql 用户和 mysql 用户组的权限运行。这有助于提高安全性,防止 MySQL 以 root 权限运行,从而降低潜在的安全风险。
  3. PIDFile=/run/mysqld/mysqld.pid

    • 定义 MySQL 进程的 PID 文件路径,用于记录 MySQL 服务器的主进程 ID。系统可以通过该文件了解 MySQL 的运行状态和进程号,以便于管理和监控。
  4. PermissionsStartOnly=true

    • 只有在启动时设置权限,限制权限更改仅应用于启动过程的相关命令,而不会影响主 ExecStart 指令。这在启动前执行某些命令时很有用,比如创建目录或设置权限。
  5. ExecStartPre=/usr/share/mysql/mysql-systemd-start pre

    • ExecStartPre 表示在主启动命令 ExecStart 之前运行的命令。这里执行 MySQL 提供的预启动脚本 /usr/share/mysql/mysql-systemd-start pre,该脚本可以用于检查 MySQL 运行环境的准备情况(如目录权限等),确保 MySQL 能顺利启动。
  6. ExecStart=/usr/sbin/mysqld

    • 这是主启动命令,用于启动 MySQL 服务器主程序 mysqldmysqld 是 MySQL 数据库服务器的核心进程。
  7. TimeoutSec=infinity

    • 设置服务启动的超时时间为“无限”。这意味着 systemd 将等待 MySQL 服务启动完成,而不会因超时导致启动失败。这通常用于启动时间较长的服务,确保 MySQL 在繁忙或资源紧张时仍能顺利启动。
  8. Restart=on-failure

    • 定义重启策略,当服务因非正常状态(退出码非 0)失败时自动重启服务。这有助于提高 MySQL 服务的稳定性和容错能力,避免意外故障导致服务中断。
  9. RuntimeDirectory=mysqldRuntimeDirectoryMode=755

    • 指定运行时目录 mysqld,并设置该目录的权限为 755systemd 将自动在 /run 下创建此目录(通常是 /run/mysqld),该目录用于存放 PID 文件或其他运行时文件,确保这些文件在系统重启后不会保留。
  10. LimitNOFILE=10000

    • 限制 MySQL 进程的文件描述符数量上限为 10000。这对于处理大量连接的 MySQL 数据库非常重要,因为每个连接都需要占用一个文件描述符。默认值可能较低,增加上限可以避免高负载时因文件描述符不足而导致的连接失败。
  11. Environment=MYSQLD_PARENT_PID=1

    • 设置环境变量 MYSQLD_PARENT_PID1。此变量用于 MySQL 进程的父进程 ID 配置,有助于确保在某些系统上 MySQL 正确识别并记录父进程 ID,避免可能的进程管理问题。

二 配置文件

备份目录:~/mysql_bak
登录密码:sudo mysql -p
配置文件:cat /etc/mysql/my.cnf

#
# The MySQL database server configuration file.
#
# You can copy this to one of:
# - "/etc/mysql/my.cnf" to set global options,
# - "~/.my.cnf" to set user-specific options.
#
# One can use all long options that the program supports.
# Run program with --help to get a list of available options and with
# --print-defaults to see which it would actually understand and use.
#
# For explanations see
# http://dev.mysql.com/doc/mysql/en/server-system-variables.html#
# * IMPORTANT: Additional settings that can override those from this file!
#   The files must end with '.cnf', otherwise they'll be ignored.
#!includedir /etc/mysql/conf.d/
!includedir /etc/mysql/mysql.conf.d/

以下是 MySQL 主要配置文件mysql.conf.d/mysqld.cnf 中每个参数的详细解释:

1. Query Logging

# general_log_file        = /var/log/mysql/query.log
# general_log             = 1
  • general_log_file:指定通用查询日志(general log)的文件路径,这个日志文件会记录所有的SQL查询语句。
  • general_log:开启通用查询日志。当 general_log=1 时,所有查询都会被记录到日志中。

底层原理
通用查询日志在每次执行 SQL 语句时将记录该语句的执行内容,这对于调试和监控很有帮助。但是启用此功能会显著增加磁盘 I/O 和 CPU 使用量,从而导致性能下降,因此通常仅在调试或问题排查时使用。

2. Error Log

log_error = /var/log/mysql/error.log
  • log_error:指定错误日志文件的路径,用于记录数据库在运行时发生的各种错误或警告信息。

底层原理
错误日志文件用于存储服务器启动和关闭过程中的重要消息、错误信息以及无法处理的异常等。MySQL 会将错误信息写入到文件中,帮助管理员及时排查潜在问题。该文件通常不会记录常规查询,默认情况下其内容应该较少。

3. Slow Query Log

# slow_query_log                = 1
# slow_query_log_file   = /var/log/mysql/mysql-slow.log
# long_query_time = 2
# log-queries-not-using-indexes
  • slow_query_log:开启慢查询日志,当 slow_query_log=1 时,将记录执行时间较长的查询。
  • slow_query_log_file:指定慢查询日志文件的路径。
  • long_query_time:设置记录到慢查询日志的阈值,单位是秒。设置为 2 表示任何执行时间超过 2 秒的查询都会被记录。
  • log-queries-not-using-indexes:启用后,任何没有使用索引的查询都会记录到慢查询日志。

底层原理
慢查询日志主要用于识别性能瓶颈和优化查询。MySQL 会在查询执行完毕后判断查询的执行时间,若超过 long_query_time 的设定值,则将该查询记录到慢查询日志中。通过分析该日志,DBA 可以发现低效的查询,并对这些查询进行优化(例如:添加索引、优化 SQL 语句等)。

4. Binary Log for Replication and Backup

server-id             = 1
log_bin               = /var/log/mysql/mysql-bin.log
binlog_expire_logs_seconds = 2592000
max_binlog_size       = 100M
# binlog_do_db         = include_database_name
# binlog_ignore_db     = include_database_name
  • server-id:指定 MySQL 服务器的唯一标识(ID),对于复制(replication)和集群管理(Cluster Management)至关重要。在主从复制中,每个服务器必须有一个唯一的 server-id
  • log_bin:启用二进制日志(binary log),并指定二进制日志文件路径。二进制日志记录了所有对数据库的更改操作(如插入、更新、删除等),用于数据恢复或主从同步。
  • binlog_expire_logs_seconds:设置二进制日志的自动删除时间(以秒为单位)。2592000 秒约等于 30 天,即超过这个时间的日志会被自动删除以节省空间。
  • max_binlog_size:设置单个二进制日志文件的最大大小,达到该大小时 MySQL 会创建一个新的日志文件。
  • binlog_do_dbbinlog_ignore_db:用于选择性地包含或排除某个数据库的二进制日志记录,适用于复制时主数据库只将特定库或表的修改传递给从数据库。

底层原理
二进制日志用于记录对数据库的所有更改操作,包括创建表、修改数据等。启用二进制日志后,MySQL 会先将更改写入二进制日志文件,然后再提交到数据库,这样可以确保系统在宕机后依然能够恢复。在主从复制中,二进制日志还会用于将主服务器上的更改传递到从服务器,确保数据一致性。通过 binlog_expire_logs_secondsmax_binlog_size 限制二进制日志的存储,防止日志文件过多占用磁盘空间。

综合说明

这些配置项主要用于性能监控和数据恢复的日志控制:

  • 通用日志 提供全面的 SQL 查询跟踪;
  • 错误日志 记录系统故障和警告信息;
  • 慢查询日志 则提供查询性能监控;
  • 二进制日志 则支持数据恢复和主从复制的关键操作。

合理配置这些日志参数,可以帮助数据库管理员进行系统优化、监控系统健康状态以及数据恢复。

三 错误日志

/var/log/mysql/error.log
2024-11-02T01:27:32.146582Z 0 [System] [MY-013172] [Server] Received SHUTDOWN from user <via user signal>. Shutting down mysqld (Version: 8.0.39-0ubuntu0.20.04.1).
2024-11-02T01:27:42.539792Z 0 [Warning] [MY-010909] [Server] /usr/sbin/mysqld: Forcing close of thread 5520  user: 'mtdb'.
2024-11-02T01:27:42.569995Z 0 [Warning] [MY-010909] [Server] /usr/sbin/mysqld: Forcing close of thread 16  user: 'mtdb'.
2024-11-02T01:27:42.570135Z 0 [Warning] [MY-010909] [Server] /usr/sbin/mysqld: Forcing close of thread 5521  user: 'mtdb'.
2024-11-02T01:27:42.570265Z 0 [Warning] [MY-010909] [Server] /usr/sbin/mysqld: Forcing close of thread 9  user: 'mtdb'.
2024-11-02T01:27:42.570400Z 0 [Warning] [MY-010909] [Server] /usr/sbin/mysqld: Forcing close of thread 26  user: 'mtdb'.
2024-11-02T01:27:42.570512Z 0 [Warning] [MY-010909] [Server] /usr/sbin/mysqld: Forcing close of thread 5523  user: 'mtdb'.
2024-11-02T01:27:42.570642Z 0 [Warning] [MY-010909] [Server] /usr/sbin/mysqld: Forcing close of thread 5516  user: 'mtdb'.
2024-11-02T01:27:42.570710Z 0 [Warning] [MY-010909] [Server] /usr/sbin/mysqld: Forcing close of thread 3780  user: 'mtdb'.
2024-11-02T01:27:42.571365Z 0 [Warning] [MY-010909] [Server] /usr/sbin/mysqld: Forcing close of thread 5517  user: 'mtdb'.
2024-11-02T01:27:42.571518Z 0 

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

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

相关文章

AI笔筒操作说明及应用场景

AI笔筒由来&#xff1a; 在快节奏的现代办公环境中&#xff0c;我们一直在寻找既能提升效率、增添便利&#xff0c;又能融入企业文化、展现个人品味的桌面伙伴。为此&#xff0c;我们特推出专为追求卓越、注重细节的您设计的AI笔筒礼品版&#xff0c;它集高科技与实用性于一身…

【笔面试常见题:三门问题】用条件概率、全概率和贝叶斯推导

1. 问题介绍 三门问题&#xff0c;又叫蒙提霍尔问题&#xff08;Monty Hall problem&#xff09;&#xff0c;以下是蒙提霍尔问题的一个著名的叙述&#xff0c;来自Craig F. Whitaker于1990年寄给《展示杂志》&#xff08;Parade Magazine&#xff09;玛丽莲沃斯莎凡特&#x…

Elasticsearch中时间字段格式用法详解

Elasticsearch中时间字段格式用法详解 攻城狮Jozz关注IP属地: 北京 2024.03.18 16:27:51字数 758阅读 2,571 Elasticsearch&#xff08;简称ES&#xff09;是一个基于Lucene构建的开源、分布式、RESTful搜索引擎。它提供了全文搜索、结构化搜索以及分析等功能&#xff0c;广泛…

sql数据库-DQL-基本查询

目录 举例表emp 查询多个字段 查询整张表所有数据 给字段名起别名&#xff08;更方便阅读&#xff09; 去除重复的数据 举例表emp 查询多个字段 SELECT 字段1,字段2,字段3...FROM 表名; 举例查询emp表中的name&#xff0c;workno&#xff0c;age字段返回 查询整张表所有数据 …

JqGird 动态生成列使用

使用场景&#xff1a; 在工作用需要自定义动态生成列&#xff0c;通过选择下拉框&#xff0c;加载列&#xff0c;通过查询加载列对应的数据信息 当选择文件源任务显示三列 当选择数据源任务显示两列 处理方式&#xff1a; 1. 首先在刚进入界面时初始化控件 $("#pageGri…

Rust项目结构

文章目录 一、module模块1.二进制文件的cargo项目2.库的cargo项目3.文件内的module 二、模块化项目结构1.关于module2.各个模块之间互相引用 三、推荐项目结构1.实例 参考 一、module模块 crate规则&#xff1a; 规则一&#xff1a;一个包中必须至少包含一个crate规则二&#…

电能管理系统(源码+文档+部署+讲解)

本文将深入解析“电能管理系统”的项目&#xff0c;探究其架构、功能以及技术栈&#xff0c;并分享获取完整源码的途径。 系统概述 “工厂电能管理系统” 是一款集设备管理、维修管理、能耗监测、节能分析、储能管理、充电桩管理、冷源站管理、报警管理、点检管理等功能于一体…

网上纪念馆(源码+文档+部署+讲解)

最近我在挖掘一些优秀的开源项目时&#xff0c;无意间发现了一个相当给力的系统——网上纪念馆系统。这个系统不仅功能完善&#xff0c;满足了线上祭祀和纪念的需求&#xff0c;而且代码结构清晰&#xff0c;易于二次开发。作为一名技术爱好者&#xff0c;我觉得有必要把这个好…

华为HarmonyOS打造开放、合规的广告生态 - 贴片广告

场景介绍 贴片广告是一种在视频播放前、视频播放中或视频播放结束后插入的视频或图片广告。 接口说明 接口名 描述 loadAd(adParam: AdRequestParams, adOptions: AdOptions, listener: AdLoadListener): void 请求单广告位广告&#xff0c;通过AdRequestParams、AdOptions…

责任链模式 Chain of Responsibility

1 意图 使多个对象都有机会处理请求&#xff0c;从而避免请求的发送者和接收者之间的耦合关系。将这些对象连成一条链&#xff0c;并沿着这条链传递该请求&#xff0c;直到有一个对象处理它为止。 2 结构 Handler 定义一个处理请求的接口;(可选)实现后继链。 ConcreteHandler …

【Linux】- 权限(2)

接上一篇文章&#xff0c;继续介绍linux权限的相关知识。https://blog.csdn.net/hffh123/article/details/143432940?spm1001.2014.3001.5501j 目录 一、chown&#xff1a;修改文件的拥有者 二、chgrp&#xff1a;修改文件所属组 三、关于other的介绍 四、文件类型 1、分类…

RTX5/FreeRTOS全家桶源码工程综合实战模板集成CANopen组件(2024-10-30)

【前言】 之前的视频教程分享了两期CANopen的专题&#xff0c;配套的例子都是基于裸机的&#xff0c;为了方便大家在OS下使用&#xff0c;本期视频带OS下的支持。 CANopen协议栈专题&#xff0c;实战方式系统了解NMT&#xff0c;PDO&#xff0c;SDO&#xff0c;时间戳&#x…

vue中实现列表无缝动态滚动

要想实现列表的动态无缝滚动&#xff0c;这里推荐两款组件&#xff0c;vue-seamless-scroll和vue3-seamless-scroll&#xff0c;组件的用法也非常简单&#xff0c;以下是使用方式。 vue2 vue2版本使用vue-seamless-scroll vue-seamless-scroll文档https://chenxuan0000.gith…

BeanDefinition体系架构(待...)

AbstractBeanDefinition 仅仅只有三个直接的子类&#xff0c;分别是&#xff1a;RootBeanDefinition、ChildBeanDefinition、GenericBeanDefinition 注&#xff1a;在 Spring2.5 之前&#xff0c;仅仅只有 RootBeanDefinition、ChildBeanDefinition 两个子类&#xff0c; 我们…

002-Kotlin界面开发之Kotlin旋风之旅

Kotlin旋风之旅 Compose Desktop中哪些Kotlin知识是必须的&#xff1f; 在学习Compose Desktop中&#xff0c;以下Kotlin知识是必须的&#xff1a; 基础语法&#xff1a;包括变量声明、数据类型、条件语句、循环等。面向对象编程&#xff1a;类与对象、继承、接口、抽象类等。…

基于SpringBoot的教务系统

本系统集成了权限管理与用户管理两大核心功能&#xff0c;允许灵活添加用户角色及其对应权限。 技术选型&#xff1a;SpringBootVueShiromybatis 当前系统预设了四种用户类型&#xff0c;具体如下&#xff1a; 管理员&#xff1a;拥有系统的全部权限&#xff0c;涵盖基础管理…

详解Python面向对象程序设计

Python面向对象程序设计 1&#xff0c;初识类和对象2&#xff0c;类的定义和使用3&#xff0c;构造方法4&#xff0c;常用的类内置方法4.1&#xff0c;字符串方法&#xff1a;__str__ 4.2&#xff0c;是否小于&#xff1a;__lt__4.3&#xff0c;是否小于等于&#xff1a;__le__…

LeetCode 热题100之二分

关于二分&#xff0c;之前也写过一篇&#xff0c;参考二分Acwing 1.搜索插入位置 思路分析&#xff1a;典型的 二分查找算法&#xff0c;用于在一个已排序的数组中查找目标值的位置。如果找到了目标值&#xff0c;返回其索引&#xff1b;如果没有找到&#xff0c;则返回目标值…

Python+Appium+Pytest+Allure自动化测试框架-安装篇

文章目录 安装安装ADT安装NodeJs安装python安装appium安装Appium Server&#xff08;可选&#xff09;安装Appium-Inspector&#xff08;可选&#xff09;安装allure安装pytest PythonAppiumPytestAllure框架的安装 Appium是一个开源工具&#xff0c;是跨平台的&#xff0c;用于…

Twitter(X)2024最新注册教程

Twitter 现名为X&#xff0c;因为图标是一只小鸟的形象&#xff0c;大家也叫它小蓝鸟&#xff08;埃隆马斯克于 2023 年对该平台进行了品牌重塑&#xff09;&#xff0c;目前仍然是全球最受欢迎的社交媒体和微博平台之一&#xff0c;全球活跃用户量大概在4.5亿。尤其是欧美国家…