MySQL Server和Server启动程序(一)

MySQL Server

mysqld,也称为MySQL Server,是一个单线程多任务的程序,它在MySQL安装中执行大部分工作。它不会生成额外的进程。MySQL Server管理对包含数据库和表的MySQL数据目录的访问。数据目录也是其他信息(如日志文件和状态文件)的默认位置。

注意
一些安装包包含一个名为mysqld-debug的服务器调试版本。为了获得调试支持、内存分配检查和跟踪文件支持,可以调用这个版本而不是mysqld

当MySQL服务器启动时,它会监听来自客户端程序的网络连接,并代表这些客户端管理对数据库的访问。

mysqld程序在启动时有许多可以指定的选项。要获取选项的完整列表,可以运行以下命令:

mysqld --verbose --help

MySQL Server 确实有一组系统变量(system variables),这些变量在运行时影响其操作。系统变量可以在服务器启动时设置,并且其中的许多变量可以在运行时更改,以实现动态服务器重新配置。

系统变量定义了服务器的操作特性,如缓存大小、连接数限制、排序缓冲区大小等。您可以使用 SET GLOBAL 语句来更改全局系统变量,这将影响整个MySQL服务器实例。同样,您可以使用 SET SESSION 语句来更改会话系统变量,这将仅影响当前客户端会话。

除了系统变量外,MySQL Server 还有一组状态变量(status variables),这些变量提供了关于服务器操作的信息。状态变量提供了关于服务器性能、连接、查询执行和其他服务器活动的统计信息。通过查询这些状态变量,您可以监视MySQL服务器的运行时性能特性,并据此进行调优或故障排除。

mysqld_safe — MySQL Server启动脚本

mysqld_safe 是 Unix 系统上推荐的方式来启动 mysqld 服务器。mysqld_safe 添加了一些安全特性,例如当发生错误时重启服务器,以及将运行时信息记录到错误日志中。稍后在本节中会详细描述错误日志记录。

注意

  • 对于某些 Linux 平台,通过 RPM 或 Debian 包安装的 MySQL 包括 systemd 支持来管理 MySQL 服务器的启动和关闭。在这些平台上,不需要 mysqld_safe,因为它是不必要的。
  • 在使用 systemd 进行服务器管理的平台上不使用 mysqld_safe 的一个影响是,在选项文件中使用 [mysqld_safe] 或 [safe_mysqld] 部分是不被支持的,并可能导致意外的行为。

mysqld_safe 试图启动一个名为 mysqld 的可执行文件。要覆盖默认行为并明确指定要运行的服务器名称,可以使用 --mysqld 或 --mysqld-version 选项来指定给 mysqld_safe。你也可以使用 --ledir 来指示 mysqld_safe 应该在哪个目录中查找服务器。

mysqld_safe 的许多选项与 mysqld 的选项相同。

mysqld_safe 脚本会从配置文件中读取 [mysqld][server] 和 [mysqld_safe] 部分中的选项。这意味着如果您在配置文件的 [mysqld] 部分中指定了某些选项,那么当您使用 mysqld_safe 来启动 MySQL 服务器时,这些选项将会被 mysqld_safe 传递给实际的 mysqld 进程。

例如,当您在配置文件中(通常是 my.cnf 或 my.ini)指定了 [mysqld] 部分,并且在该部分中包含了如 --log-error 这样的选项时,mysqld_safe 脚本会找到并使用这些选项来启动 mysqld 服务器。

[mysqld]
log-error=error.log

为了向后兼容性,mysqld_safe 确实也会读取 [safe_mysqld] 部分中的选项,但为了保持与当前的最佳实践一致,您应该将这样的部分重命名为 [mysqld_safe]

mysqld_safe 可以在命令行和选项文件中接受选项,这些选项可以影响 mysqld_safe 脚本如何启动和管理 mysqld 进程。以下是一个简化的表格,列出了 mysqld_safe 的一些常用选项:

显示帮助消息并退出。

MySQL安装目录的路径。

mysqld应该能够创建的核心文件的大小。选项值被传递给ulimit-c。

注意:innodb_buffer_pool_in_core_file变量可用于减小支持它的操作系统上的核心文件的大小。

数据目录的路径。

除了读取通常的选项文件外,还要读取此选项文件。如果文件不存在或无法访问,则服务器将退出并返回错误。如果file_name不是绝对路径名,则会相对于当前目录进行解释。如果使用此选项,则它必须是命令行上的第一个选项。

仅使用给定的选项文件。如果文件不存在或无法访问,则服务器将退出并返回错误。如果file_name不是绝对路径名,则会相对于当前目录进行解释。如果使用此选项,则它必须是命令行上的第一个选项。

如果mysqld_safe找不到服务器,请使用此选项指示服务器所在目录的路径名。

此选项仅在命令行中接受,在选项文件中不接受。在使用systemd的平台上,可以在MYSQLD_OPTS的值中指定该值。

将错误日志写入给定文件。

此选项控制mysqld_safe生成的日志输出中时间戳的格式。以下列表描述了允许的值。对于任何其他值,mysqld_safe都会记录一个警告并使用UTC格式。

  •        UTC,utc

              ISO 8601 UTC格式(与服务器的--log_timestamps=UTC相同)。这是默认设置。

  •         SYSTEM,system

              ISO 8601本地时间格式(与服务器的--log_timestamps=SYSTEM相同)。

  •         HYPHEN,hyphen

               YYY-MM-DD h:MM:ss格式,如MySQL 5.6的mysqld_safe。

  •    LEGACYlegacy

               YYYMMDD hh:mm:ss格式,与MySQL 5.6之前的mysqld_safe一样。

是用于内存分配的库的名称,而不是系统malloc()库。选项值必须是目录/usr/lib、/usr/lib64、/usr/lib/i386-linux-gnu或/usr/lib/x86_64-linux-gnu之一。

--malloc-lib选项通过修改LD_PRELOAD环境值来影响动态链接,从而使加载程序能够在mysqld运行时找到内存分配库:

  • 如果没有给出该选项,或者给出的选项没有值(--malloc-lib=),则不会修改LD_PRELOAD,也不会尝试使用tcmalloc。
  • 在MySQL 8.0.21之前,如果选项为--malloc-lib=tcmalloc,mysqld_safe将在/usr/lib中查找tcmalloc库。如果找到了tmalloc,它的路径名将添加到mysqld的LD_PRELOAD值的开头。如果找不到tcmalloc,mysqld_safe将中止并返回错误。

       从MySQL 8.0.21开始,tcmalloc不是--malloc-lib选项允许的值。

  • 如果该选项给定为--malloc-lib=/path/to/some/library,则该完整路径将添加到LD_PRELOAD值的开头。如果完整路径指向不存在或不可读的文件,mysqld_safe将中止并返回错误。
  • 对于mysqld_safe向LD_PRELOAD添加路径名的情况,它会将路径添加到变量已经具有的任何现有值的开头。

注意:在使用systemd管理MySQL服务的系统上,mysqld_safe通常不会被直接使用,因为systemd服务单元文件会负责启动和管理MySQL进程。在这种情况下,为了设置自定义的内存分配库,你需要通过systemd的环境变量或覆盖文件来指定LD_PRELOAD

Linux用户可以在/usr/lib中安装了tcmalloc包的任何平台上使用libtcmalloc_minimal.so库,方法是将以下行添加到my.cnf文件中:

[mysqld_safe]
malloc-lib=tcmalloc

要使用特定的tcmalloc库,请指定其完整路径名。例如:

[mysqld_safe]
malloc-lib=/opt/lib/libtcmalloc_minimal.so

在MySQL的mysqld_safe脚本中,--ledir选项用于指定包含MySQL服务器程序的目录路径(即mysqld的位置)。这在你使用MySQL的二进制发行版但数据目录位于二进制发行版外部时特别有用。

如果mysqld_safe无法找到服务器程序,你可以使用--ledir选项来指定服务器程序所在的目录。

这个选项只能在命令行上使用,不能放在选项文件中。在使用systemd管理MySQL服务的系统上,你可以通过在MYSQLD_OPTS环境变量中设置--ledir的值来指定这个选项。

此选项类似于--mysqld选项,但只指定服务器程序名的后缀。基本名称假定为mysqld。例如,如果使用--mysqld version=debug,mysqld_safe将启动ledir目录中的mysqld调试程序。如果--mysqld版本的参数为空,那么mysqld_safe将使用ledir目录中的mysqld。

此选项仅在命令行中接受,在选项文件中不接受。在使用systemd的平台上,可以在MYSQLD_OPTS的值中指定该值。

使用nice程序将服务器的调度优先级设置为给定值。

不要读取任何选项文件。如果由于从选项文件中读取未知选项而导致程序启动失败,则不能使用任何默认值来阻止读取这些选项。如果使用此选项,则它必须是命令行上的第一个选项。

mysqld应该能够打开的文件数。选项值被传递给ulimit-n。

注意:必须以root身份启动mysqld_safe才能正常工作。

mysqld应该用于其进程ID文件的路径名。

插件目录的路径名。

服务器在侦听TCP/IP连接时应使用的端口号。除非服务器由根操作系统用户启动,否则端口号必须为1024或更高。

该选项--skip-kill-mysqld通常用于mysqld_safe脚本中,以指示在启动MySQL服务器时不要尝试杀死(终止)任何可能已存在的“流浪”(stray)mysqld进程。

这个选项通常只在Linux系统上有效,因为mysqld_safe脚本在启动服务器之前会检查是否已有一个mysqld进程正在运行。如果存在这样的进程,mysqld_safe通常会尝试终止它以避免端口冲突或其他潜在问题。

在MySQL中,Unix套接字文件(Unix socket file)是MySQL服务器用于监听本地连接的一个特殊文件。当客户端(如mysql命令行工具)与MySQL服务器在同一台机器上通信时,它们通常会使用Unix套接字而不是TCP/IP套接字。Unix套接字提供了一种在同一台机器上的进程之间进行通信的机制,通常比TCP/IP连接更快、更高效。

--syslog会将错误消息发送到支持记录器程序的系统上的syslog--skip syslog禁止使用syslog;消息被写入错误日志文件。

当syslog用于错误日志记录时,daemon.err功能/严重性用于所有日志消息。

不赞成使用这些选项来控制mysqld日志记录。

将TZ时区环境变量设置为给定的选项值。

以名称为user_name或数字用户ID为user_ID的用户的身份卸载mysqld服务器。(在此上下文中,“用户”指的是系统登录帐户,而不是授权表中列出的MySQL用户。)

如果使用--defaults file或--defaults extra file选项执行mysqld_safe来命名选项文件,则该选项必须是命令行中给定的第一个选项,否则不使用该选项文件。例如,此命令不使用命名选项文件:

mysql> mysqld_safe --port=port_num --defaults-file=file_name

相反,请使用以下命令:

mysql> mysqld_safe --defaults-file=file_name --port=port_num

编写mysqld_safe脚本时,它通常可以启动从MySQL的源发行版或二进制发行版安装的服务器,尽管这些类型的发行版通常将服务器安装在略有不同的位置。mysqld_safe希望以下条件之一成立:

  • 服务器和数据库可以相对于工作目录(调用mysqld_safe的目录)找到。对于二进制发行版,mysqld_safe在其工作目录下查找bin和数据目录。对于源发行版,它会查找libexec和var目录。如果从MySQL安装目录执行mysqld_safe(例如,二进制发行版为/usr/local/MySQL),则应满足此条件。
  • 如果相对于工作目录找不到服务器和数据库,mysqld_safe会尝试通过绝对路径名来定位它们。典型的位置是/usr/local/libexec和/usr/local/var。实际位置由构建分发时配置到分发中的值确定。如果MySQL安装在配置时指定的位置,则它们应该是正确的。

由于mysqld_safe试图找到相对于其自身工作目录的服务器和数据库,因此您可以在任何地方安装MySQL的二进制发行版,只要您从MySQL安装目录运行mysqld_safe:

cd mysql_installation_directory
bin/mysqld_safe &

如果mysqld_safe失败,即使是从MySQL安装目录调用,也可以指定--ledir和--datadir选项来指示服务器和数据库在系统中所处的目录。

mysqldsafe尝试使用sleep和date系统实用程序来确定每秒尝试启动的次数。如果存在这些实用程序,并且每秒尝试的启动次数大于5次,那么mysqld_safe将等待整整一秒钟,然后再启动。这是为了防止在重复故障的情况下过度使用CPU。(错误号11761530,错误号54035)

当您使用mysqld_safe启动mysqld时,mysqld_safe会安排来自自身和mysqld的错误(和注意)消息到达相同的目的地。

有几个mysqld_safe选项用于控制这些消息的目的地:

  • --log error=file_name:将错误消息写入命名的错误文件。
  • --syslog:在支持记录器程序的系统上,将错误消息写入syslog。
  • --跳过syslog:不要将错误消息写入syslog。消息会写入默认的错误日志文件(数据目录中的host_name.err),或者如果给定--log error选项,则会写入命名文件。

如果没有给出这些选项,则默认为--skip syslog。

当mysqld_safe写入消息时,通知会转到日志记录目标(syslog或错误日志文件)和stdout。错误注意:不赞成从mysqld_safe控制mysqld日志记录。请改用服务器的本机syslog支持。

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

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

相关文章

目标检测:NMS代码

非极大值抑制NMS是目标检测常用的后处理算法,用于剔除冗余检测框 总体概要: 对NMS进行分类,大致可分为以下六种,这里是依据它们在各自论文中的核心论点进行分类,这些算法可以同时属于多种类别。 分类优先:…

基于mysqlbinlog恢复数据

1、把binlog转换为SQL mysqlbinlog --base64-outputdecode-rows -vv /usr/local/mysql/log-bin/mysql-bin.000003 >result.sql find / -name result.sql 2、查看events show binlog events in mysql-bin.000003; 3、回滚到3667那一行的数据 mysqlbinlog -v /usr/local/mys…

Linux中手动配置Java jdk17环境

1、下载jdk二进制文件 点击官网地址:jdk-17_linux-x64_bin.tar.gz 或者使用wget下载 wget https://download.oracle.com/java/17/latest/jdk-17_linux-x64_bin.tar.gz -P /usr/local/src/2、解压文件 tar zxvf jdk-17_linux-x64_bin.tar.gz3、修改配置 打开文件…

专业学习|博弈论-课程沿革

学习来源:北京大学刘霖《博弈论》MOOC公开课 备注:仅做学习分享,请勿转载,转载必究! (一)博弈论的预备知识 基本的微积分的知识和概率论的知识。简单的说会求导数,会求简单的积分&am…

消息队列-Rabbit运行机制

Producer(生产者) 和 Consumer(消费者) Producer(生产者) :生产消息的一方(邮件投递者)Consumer(消费者) :消费消息的一方(邮件收件人) 消息一般由 2 部分组成:消息头(或者说是标签 Label)和 …

【已解决】chrome视频无法自动播放的问题

问题: 在用datav开发大屏的时候,放了一个视频组件,但是发现视频组件即使设置了自动播放,仍然无法自动播放 原因: 76 以上版本的谷歌浏览器只能在系统静音下自动播放 解决: 音频自动播放浏览器白名单设置&…

kafka在windows上的启动

启动zookeeper 解压kafka安装包到对应目录下,找到对应config目录下的zookeeper.properties文件 新建一个data文件夹,随便放哪 打开该文件,找到 dataDir/tmp/zookeeper 属性 将原来的属性值,修改为新建data文件夹地址,…

如何修改倍福CX7000PLC IP地址

我们可以通过登录网页修改PLC的IP地址,这个需要我们知道PLC的初始IP地址 1、浏览器直接输入PLC 的IP地址 2、点击修改按钮(就是那个旋转) 修改IP地址前DHCP要先disable关闭 。 3、DHCP关闭 4、点击保存 5、在CAT3里搜索 在SYSTEM双击,之后点击搜索,具体过程可以参考下…

【html】如何利用id选择器实现主题切换

今天给大家介绍一种方法来实现主题切换的效果 效果图&#xff1a; 源码&#xff1a; <!DOCTYPE html> <html lang"zh"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initia…

充电学习—5、healthed 电池服务

1、healthed服务监听接收内核kernel的电池事件&#xff0c;然后上传数据给framware层的batterysevice&#xff0c;BatteryService计算电池的电量&#xff0c;显示&#xff0c;绘制动画等 android电池系统框架&#xff1a; 2、healthd服务入口&#xff1a;android/system/cor…

2024年设计、数字化技术与新闻传播国际学术会议(ICDDTJ 2024)

2024年设计、数字化技术与新闻传播国际学术会议(ICDDTJ 2024) 2024 International Conference on Design, Digital Technology and Journalism 会议地点&#xff1a;哈尔滨&#xff0c;中国 网址&#xff1a;www.icddtj.com 邮箱: icddtjsub-conf.com 投稿主题请注明:ICDD…

python之Bible快速检索器

内容将会持续更新&#xff0c;有错误的地方欢迎指正&#xff0c;谢谢! python之Bible快速检索器 TechX 坚持将创新的科技带给世界&#xff01; 拥有更好的学习体验 —— 不断努力&#xff0c;不断进步&#xff0c;不断探索 TechX —— 心探索、心进取&#xff01; 助力快…

CSS入门基础2

目录 1.标签类型 2.块元素 3.行内元素 4.行内块元素 5.标签行内转换 6.背景样式 1.标签类型 标签以什么方式进行显示&#xff0c;比如div 自己占一行&#xff0c; 比如span 一行可以放很多个HTML标签一般分为块标签和行内标签两种类型&#xff1a; 块元素行内元素。 2.块…

数据结构进阶——AVL树

数据结构进阶——AVL树 0. 前言1. AVL树的概念2. AVL树节点&#xff0c;和树的定义3. AVL树的插入4. AVL树的旋转5. AVL树的验证6. AVL树的删除&#xff08;了解&#xff09;7. AVL树实现完整代码8. AVL树的性能 0. 前言 学习本章&#xff0c;需要大家先掌握搜索二叉树&#xf…

「6.18福利」精选大厂真题|笔试刷题陪伴|明天正式开屋啦 - 打卡赢价值288元丰厚奖励

&#x1f370;关于清隆学长 大家好&#xff0c;我是清隆&#xff0c;拥有ACM区域赛 银牌&#x1f948;&#xff0c;CCCC天梯赛 国一&#xff0c;PTA甲级 98 分。 致力于算法竞赛和算法教育已有 3 年&#xff0c;曾多次 AK 互联网大厂笔试&#xff0c;大厂实习经验丰富。 打卡…

ai智能语音机器人好不好用,语音识别

智能语音机器人的真正价值是帮助企业解决电销上带来的一些问题&#xff0c;可以提高效率。为电销人员节省大量的时间与精力&#xff0c;提高电销水平&#xff0c;那我们一起来看看智能语音机器人好不好用 1、真人式语音群呼 用智能语音机器人打电话给客户的时候是真人的声音&a…

常见端口大全

常见默认端口 1、HTTP: 80 2、HTTPS: 443 3、FTP: 21 4、FTPS : 990 5、SSH: 22 6、Telnet: 23 7、SMTP: 25 8、DNS : 53 9、DHCP: 67 (服务器), 68 (客户端) 10、TFTP : 69 11、HTTP Alt: 8080 12、POP3: 110 13、 NNTP: 119 14、NTP : 123 15、IMAP: 143 16、SNMP : 161 17、…

国家商用密码算法-SM4Tool.jar

SM4Tool.jar可能是指一个特定的Java工具集&#xff0c;用于实现SM4&#xff08;国家商用密码算法之一&#xff09;的加密和解密功能。SM4是一种分组密码算法&#xff0c;广泛应用于中国的各种安全通信场景中&#xff0c;如金融、电子政务、物联网等。由于我没有直接访问或运行特…

新手如何入门Web3?

一、什么是Web3&#xff1f; Web3是指下一代互联网&#xff0c;它基于区块链技术&#xff0c;致力于将各种在线活动变得更加安全、透明和去中心化。Web3是一个广义的概念&#xff0c;涵盖了包括数字货币、去中心化应用、智能合约等在内的多个方面。它的主要特点包括去中心化、区…

2024软考各科目难度怎么样?怎么选?

在2024年的软考中&#xff0c;各科目难度因专业领域和具体内容的差异而有所不同。以下是对软考高级、中级和初级科目难度的分析&#xff1a; &#xff08;1&#xff09;高级科目难度分析&#xff1a; 下半年高级考试科目有&#xff1a;系统分析师、系统架构设计师、网络规划设…