LEMP部署之MySQL的安装配置与优化

By | February 17, 2018

安装 MySQL 5.6

由于 CentOS 7 如果安装 MySQL,將会安装的是 Mariadb,但我要的是 MySQL,所以要添加 MySQL 的软件源到系统的本地软件库中。为了兼顾系统资源,所以选择 MySQL 5.6。

  1. 安装 MySQL 社区版的软件库
yum install http://dev.mysql.com/get/mysql-community-release-el7-5.noarch.rpm
yum update -y
  1. 查看当前的本地仓库
yum repolist enabled | grep "mysql.*-community.*"

执行结果:

mysql-connectors-community/x86_64   MySQL Connectors Community  45
mysql-tools-community/x86_64    MySQL Tools Community   57
mysql56-community/x86_64    MySQL 5.6 Community Server  378

好了,现在确定本地软件仓库中已经有了 MySQL 5.6 这个版本的软件了。

  1. 执行安装 MySQL
yum install -y mysql-community-server

配置 MySQL

  1. 启动 MySQL
systemctl start mysqld
  1. 开机启动 MySQL
systemctl enable mysqld
  1. MySQL 设置向导
mysql_secure_installation

执行结果:

Enter current password for root (enter for none): [由于是首次设置,直接按回车]
OK, successfully used password, moving on...
Set root password? [Y/n] [选 Y 设置新的 Root 用户密码]
New password: 
Re-enter new password: 
Password updated successfully!
Reloading privilege tables..
... Success!
Remove anonymous users? [Y/n] [选 Y]
... Success!
...
都按自己意愿选择就是了,建议全部选 Y。
  1. 尝试以刚才更换的密码登录 MySQL
    mysql -uroot -p
    Enter password: 输入先前设定的密码登录
  2. 登录成功,然后执行mysql> show variables like '%char%'; 获取数据库相关的编码信息:
+--------------------------+----------------------------+
| Variable_name            | Value                      |
+--------------------------+----------------------------+
| character_set_client     | utf8                       |
| character_set_connection | utf8                       |
| character_set_database   | latin1                     |
| character_set_filesystem | binary                     |
| character_set_results    | utf8                       |
| character_set_server     | latin1                     |
| character_set_system     | utf8                       |
| character_sets_dir       | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+

从上面的执行结果可以看出有两项编码为 latin1,显然不是支持中文的字符集编码,所以要配置一下 MySQL 使之变成 UTF-8 编码。
6. 修改 MySQL 的配置文件以使用其服务器和客户端支持中文编码
追加以下内容到 /etc/my.cnf 文件:

[mysqld]
character-set-server=utf8
[client]
default-character-set=utf8

保存文件,并重启 MySQL systemctl restart mysqld
7. 登录 MySQL,再次查询编码信息

show variables like '%char%';

执行结果:

+--------------------------+----------------------------+
| Variable_name            | Value                      |
+--------------------------+----------------------------+
| character_set_client     | utf8                       |
| character_set_connection | utf8                       |
| character_set_database   | utf8                       |
| character_set_filesystem | binary                     |
| character_set_results    | utf8                       |
| character_set_server     | utf8                       |
| character_set_system     | utf8                       |
| character_sets_dir       | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+

达到预期。

于此,MySQL 已经配置完成。

优化 MySQL

因为默认情况下 MySQL 占用太多的系统资源,所以要优化几个参数,使其适应小内存服务器的运行环境,不那么易宕机。

  1. query_cache_type
    • 默认值为 0,表示查询缓存不可用,此时的 query_cache_size 值为 1M。
    • 如果值为 1,表示对查询语句不以SELECT SQL_NO_CACHE为开头时启用查询缓存。
    • 如果值为 2,表示只有以SELECT SQL_CACHE为查询语句开头时启用缓存。
    • 每个连接到 MySQL 服务器的客户端会话都可以有自己对query_cache_type的单独设置。例如:mysql> SET SESSION query_cache_type = OFF;
    • 如果query_cache_size设为 0,那么query_cache_type也应该设为 0。当query_cache_size不为 0 时,查询缓存至少需要分配 40KB的空间。
  2. query_cache_size
    • 默认禁用。此时的值为 1M。
    • 允许的值必须是 1024 的整数倍,其他值向下取整为最近的倍数。
    • 如果值不为 0,那么依然会分配一些比特的空间给运行时。
    • 构造它需要分配 40KB 空间。
    • 1GB 内存的服务器建议设为 32M
  3. performance_schema
    • performance_schema 作为一个存储引擎的实现。
    • 默认值为 ON,通过以下的查询,如果默认情况下值是 OFF,那么表示发生了错误。
    show variables like 'performance_schema';
    +--------------------+-------+
    | Variable_name      | Value |
    +--------------------+-------+
    | performance_schema | ON    |
    +--------------------+-------+
    1 row in set (0.00 sec)
* 可以把值设为 OFF 来禁用它。
* 由于内存空间有限,为了提高性能,所以禁用它。

暂时就优化这三项,最终,编辑 /etc/my.cnf 文件,在[mysqld]块内追加如下内容:

query_cache_type = 1
query_cache_size = 32MB
## 关闭以减轻内存负担
performance_schema = off

重启 MySQL 进程

Create On: 2018-02-16

参考资料

query_cache_size
8.10.3.3 Query Cache Configuration
22.1 Performance Schema Quick Start

移步:https://blog.linuxeye.cn/379.html 还有更多的调优技巧,专门为 1GB 小内存服务器而配置。

鉴于本人的相关知识储备以及能力有限,本博客的观点和描述如有错漏或是有考虑不周到的地方还请多多包涵,也欢迎指正,一起学习,共同进步。如果本文对您有帮助,而且让您觉得值得为内容付费,那么就请赞助(打赏)一下本人,这不强制。打赏支持微信支付,方法是使劲地戳一下下方的“打赏”按钮,然后得到微信收款的二维码,再用微信支付扫一下,就像买菜那样。祝好!