MySQL 服务器配置与管理

MySQL 服务器简介
MySQL 服务器指的是mysqld程序,当运⾏mysqld后对外提供MySQL 服务
服务器配置和默认值
mysqld 有很多选项和系统变量可以在启动时进⾏配置
查看所有mysqld 选项和可配置的系统变量列表及默认值 mysqld --verbose --help查看服务器在运⾏时系统变量的值,连接到MySQL并执⾏以下语句
SHOW VARIABLES;查看服务器在运⾏时的⼀些统计和状态指⽰器
SHOW STATUS;注意:系统变量、状态变量的作⽤域分为: Global (全局), Session (当前会话或连接), 或 两者都⽀持
系统变量和选项
当通过mysqld启动数据库服务器时,可以通过选项⽂件或命令⾏中提供选项,但是,在⼤多数情况下,为确保服务器每次运⾏时都使⽤相同的选项,最好的⽅法是在选项⽂件中指定相应的选项。
mysqld从选项⽂件中的 [mysqld] 和 [server] 组(节点)中读取选项内容
常用选项

使⽤系统变量
设置系统变量的语法与命令选项的语法相同,指定变量名称时,破折号和下划线可以互换使⽤。例如, --general_log=ON 和 --general-log=ON 是等价的。

⽰例:为服务器指定 256 KB 的排序缓冲区⼤⼩和 1 GB 的最⼤数据包⼤⼩
# 在命令⾏的指定 mysqld --sort-buffer-size=256K --max-allowed-packet=1G # 在选项⽂件中指定 [mysqld] sort_buffer_size=256k max_allowed_packet=1g
⼤部分系统变量是动态的,在服务器运⾏时可以通过 SET 语句动态更改,并且⽆需停⽌和重新启动服务器。在服务器运⾏时,使⽤ SET 语句设置系统变量,需要指定作⽤域(也可以在前⾯加上@@ 修饰符),然后指定系统变量的名称,名称必须使⽤下划线⽽不是破折号,如下所⽰
mysql> SET GLOBAL max_connections = 1000; mysql> SET @@GLOBAL.max_connections = 1000;将全局系统变量持久化到 mysqld-auto.cnf ⽂件(同时设置运⾏时值):
mysql> SET PERSIST max_connections = 1000; mysql> SET @@PERSIST.max_connections = 1000;将全局系统变量持久化到 mysqld-auto.cnf ⽂件(不设置运⾏时值):
# PERSIST 表⽰持久化的同时设置全局变量的值 mysql> SET PERSIST_ONLY max_connections = 1000; mysql> SET @@PERSIST_ONLY.max_connections = 1000;删除持久化的系统变量可以使⽤语句
RESET PERSIST IF EXISTS system_var_name;服务器常⽤配置
Linux系统下编辑 /etc/mysql/my.cnf
Windows系统下打开C:/ProgramData/MySQL/MySQL Server 8.0/my.ini

注意:
• 编辑前先备份原始⽂件
• 如果要修改数据⽬录选项建议先停⽌MySQL服务,并把原data⽬录整体复制到新路径,配置完
成后重启服务
在 [mysqld] 节点下添加以下内容
# MySQL 服务节点 [mysqld] # MySQL 服务启动后监听的端⼝号 port=3306 # 数据⽬录的路径,这⾥演⽰的是windows下的配置,注意分隔符⽤/,如果是\则需要转义为\\. # 把原data⽬录整体复制到新路径 datadir=D:/database/MySQL/data8.0 # MySQL 服务器的字符集与排序规则 character-set-server=utf8mb4 collation-server=utf8mb4_general_ci # 新建表时使⽤的存储引擎,windows下已默认配置 default-storage-engine=INNODBMySQL数据⽬录

⽇志简介
错误日志,一般查询日志,慢查询日志,二进制日志,中继日志,DDL日志,回滚日志,重做日志

- 默认情况下,除 Windows 上的错误⽇志外,不启⽤任何⽇志,Linux下默认开启错误⽇志和⼆进制⽇志
- 在服务器运⾏期间可以控制⼀般查询和慢查询⽇志的禁⽤与开启,也可以更改⽇志⽂件名
- ⼀般查询⽇志和慢查询⽇志记录可以写⼊⽇志表、⽇志⽂件或两者同时写⼊
默认情况下,所有启⽤的⽇志将写⼊数据⽬录,可以通过刷新⽇志强制服务器关闭并重新打开⽇志⽂件(通过 FLUSH LOGS 语句刷新⽇志来强制服务器关闭并重新打开⽇志⽂件).
⼀般查询⽇志和慢查询⽇志的输出形式
如果启⽤⼀般查询⽇志和慢查询⽇志,⽇志的输出⽅式可以指定为⽇志⽂件或 mysql 系统库中的 general_log 和 slow_log 表,也可以两者同时指定。启动时的日志控制

[mysqld] #⽇志⽂件 log_output=FILE #开启⼀般查询⽇志 general_log=1 #指定⾃定义的⽂件名 general_log_file=/var/lib/mysql/general.log #开启慢查询⽇志 slow_query_log=1 #指定⾃定义的⽂件名 slow_query_log_file=/var/lib/mysql/slow_query.log使用日志的优点
• 可以通过 SQL 语句的条件查询过滤⽇志内容,从⽽选择满⾜特定条件的⽇志记录。
• 可以通过客⼾端程序连接到服务器并查询表中的⽇志信息,⽆需登录服务器主机访问⽂件系统。
• ⽇志记录具有标准格式,可看⽇志表的结构,可以使⽤以下语句:
SHOW CREATE TABLE mysql.general_log; # ⼀般查询⽇志 SHOW CREATE TABLE mysql.slow_log; # 慢查询⽇志⼀般查询⽇志
SHOW CREATE TABLE mysql.general_log;
实例


慢查询日志

慢查询日志的产生条件:
1.执行时间超过阈值
2.检查的行数大于阈值(查询语句返回的结果集包含的行数)
一般来说执行时间包括:执行sql并返回结果的时间+释放锁的时间.
日志内容

日志文件的内容格式

日志表的表结构

错误日志
错误⽇志⼀般会记录mysqld 启动和关闭的次数,诊断消息以及服务器运⾏期间发⽣的错误;
配置错误⽇志
错误⽇志输出的位置,可以是控制台或指定⽂件,"控制台"表⽰ stderr 标准错误输出。



错误日志的核心字段
示例


• 如果使⽤ FLUSH ERROR LOGS 命令刷新错误⽇志,服务器会将正在写⼊的任何错误⽇志⽂件关闭并重新打开。
• 如果要⼿动重命名错误⽇志⽂件,可以在重命名操作之后执⾏刷新操作,服务器会以原⽂件名⽣成⼀个新的错误⽇志⽂件,例如⽇志⽂件名为 host_name.err ,可以按以下步骤操作:
⼆进制⽇志

作用







查看二进制日志

二进制日志格式

Redo Log 和 Undo Log

在⼀台机器上运⾏多个MySQL实例
