MySQL 配置基础

MySQL作为一种常见的数据库管理系统(DBMS),其自身的各种配置项极大的影响了其性能。所以有必要进行了解和学习。

配置学习资源途径

我最近在看《高性能Mysql》,其中第8章讲解了关于配置的很多事项,都值得了解和学习。当然,官网也是最新信息查阅的重要渠道。

官网【可在5.1 TheMySQL Server找到配置解释。可在5.4找到BinLog相关内容。 】

MySQL配置

配置文件位置:

一般来说,MySQL服务端配置文件的默认位置是:/etc/my.cnf 或者 /etc/mysql/my.cnf
【也可以通过mysqld --verbose --help|grep -A 1 'Default option'确认配置文件的位置】

和nginx类似,也是分目录进行include,便于查看。 (比如 !includedir /etc/my.cnf.d

配置修改基础:

1、mysql配置文件是分段的,要注意配置项放在了正确的段里(比如服务器主要用 [mysqld] 这一段

1、副作用: 一些配置项会产生副作用,临时修改配置需要非常小心。(比如变更 query\_cache\_size立即删除所有查询的缓存,重新构建。
2、变量的值:变量不是越大越好,可能会导致内存交换或者超出地址空间。需要跟进情况设定。

2、配置项有不同的作用域,有的是全局,有的是会话。其次,还有动态变量,可在运行时修改。
3、全局变量:修改后对当前会话及已存在的会话均不生效。可通过SHOW GLOBAL VARIABLES确认。
4、变量的单位:配置时要注意单位,命令行或者配置文件,可以使用后缀指定单位(比如1M等,但要注意,使用SQL的SET指令时就不能使用单位
5、配置文件管理:最好使用git来进行版本管理,加上充足的注释。可以避免不少问题。

如何创建一个靠谱的MySQL配置?

1、一个好的配置,不是从学习配置项开始,也不是询问怎么设置或者怎么修改,更不是观察服务器行为和询问哪个配置可以提升性能。
【应该是从理解MySQL内核和行为开始
2、保证基础配置都正确(比如日志路径,缓存配置,端口号,数据库存储位置等。如非必要,尽量使用默认配置。(默认配置经受过的测试是最多的。
3、优先进行语句优化等其他优化,最后考虑修改配置项

一个最小配置示例

一般来说,选择尽量少的配置(或者说最小配置),如无必要,不用声明(不声明使用默认值)。

当然一些非常重要的配置项,即使使用默认配置,也最好声明出来。(比如default_storage_engine)

见《高性能MySQL》P336

如何创建合理的MySQL配置文件?

{下面的配置项基本都基于上述参考最小配置}
1、Innodb的配置项:

  • innodb_buffer_pool_size 【最核心配置,innodb严重依赖缓冲池。索引、行数据缓存、哈希索引,插入缓存、锁等。必须为innodb配置足够的缓冲池。[ 《高性能MySQL》P343
  • innodb_log_file_size 【日志文件配置
  • innodb_file_per_table
  • innodb_flush_method

2、MySQL配置项:

  • thread_cache 【根据Thread_connected来判断,如果线程数较多,可以适当调大这个值。
  • table_cache

如何确认MySQL当前的状态变量?

1、SHOW GLOBAL STATUS
【或者可以通过SHOW、innotop等工具,确认innodb等的内存利用情况。
2、mysqladmin extended-status -ri60
每60秒查看状态变量的增值

你可能感兴趣的:(mysql,数据库)