Ubuntu下面MySQL的参数文件my.cnf浅析

前几天刚接手一个 MySQL 数据,操作系统为Ubuntu 16.04.5 LTS, 数据库版本为 5.7.23-0ubuntu0.16.04.1(APT方式安装的MySQL)。这个操作系统下的 MySQL 的配置文件 my.cnf 很多地方都让人有点不适应(跟之前的 MySQL 环境有些出入,之前都是维护 RHEL、CentOS 等操作系统环境下的 MySQL)。遂研究总结了一下。具体如下所示:

    root@mylnx12:~# find / -name "my.cnf"

    /etc/alternatives/my.cnf

    /etc/mysql/my.cnf

    /var/lib/dpkg/alternatives/my.cnf

    root@mylnx12:~# locate my.cnf

    /etc/alternatives/my.cnf

    /etc/mysql/my.cnf

    /etc/mysql/my.cnf.fallback

    /var/lib/dpkg/alternatives/my.cnf

    root@mylnx12:~# mysql --help | grep my.cnf

                          order of preference, my.cnf, $MYSQL_TCP_PORT,

    /etc/my.cnf /etc/mysql/my.cnf ~/.my.cnf

    root@mylnx12:~#  mysqld --verbose --help | grep -A 1 'Default options'

    Default options are read from the following files in the given order:

    /etc/my.cnf /etc/mysql/my.cnf ~/.my.cnf

从上面这些信息判断,MySQL 的参数文件为 /etc/mysql/my.cnf, 但是其他几个 my.cnf 又是什么情况呢?

    root@mylnx12:~# ls -lrt /etc/alternatives/my.cnf

    lrwxrwxrwx 1 root root 20 Sep 28 16:28 /etc/alternatives/my.cnf -> /etc/mysql/mysql.cnf

从上面信息可以看出,/etc/alternatives/my.cnf 其实是一个软连接,指向参数文件 /etc/mysql/mysql.cnf

    root@mylnx12:~# cat /var/lib/dpkg/alternatives/my.cnf

    auto

    /etc/mysql/my.cnf

 

    /etc/mysql/my.cnf.fallback

    100

    /etc/mysql/mysql.cnf

    200

光从上面这些信息,我们还看不出 /var/lib/dpkg/alternatives/my.cnf 与其它配置文件 my.cnf 是什么关系。那么我们先来看看参数文件 /etc/mysql/my.cnf,从下面信息,可以看出 “/etc/mysql/my.cnf” 是全局配置,“~/.my.cnf” 隐藏文件是个人用户设置。

    root@mylnx12:~# cat /etc/mysql/my.cnf

    #

    # The MySQL database server configuration file.

    #

    # You can copy this to one of:

    # - "/etc/mysql/my.cnf" to set global options,

    # - "~/.my.cnf" to set user-specific options.

    #

    # One can use all long options that the program supports.

    # Run program with --help to get a list of available options and with

    # --print-defaults to see which it would actually understand and use.

    #

    # For explanations see

    # http://dev.mysql.com/doc/mysql/en/server-system-variables.html

 

    #

    # * IMPORTANT: Additional settings that can override those from this file!

    #  The files must end with '.cnf', otherwise they'll be ignored.

    #

 

    !includedir /etc/mysql/conf.d/

    !includedir /etc/mysql/mysql.conf.d/

但是 /etc/mysql/my.cnf 参数文件下面没有任何参数设置,只看到下面两行设置,表示导入这两个目录里面的配置文件。

    !includedir /etc/mysql/conf.d/

    # 表示包含 /etc/mysql/conf.d/ 这个路径下面的配置文件,前提是必须以为 .cnf 为后缀

 

 

 

    !includedir /etc/mysql/mysql.conf.d/

# 表示包含 /etc/mysql/mysql.conf.d/ 这个路径下面的配置文件,前提是必须以为 .cnf 为后缀

其实MySQL的相关配置都位于 mysqld.cnf(/etc/mysql/mysql.conf.d/mysqld.cnf)下面。使用相关参数测试了一下,确实都能生效。这种设置确实有点让刚接触的人有点不适应。暂时先总结到此!

    root@mylnx12:~# cd /etc/mysql/mysql.conf.d/

    root@mylnx12:/etc/mysql/mysql.conf.d# ls -lrt

    total 8

    -rw-r--r-- 1 root root  21 Feb  4  2017 mysqld_safe_syslog.cnf

    -rw-r--r-- 1 root root 3148 Oct  6 23:34 mysqld.cnf

    root@mylnx12:/etc/mysql/mysql.conf.d# cat mysqld.cnf

    #

    # The MySQL database server configuration file.

    #

    # You can copy this to one of:

    # - "/etc/mysql/my.cnf" to set global options,

    # - "~/.my.cnf" to set user-specific options.

    #

    # One can use all long options that the program supports.

    # Run program with --help to get a list of available options and with

    # --print-defaults to see which it would actually understand and use.

    #

    # For explanations see

    # http://dev.mysql.com/doc/mysql/en/server-system-variables.html

 

    # This will be passed to all mysql clients

    # It has been reported that passwords should be enclosed with ticks/quotes

    # escpecially if they contain "#" chars...

    # Remember to edit /etc/mysql/debian.cnf when changing the socket location.

 

    # Here is entries for some specific programs

    # The following values assume you have at least 32M ram

 

    [mysqld_safe]

    socket          = /var/run/mysqld/mysqld.sock

    nice            = 0

 

    [mysqld]

    #

    # * Basic Settings

    #

    user            = mysql

    pid-file        = /var/run/mysqld/mysqld.pid

    socket          = /var/run/mysqld/mysqld.sock

    port            = 3306

    basedir        = /usr

    datadir        = /var/lib/mysql

    tmpdir          = /tmp

    lc-messages-dir = /usr/share/mysql

    skip-external-locking

    log_bin        =  mylnx12_bin

    server_id      = 0

    character-set-server=utf8mb4

    collation-server=utf8mb4_general_ci

 

    #

    # Instead of skip-networking the default is now to listen only on

    # localhost which is more compatible and is not less secure.

    bind-address            = 10.21.6.7

    #

    # * Fine Tuning

    #

    key_buffer_size        = 16M

    max_allowed_packet      = 100M

    thread_stack            = 192K

    thread_cache_size      = 8

    # This replaces the startup script and checks MyISAM tables if needed

    # the first time they are touched

    myisam-recover-options  = BACKUP

    #max_connections        = 100

    #table_cache            = 64

    #thread_concurrency    = 10

    #

    # * Query Cache Configuration

    #

    query_cache_limit      = 1M

    query_cache_size        = 16M

    #

    # * Logging and Replication

    #

    # Both location gets rotated by the cronjob.

    # Be aware that this log type is a performance killer.

    # As of 5.1 you can enable the log at runtime!

    #general_log_file        = /var/log/mysql/mysql.log

    #general_log            = 1

    #

    # Error log - should be very few entries.

    #

    log_error = /var/log/mysql/error.log

    #

    # Here you can see queries with especially long duration

    #log_slow_queries      = /var/log/mysql/mysql-slow.log

    #long_query_time = 2

    #log-queries-not-using-indexes

    #

    # The following can be used as easy to replay backup logs or for replication.

    # note: if you are setting up a replication slave, see README.Debian about

    #      other settings you may need to change.

    #server-id              = 1

    #log_bin                        = /var/log/mysql/mysql-bin.log

    expire_logs_days        = 10

    max_binlog_size  = 100M

    #binlog_do_db          = include_database_name

    #binlog_ignore_db      = include_database_name

    #

    # * InnoDB

    #

    # InnoDB is enabled by default with a 10MB datafile in /var/lib/mysql/.

    # Read the manual for more InnoDB related options. There are many!

    #

    # * Security Features

    #

    # Read the manual, too, if you want chroot!

    # chroot = /var/lib/mysql/

    #

    # For generating SSL certificates I recommend the OpenSSL GUI "tinyca".

    #

    # ssl-ca=/etc/mysql/cacert.pem

    # ssl-cert=/etc/mysql/server-cert.pem

    #: ssl-key=/etc/mysql/server-key.pem


欢迎工作一到五年的Java工程师朋友们加入Java架构开发
: 867748702
群内提供免费的Java架构学习资料(里面有高可用、高并发、高性能及分布式、
Jvm性能调优、Spring源码,MyBatis,Netty,Redis,Kafka,Mysql,Zookeeper,
Tomcat,Docker,Dubbo,Nginx等多个知识点的架构资料)
合理利用自己每一分每一秒的时间来学习提升自己,
不要再用"没有时间“来掩饰自己思想上的懒惰!趁年轻,使劲拼,给未来的自己一个交代!

转载于:https://my.oschina.net/u/3997182/blog/2252348

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值