设为首页收藏本站 JeeStudy企业开发官网①

JEE Study|JAVA EE|企业级开发学习网

 找回密码
 立即加入

QQ登录

只需一步,快速开始

扫一扫,访问微社区

搜索
查看: 1738|回复: 0
打印 上一主题 下一主题

MySQL8.0大师之路:第10章:MySQL程序详解-10.1 MySQL服务器,服务器启动程序

[复制链接]

219

主题

221

帖子

1418

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1418

最佳新人活跃会员热心会员推广达人宣传达人灌水之王突出贡献优秀版主荣誉管理论坛元老

跳转到指定楼层
楼主
发表于 2020-4-5 22:46:30 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
1.mysqld- MySQL服务器


SQL守护程序(SQL daemon ,即 MySQL服务器)。要使用客户端程序,必须运行mysqld,因为客户端可以通过连接到服务器来访问数据库。MySQL服务器启动时,它将侦听来自客户端程序的网络连接,并代表这些客户端管理对数据库的访问。mysqld程序有许多可以在启动时指定的选项。有关选项的完整列表,请运行以下命令:

[root@CentOS8 ~]# mysqld --verbose --help|more


MySQL Server还具有一组系统变量,这些变量会在运行时影响其操作。可以在服务器启动时设置系统变量,并且可以在运行时更改许多系统变量以实现动态服务器重新配置。 MySQL Server还具有一组状态变量,这些变量提供有关其操作的信息。您可以监视这些状态变量以访问运行时性能特征。


要在服务器运行时查看服务器实际使用的当前系统变量值,请连接至该服务器并执行以下语句:
mysql> SHOW VARIABLES;


要查看正在运行的服务器的一些统计信息和状态指示器,请执行以下语句:
mysql> SHOW STATUS;


也可以使用mysqladmin命令获得系统变量和状态信息:
[root@CentOS8 ~]# mysqladmin -p variables
[root@CentOS8 ~]# mysqladmin -p extended-status

mysqld从[mysqld]和[server]组中读取选项。
mysqld_safe从[mysqld],[server],[mysqld_safe]和[safe_mysqld]组中读取选项。
mysql.server从[mysqld]和[mysql.server]组读取选项。


列表中的某些项目实际上是可以在服务器启动时设置的系统变量,这些可以在运行时使用SHOW VARIABLES语句显示。
前面的mysqld命令显示的某些项目未出现在SHOW VARIABLES输出中,这是因为它们仅是选项,而不是系统变量。



一些选项控制缓冲区或缓存的大小。对于给定的缓冲区,服务器可能需要分配内部数据结构。这些结构通常是从分配给缓冲区的总内存中分配的,所需的空间量可能取决于平台。这意味着,当您将值分配给控制缓冲区大小的选项时,实际可用空间量可能与分配的值不同。在某些情况下,空间可能小于分配的值。服务器也可能向上调整一个值。
例如,如果为选项的最小值为1024分配了0值,则服务器会将其设置为1024。除非另有说明,否则缓冲区大小,长度和堆栈大小的值均以字节为单位。



一些选项采用文件名值。除非另有说明,否则,如果值是相对路径名,则默认文件位置是数据目录。要明确指定位置,请使用绝对路径

假设数据目录为/ var / mysql / data。如果将文件值选项作为相对路径名给出,它将位于/ var / mysql / data下。如果该值是绝对路径名,则其位置由路径名指定。


您还可以在服务器启动时通过使用变量名作为选项来设置服务器系统变量的值。要将值分配给服务器系统变量,请使用--var_name = value形式的选项。例如,--sort_buffer_size = 384M将sort_buffer_size变量设置为384MB。



当给变量赋值时,MySQL可能会自动将其校正为保持在给定范围内,或者如果只允许某些值,则将其调整为最接近的允许值。要限制使用SET语句在运行时可以将系统变量设置为的最大值,请在服务器启动时使用--maximum-var_name = value形式的选项来指定此最大值。


2.mysqld_safe MySQL服务器启动脚本
推荐使用mysqld_safe在Unix上启动mysqld服务器。 mysqld_safe 添加了一些安全功能,例如在发生错误时重新启动服务器,以及将运行时信息记录到错误日志中。



对于某些Linux平台,从RPM或Debian软件包安装的MySQL包括对管理MySQL服务器启动和关闭的系统支持。在这些平台上,未安装mysqld_safe,因为它是不必要的。



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



mysqld_safe从选项文件的[mysqld],[server]和[mysqld_safe]节中读取所有选项。为了向后兼容,mysqld_safe也读取[safe_mysqld]部分,但是,当前,您应该将这些部分重命名为[mysqld_safe]


可以使用命令查看具体的选项:[root@CentOS8 bin]# mysqld_safe --help


mysqld_safe 目录:
二进制安装的mysql目录是:/usr/local/mysql
源代码安装的mysql目录是:/usr/local/libexec  and /usr/local/var.

3.mysql.server MySQL服务器启动脚本
Unix和类似Unix的系统上的MySQL发行版包括一个名为mysql.server的脚本,该脚本使用mysqld_safe启动MySQL服务器。
它可以在使用System V样式运行目录来启动和停止系统服务的系统(例如Linux和Solaris)上使用。
对于某些Linux平台,从RPM或Debian软件包安装的MySQL包括对管理MySQL服务器启动和关闭的系统支持。在这些平台上,未安装mysql.server和mysqld_safe,因为它们是不必要的。




mysql.server从选项文件的[mysql.server]和[mysqld]部分读取选项。为了向后兼容,它还会读取[mysql_server]部分,但为最新,您应将这些部分重命名为[mysql.server]。您可以在全局/etc/my.cnf文件中为mysql.server添加选项。



您可以在全局/etc/my.cnf文件中为mysql.server添加选项。典型的my.cnf文件可能如下所示:

[mysqld]
datadir=/usr/local/mysql/var
socket=/var/tmp/mysql.sock
port=3306
user=mysql
[mysql.server]
basedir=/usr/local/mysql


4.mysqld_multi 管理多个MySQL服务器
mysqld_multi用于管理多个mysqld进程,这些进程监听不同Unix套接字文件(Unix socket)和TCP / IP端口(TCP/IP ports.)上的连接。它可以启动或停止服务器,或报告其当前状态。

对于某些Linux平台,从RPM或Debian软件包安装的MySQL包括对管理MySQL服务器启动和关闭的系统支持。在这些平台上,未安装mysqld_multi,因为它是不必要的。

mysqld_multi在my.cnf(或-defaults-file选项命名的文件)中搜索名为[mysqldN]的组(N可以是任何正整数)。
在下面的讨论中,此编号称为选项组编号或GNR。
组号将选项组彼此区分开,并用作mysqld_multi的参数,以指定要启动,停止或获取其状态报告的服务器。这些组中列出的选项与用于启动mysqld的[mysqld]组中使用的选项相同。
但是,当使用多台服务器时,每个服务器都必须对Unix套接字文件和TCP / IP端口等选项使用各自的值。



要调用mysqld_multi,请使用以下语法:
mysqld_multi [options] {start|stop|reload|report} [GNR[,GNR] ...]


启动,停止,重新加载(停止和重新启动),并报告指示要执行的操作。您可以对单个服务器或多个服务器执行指定的操作,具体取决于选项名称后面的GNR列表。如果没有列表,则mysqld_multi对选项文件中的所有服务器执行操作。每个GNR值代表一个选项组号或组号范围。该值应该是选项文件中组名末尾的数字。例如,名为[mysqld17]的组的GNR为17。要指定数字范围,请用破折号分隔第一个和最后一个数字。 GNR值10-13表示组[mysqld10]至[mysqld13]。可以在命令行上指定多个组或组范围,以逗号分隔。 GNR列表中不得包含空格字符(空格或制表符);空格字符后的所有内容都将被忽略。
此命令使用选项组[mysqld17]启动单个服务器

shell> mysqld_multi start 17

此命令使用选项组[mysqld8]和[mysqld10]至[mysqld13]停止多个服务器:
shell> mysqld_multi stop 8,10-13


有关如何设置选项文件的示例,请使用以下命令:
shell> mysqld_multi --example
mysqld_multi 搜索如下选项文件:
•使用--no-defaults,不读取任何选项文件。
•使用--defaults-file = file_name,仅读取命名的文件。
•否则,将读取标准位置列表中的选项文件,包括以-defaults-extra-file = file_name选项命名的任何文件(如果已指定)。 (如果多次给出该选项,则使用最后一个值。)



在读取的选项文件中搜索[mysqld_multi]和[mysqldN]选项组。
[mysqld_multi]组可用于mysqld_multi本身的选项。
[mysqldN]组可用于传递给特定mysqld实例的选项。
[mysqld]或[mysqld_safe]组可用于mysqld或mysqld_safe的所有实例读取的常用选项。
您可以指定--defaults-file = file_name选项为该实例使用其他配置文件,在这种情况下,该文件中的[mysqld]或[mysqld_safe]组将用于该实例。



可以使用如下命令查看更多的帮助信息:[root@CentOS8 bin]# mysqld_multi --help


重要提示:
在使用mysqld_multi之前,请确保您了解传递给mysqld服务器的选项的含义以及为什么要拥有单独的mysqld进程。注意使用具有相同数据目录的多个mysqld服务器的危险。除非您知道自己在做什么,否则请使用单独的数据目录。使用同一数据目录启动多个服务器不会在线程系统中为您带来额外的性能。



确保启动特定mysqld进程的Unix帐户可以完全访问每个服务器的数据目录。除非您知道自己在做什么,否则请勿使用Unix根帐户。


确保用于停止mysqld服务器(使用mysqladmin程序)的MySQL帐户具有与每个服务器相同的用户名和密码。另外,请确保该帐户具有SHUTDOWN特权。如果要管理的服务器具有不同的用户名或管理帐户的密码,您可能希望在每个服务器上创建一个帐户具有相同的用户名和密码。例如,您可以设置一个通用的multi_admin通过对每个服务器执行以下命令来注册帐户:

shell> mysql -u root -S /tmp/mysql.sock -p
Enter password:
mysql> CREATE USER 'multi_admin'@'localhost' IDENTIFIED BY 'multipass';
mysql> GRANT SHUTDOWN ON *.* TO 'multi_admin'@'localhost';



您必须为每个mysqld服务器执行此操作。连接到每个连接参数时,请适当更改连接参数。注意,帐户名的主机名部分必须允许您以multi_admin身份从要运行mysqld_multi的主机进行连接。
•每个mysqld的Unix套接字文件和TCP / IP端口号必须不同。 (或者,如果主机有多个网络地址,则可以设置bind_address系统变量,以使不同的服务器侦听不同的接口。)•如果使用mysqld_safe启动mysqld,则--pid-file选项非常重要。例如,--mysqld = mysqld_safe)每个mysqld应该有自己的进程ID文件。使用mysqld_safe代替mysqld的优点是mysqld_safe监视其mysqld进程,如果该进程由于使用kill -9发送的信号或由于其他原因(例如分段错误)而终止,则将其重启。
•您可能想对MySQLd使用--user选项,但是要这样做,您需要以Unix超级用户(根)的身份运行mysqld_multi脚本。在选项文件中包含选项无关紧要;如果您不是超级用户,并且仅在您自己的Unix帐户下启动mysqld进程,则只会收到警告。



以下示例显示了如何设置与mysqld_multi一起使用的选项文件。 mysqld程序的启动或停止顺序取决于它们在选项文件中出现的顺序。组号不必形成连续的序列。示例中故意省略了第一和第五个[mysqldN]组,以说明您可以在选项文件中包含“空白”。这为您提供了更大的灵活性。


# This is an example of a my.cnf file for mysqld_multi.
# Usually this file is located in home dir ~/.my.cnf or /etc/my.cnf
[mysqld_multi]
mysqld = /usr/local/mysql/bin/mysqld_safe
mysqladmin = /usr/local/mysql/bin/mysqladmin
user = multi_admin
password = my_password
[mysqld2]
socket = /tmp/mysql.sock2
port = 3307
pid-file = /usr/local/mysql/data2/hostname.pid2
datadir = /usr/local/mysql/data2
language = /usr/local/mysql/share/mysql/english
user = unix_user1
[mysqld3]
mysqld = /path/to/mysqld_safe
ledir = /path/to/mysqld-binary/
mysqladmin = /path/to/mysqladmin
socket = /tmp/mysql.sock3
port = 3308
pid-file = /usr/local/mysql/data3/hostname.pid3
datadir = /usr/local/mysql/data3
language = /usr/local/mysql/share/mysql/swedish
user = unix_user2
[mysqld4]
socket = /tmp/mysql.sock4

port = 3309
pid-file = /usr/local/mysql/data4/hostname.pid4
datadir = /usr/local/mysql/data4
language = /usr/local/mysql/share/mysql/estonia
user = unix_user3
[mysqld6]
socket = /tmp/mysql.sock6
port = 3311
pid-file = /usr/local/mysql/data6/hostname.pid6
datadir = /usr/local/mysql/data6
language = /usr/local/mysql/share/mysql/japanese
user = unix_user4

















知识改变命运!

JAVA EE 学习     JAVA EE 资料
JEE Study:企业级开发学习网!
回复

使用道具 举报

高级模式
B Color Image Link Quote Code Smilies

本版积分规则

QQ|Archiver|手机版|小黑屋|JEE Study ( 京ICP备16036936   JeeStudy企业开发官网①

GMT+8, 2024-5-3 21:23 , Processed in 0.220891 second(s), 27 queries .

Powered by JeeStudy!

© 2008-2020 JEE Study 企业级开发学习网

快速回复 返回顶部 返回列表