mysql服务配置
服务器配置和状态:
通过mysqld的选项查看: 服务配置选项、服务器系统变量、状态变量
官方文档:
- mysql的: https://dev.mysql.com/doc/refman/5.7/en/server-option-variable-reference.html
- mariadb的: https://mariadb.com/kb/en/library/full-list-of-mariadb-options-system-and-status-variables/
mysql的官方文档说明:
- cmd-line 列是服务启动时可用的配置参数(命令行)
- option file 是配置文件中可写的参数
- system var 是系统变量
- status var
- var scope 是变量范围,global是全局,both既是全局有时服务配置选项,session是只针对当前会话生效
- dynamic 为是否支持动态不修改(用set 修改)
mariadb的官方文档说明:
- 参数间用"-"分隔是服务配置选项
- “_”是变量,如果两种都有,就是都可用的
服务选项:
/usr/libexec/mysqld --verbose --help 服务器选项查看
mysqld --print-defaults 查看当前运行mysqld使用选项
设置服务器选项方法:
方法一:
/usr/bin/mysqld_safe --skip-name-resolve=1
/usr/libexec/mysqld --basedir=/usr
方法二:
vim /etc/my.cnf
[mysqld]
skip_name_resolve=1
skip-grant-tables
服务系统变量:
SHOW GLOBAL VARIABLES; #只查看global变量
SHOW [SESSION] VARIABLES; #查看所有变量(包括global和session)
SHOW VARIABLES LIKE 'VAR_NAME'; 查看指定的系统变量
SELECT @@VAR_NAME 查看指定的系统变量
修改系统变量:
SET GLOBAL system_var_name=value;
SET [SESSION] system_var_name=value;
sql_mode变量:
改变sql的执行方式、行为
常见参数:
| no_auto_create_user | 禁止grant命令创建空密码用户 |
| no_zero_date | 严格模式下,不允许使用‘0000-00-00’格式时间 |
| only_full_group_by | 进行分组操作时,select的字段必须是跟条件字段、显示字段有关 |
| no_backslash_escapes | "\"作为普通字符,而不是转义符 |
| pippes_as_concat | 将“||”作为连接操作符,而非运算符 |
| tradition | 字符数量严格模式,如:varchar(3),就不能插入超过3个字符 |
修改最大连接数,跟用户max_open_file有关联
方法一:
vim /usr/lib/systemd/system/mariadb.service
[Service]
LimitNOFILE=65535
方法二:
mkdir /etc/systemd/system/mariadb.service.d/
vim /etc/systemd/system/mariadb.service.d/limits.conf
[Service]
LimitNOFILE=65535
修改页大小
说明:
- 初始化数据目录后,不能更改此系统变量的值。 在MariaDB实例启动时设置InnoDB的页面大小,此后保持不变
vim /etc/my.cnf.d/mariadb-server.cnf
innodb_page_size
状态变量:
用于保存mysqld运行中的统计数据的变量,不可更改
SHOW GLOBAL STATUS;
SHOW [SESSION] STATUS;
常见状态变量:
mysql -e 'show global status where variable_name="uptime"'
mysql -e 'show global status'|grep -i uptime
| Uptime | 服务器已经运行的实际,单位秒 |
| Questions | 已经发送给数据库查询数 |
| Com_select | 查询次数,实际操作数据库的 |
| Com_insert | 插入次数 |
| Com_delete | 删除次数 |
| Com_update | 更新次数 |
| Com_commit | 事务次数 |
| Com_rollback | 回滚次数 |
| Innodb_log_waits | 因log buffer不足导致等待的次数 |
| Innodb_os_log_pending_fsyncs | redo log的pending 同步次数 |
| Threads_cached | cached的线程数 |
| Max_used_connections | 自启动以来最大会话连接数 |
| Connections | mysql启动后的连接次数 |
| Threads_created | 创建的线程数,值过大可增加thread_cache_size。缓存未命中率可以计算为 Threads_created/ Connections |
| Threads_connected | mysql当前打开的连接数 |
| Threads_running | mysql当前未休眠线程数,一般要小于会话连接数 |
| Created_tmp_disk_tables | 创建的on-disk临时表数量 |
| Handler_read_first | 读取索引第一个字符的次数,如果该指标很高说明系统进行了大量的full index scan,例如select col1 from foo(col1列有索引) |
| Handler_read_key | 通过key值读取行的次数,说明query很好的利用了索引 |
| Innodb_buffer_pool_wait_free | 说明buffer pool没有空闲内存了,有多种原因,最常见的是Buffer pool太小 |
| Select_full_join | 执行表扫描的joins数量(没有使用索引) |
| Slow_queries | 慢查询的数量 |
| Open_tables | 当前打开表的数量 |

浙公网安备 33010602011771号