美文网首页
Ubuntu下面MySQL的参数文件my.cnf浅析

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

作者: linux服务器开发 | 来源:发表于2018-10-25 14:08 被阅读10次

    前几天刚接手一个 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架构师群: 867748702

    具有1-5工作经验的,面对目前流行的技术不知从何下手,需要突破技术瓶颈的可以加群。

    在公司待久了,过得很安逸,但跳槽时面试碰壁。需要在短时间内进修、跳槽拿高薪的可以加群。

    如果没有工作经验,但基础非常扎实,对java工作机制,常用设计思想,常用java开发框架掌握熟练的可以加群。

    ________________________________________________________________________________________________

    加Java架构师进阶交流群获取Java工程化、高性能及分布式、高性能、深入浅出。高架构。

    性能调优、Spring,MyBatis,Netty源码分析和大数据等多个知识点高级进阶干货的直播免费学习权限

    都是大牛带飞 让你少走很多的弯路的 群号是: 867748702对了 小白勿进 最好是有开发经验

    注:加群要求

    1、具有工作经验的,面对目前流行的技术不知从何下手,需要突破技术瓶颈的可以加。

    2、在公司待久了,过得很安逸,但跳槽时面试碰壁。需要在短时间内进修、跳槽拿高薪的可以加。

    3、如果没有工作经验,但基础非常扎实,对java工作机制,常用设计思想,常用java开发框架掌握熟练的,可以加。

    4、觉得自己很牛B,一般需求都能搞定。但是所学的知识点没有系统化,很难在技术领域继续突破的可以加。

    5.阿里Java高级大牛直播讲解知识点,分享知识,多年工作经验的梳理和总结,带着大家全面、科学地建立自己的技术体系和技术认知!

    相关文章

      网友评论

          本文标题:Ubuntu下面MySQL的参数文件my.cnf浅析

          本文链接:https://www.haomeiwen.com/subject/pooqtqtx.html