mysql服务器配置方法:
mysql服务器,也就是mysqld程序(是一个进程),通俗来说是mysqld一个可使用的工具。我们通过操纵mysqld程序,来配置mysql服务器,达到优化mysql服务器的目的。操纵mysqld程序方法:首先要调用mysqld程序,然后通过指定不同的参数(option)指示mysqld程序需要完成什么工作,最后通过修改参数的不同值达到优化mysql服务器目的。其中mysqld程序读取配置(选项)有三种方法:
-
- 命令行读取—(常用)
- 选项文件(配置文件)读取—(常用)
- 环境变量读取—(很少用)
注意:命令行读取、选项文件读取、环境变量读取都是启动中进行配置mysql服务器,在mysql服务器启动后也就是运行过程中也可对服务器进行配置修改,在运行时使用SET语句更改大多数系统变量的值。
详细操作mysql程序(工具)方法和语法请参照博文https://www.cnblogs.com/zhangxl1016/articles/14632228.html
如何查看mysql服务器可选的配置(选项)?
MySQL服务器—mysqld,有许多命令选项和系统变量,可以在启动时设置。要确定服务器使用的默认命令选项和系统变量详细信息,执行以下命令:
shell> mysqld --verbose --help
该命令生成所有mysqld选项和可配置系统变量的列表。它的输出包括默认选项和变量值,看起来像这样:
...
...
--updatable-views-with-limit=name
YES = Don't issue an error message (warning only) if a
VIEW without presence of a key of the underlying table is
used in queries with a LIMIT clause for updating. NO =
Prohibit update of a VIEW, which does not contain a key
of the underlying table and the query uses a LIMIT clause
(usually get from GUI tools)
-u, --user=name Run mysqld daemon as user.
--validate-user-plugins
Turns on additional validation of authentication plugins
assigned to user accounts.
(Defaults to on; use --skip-validate-user-plugins to disable.)
-v, --verbose Used with --help option for detailed help.
-V, --version Output version information and exit.
--wait-timeout=# The number of seconds the server waits for activity on a
connection before closing it
Variables (--variable-name=value)
and boolean options {FALSE|TRUE} Value (after reading options)
---------------------------------------------------------- --------------
abort-slave-event-count 0 allow-suspicious-udfs FALSE archive ON auto-increment-increment 1 auto-increment-offset 1 autocommit TRUE automatic-sp-privileges TRUE avoid-temporal-upgrade FALSE back-log 80 basedir /home/jon/bin/mysql-8.0/ ... tmpdir /tmp transaction-alloc-block-size 8192 transaction-isolation REPEATABLE-READ transaction-prealloc-size 4096 transaction-read-only FALSE transaction-write-set-extraction OFF updatable-views-with-limit YES validate-user-plugins TRUE verbose TRUE wait-timeout 28800
从输出结果中可以看出,输出结果分为两部分:第一部分是对服务器参数的介绍,第二部分是当前服务器参数的实际参数值。如果需要查询某个参数的定义和当前值,可以用操作系统的命令进行过滤。比如,想知道当前服务器字符集的设置,可以用如下命令查看:
shell> mysqld --vervose --help|grep character-set-server -C, --charavter-set-server=name --character-set-server install). character-set-server gbk
查看服务器运行时实际情况:
1、查看服务器运行时实际使用的当前系统变量值(服务器参数):
连接到服务器并执行以下语句:
mysql> SHOW VARIABLES;
显示信息为数据库启动后不会动态更改的值,比如缓冲区大小、字符集、数据文件名称等。
2、要查看正在运行的服务器的一些统计和状态指标,执行以下语句:
连接到服务器并执行以下语句:
mysql> SHOW STATUS;
显示信息为数据库运行期间动态变化的信息,比如锁等待、当前连接数等。
3、系统变量和状态信息也可以使用mysqladmin命令:
登陆操作系统后并执行以下语句:
shell> mysqladmin variables
shell> mysqladmin extended-status
选项(配置)分类:
1、影响安全性的选项
mysql官网连接:Security-Related mysqld Options and Variables
2、ssl相关选项
mysql官网连接:Command Options for Encrypted Connections
3、二进制日志控制选项
mysql官网连接:The Binary Log
4、与复制相关的选项
mysql官网连接:Replication and Binary Logging Options and Variables
5、加载插件的选项,如可插拔存储引擎
mysql官网连接:Installing and Uninstalling Plugins
6、特定存储引擎的选项
mysql官网连接:InnoDB Startup Options and System Variables and MyISAM Startup Options
如何通过命令行使用选项和通过选项文件(配置文件)使用选项?
当你启动mysqld服务器时,你可以指定程序选项。最常用的方法是在选项文件或命令行中提供选项。但是,在大多数情况下,最好确保服务器每次运行时都使用相同的选项。确保这一点的最好方法是在一个选项文件中列出它们。参照博文(编写中)描述了选项文件的格式和语法。
若是从选项文件指定选项需要注意:
mysqld从[mysqld]和[server]组中读取选项。mysqld_safe从[mysqld], [server], [mysqld_safe]和[safe_mysqld]组中读取选项。mysql.server从[mysqld]和[mysql. php]组中读取选项。
mysqld接受许多命令选项。为了得到一个简要的总结,执行以下命令:
mysqld --help
要查看完整列表,使用以下命令:
mysqld --verbose --help
注意:在运行时使用SHOW VARIABLES语句可显示一些实际上是可以在服务器启动时设置的系统变量。mysqld命令显示的某些项在SHOW VARIABLES输出中没有显示;这是因为它们只是选项而不是系统变量。
1、使用选项需要注意事项:
有些选项控制缓冲区或缓存的大小。对于给定的缓冲区,服务器可能需要分配内部数据结构。这些结构通常从分配给缓冲区的总内存中分配,所需的空间量可能与平台有关。这意味着,当您将一个值分配给控制缓冲区大小的选项时,实际可用的空间量可能与分配的值不同。在某些情况下,值可能小于分配的值。服务器也可能向上调整一个值。例如,如果将最小值为1024的选项赋值为0,服务器会将该值设置为1024。
缓冲区大小、长度和堆栈大小的值以字节为单位给出,除非另有规定。
有些选项接受文件名值。除非另有说明,如果值是相对路径名,则默认文件位置为数据目录(data directory)。若要显式指定位置,请使用绝对路径名。假设数据目录为/var/mysql/data.如果一个文件值选项被作为相对路径名给出,它位于/var/mysql/data.如果该值是绝对路径名,则其位置由路径名给出。
您还可以在服务器启动时使用变量名作为选项来设置服务器系统变量的值。要给服务器系统变量赋值,可以使用——var_name=value形式的选项。例如,——sort_buffer_size=384M将sort_buffer_size变量设置为384MB。
当你给一个变量赋值时,MySQL可能会自动更正这个值,使其保持在给定的范围内,或者在只允许某些值的情况下,将值调整到最接近的允许值。
为了限制在运行时使用set语句设置系统变量的最大值,可以在服务器启动时使用一个选项——maximum-var_name=value指定这个最大值。
您可以在运行时使用SET语句更改大多数系统变量的值。
2、一些最常见的服务器选项
- --help, -?
显示简短的帮助信息并退出。使用--verbose和--help选项来查看完整的消息。
- --basedir=dir_name, -b dir_name
Command-Line Format | --basedir=dir_name |
---|---|
System Variable | basedir |
Scope | Global |
Dynamic | No |
SET_VAR Hint Applies |
No |
Type | Directory name |
Default Value | parent of mysqld installation directory |
MySQL安装目录的路径。该选项设置basedir系统变量。
服务器可执行文件在启动时确定自己的完整路径名,并使用其所在目录的父目录作为默认的basedir值。这又使服务器能够在搜索服务器相关信息(比如包含错误消息的共享目录)时使用该basedir。
- --character-set-client-handshake
Command-Line Format | --character-set-client-handshake[={OFF|ON}] |
---|---|
Type | Boolean |
Default Value | ON |
请不要忽略客户端发送的字符集信息。要忽略客户端信息并使用默认的服务器字符集,请使用--skip-character-set-client-handshake。
- --console
Command-Line Format | --console |
---|---|
Platform Specific | Windows |
(仅适用Windows)。将默认错误日志输出目的设置为控制台。这将影响将自己的输出目标建立在默认目标上的日志接收。如果使用了这个选项,mysqld不会关闭控制台窗口。
如果--log-error和--console两者都给出,则--console优先于--log-error。
- --datadir=dir_name, -h dir_name
Command-Line Format | --datadir=dir_name |
---|---|
System Variable | datadir |
Scope | Global |
Dynamic | No |
SET_VAR Hint Applies |
No |
Type | Directory name |
MySQL服务器数据目录的路径。该选项设置datadir系统变量。
- --default-time-zone=timezone
Command-Line Format | --default-time-zone=name |
---|---|
Type | String |
设置服务器默认时区。该选项设置全局time_zone系统变量。如果没有给出此选项,则默认时区与系统时区相同(由系统变量system_time_zone的值给出)。
- --defaults-extra-file=file_name
在全局选项文件(global option)之后读取这个选项文件,但是(在Unix上)在用户选项文件(user option file)之前读取。如果该文件不存在或无法访问,则会发生错误。如果file_name不是绝对路径名,它将相对于当前目录进行解释。如果要使用它,它必须是命令行上的第一个选项。
作用:如果选项(option)在配置文件中,但是该文件不在MySQL默认读取的位置,那么在运行mysqld时使用--default -extra-file选项指定文件位置。
- --defaults-file=file_name
只读取给定的选项文件。如果该文件不存在或无法访问,则会发生错误。如果file_name不是绝对路径名,它将相对于当前目录进行解释。
例外:即使使用--defaults-file, mysqld也会读取mysqld-auto.cnf。
- --initialize, -I
Command-Line Format | --initialize[={OFF|ON}] |
---|---|
Type | Boolean |
Default Value | OFF |
该选项用于通过创建数据目录和填充MySQL系统模式中的表来初始化MySQL安装。使用--initialize进行“默认安全”安装(即,包括生成随机初始root密码)。在这种情况下,密码被标记为过期,您必须更改一个新的密码。
当与--initialize一起使用时,--ndbcluster选项会被忽略。
--initialize与--daemonize互斥。
- --initialize-insecure
Command-Line Format | --initialize-insecure[={OFF|ON}] |
---|---|
Type | Boolean |
Default Value | OFF |
该选项用于通过创建数据目录和填充MySQL系统模式中的表来初始化MySQL安装。这个选项意味着--initialize。使用--initialize-insecure,不会生成root密码。这是不安全的;假定您打算在将服务器投入生产使用之前及时为该帐户分配密码。
--initialize-insecure与--daemonize互斥。
- --install [service_name]
Command-Line Format | --install [service_name] |
---|---|
Platform Specific | Windows |
(仅适用于Windows)将服务器安装为Windows服务,在Windows启动时自动启动。如果没有service_name的值,默认的服务名是MySQL。
如果使用--defaults-file和--install选项启动服务器,则--install必须在前面。
- --log-error[=file_name]
Command-Line Format | --log-error[=file_name] |
---|---|
System Variable | log_error |
Scope | Global |
Dynamic | No |
SET_VAR Hint Applies |
No |
Type | File name |
将默认错误日志目标接收文件更改为指定的文件。
如果该选项不命名文件,则Unix和Unix-like系统上的默认错误日志目标是一个数据目录(data directory)中名为host_name.err的文件。Windows上的默认目的地是相同的,除非指定了--pid-file选项。在这种情况下,文件名是数据目录(data directory)中带有.err后缀的PID文件基名。
如果该选项指定了一个文件的名称,则默认目标是该文件(如果名称没有后缀,则会添加.err后缀),位于数据目录下,除非给出一个绝对路径名来指定另一个位置。
如果错误日志不能重定向到错误日志文件中,则会出现错误,导致启动失败。
在Windows上,如果给出了--console,则优先于--log-error。在这种情况下,默认的错误日志目标是控制台而不是文件。
- --port=port_num, -P port_num
Command-Line Format | --port=port_num |
---|---|
System Variable | port |
Scope | Global |
Dynamic | No |
SET_VAR Hint Applies |
No |
Type | Integer |
Default Value | 3306 |
Minimum Value | 0 |
Maximum Value | 65535 |
监听TCP/IP连接时使用的端口号。在Unix和Unix-like系统上,端口必须为1024或更高,除非服务器是由root操作系统用户启动的。将此选项设置为0将导致使用默认值。
- --port-open-timeout=num
Command-Line Format | --port-open-timeout=# |
---|---|
Type | Integer |
Default Value | 0 |
在某些系统上,当服务器停止时,TCP/IP端口可能不会立即变得可用。如果随后迅速重启服务器,则重新打开端口的尝试可能会失败。这个选项表示如果不能打开TCP/IP端口,服务器应该等待多长时间来释放该端口。默认是不等待。
- --print-defaults
打印程序名和从选项文件中获取的所有选项。密码值被屏蔽。如果使用它,它必须是命令行上的第一个选项,除非它可以在--defaults-file或--defaults-extra-file之后立即使用。
- --remove [service_name]
Command-Line Format | --remove [service_name] |
---|---|
Platform Specific | Windows |
(仅适用于Windows)删除MySQL Windows服务。如果没有service_name的值,默认的服务名是MySQL。