• ADADADADAD

    mysql 多个参数选项文件my.cnf优先级研究[ mysql数据库 ]

    mysql数据库 时间:2024-12-03 12:15:01

    作者:文/会员上传

    简介:

    my.cnf是mysql服务器在unix平台下默认的配置文件的文件名。

    输入my_print_defaults可以得出mysql server启动时所读取的my.cnf的顺序:(一般为该四个,根据安装方式、OS发行版、

    以下为本文的正文内容,内容仅供参考!本站为公益性网站,复制本文以及下载DOC文档全部免费。

    my.cnf是mysql服务器在unix平台下默认的配置文件的文件名。

    输入my_print_defaults可以得出mysql server启动时所读取的my.cnf的顺序:(一般为该四个,根据安装方式、OS发行版、mysql版本而定)
    或者

      $ mysql --help | grep my.cnf

    /etc/my.cnf /etc/mysql/my.cnf /usr/local/mysql/my.cnf(有的版本写作/usr/local/mysql/etc/my.cnf) ~/.my.cnf

    也就是说,先读取/etc/my.cnf,再去读/etc/mysql/my.cnf,第三个读/usr/local/mysql/my.cnf,其中,第三个为basedir,即mysql安装目录。
    第四个为~/.my.cnf,这个~即为/home/$USERNAME,而$USERNAME为服务器启动用户。


    在手册中给出的顺序是(由上至下读取)

      FileNamePurpose /etc/my.cnfGlobal options /etc/mysql/my.cnf Global options SYSCONFDIR/my.cnf Global options $MYSQL_HOME/my.cnf Server-specific options defaults-extra-file The file specified with --defaults-extra-file=path, if any ~/.my.cnfUser-specific options ~/.mylogin.cnfLogin path options



    但通用的读取先后顺序为:
    /etc/my.cnf /etc/mysql/my.cnf ~/.my.cnf
    省略部分路径。

    其中/etc/my.cnf与/etc/mysql/my.cnf为全局选项文件
    而~/.my.cnf为用户选项文件


    场景一:
    Global options与Global options同时存在。
    即/etc/my.cnf与/etc/mysql/my.cnf同时存在

    疑问:如果/etc/my.cnf存在,还会去找/etc/mysql/my.cnf吗?
    如果是,那么是直接使用/etc/mysql/my.cnf文件
    还是先使用/etc/my.cnf,再用/etc/mysql/my.cnf中呢?如果参数相同,后者覆盖前者吗?


    实验:
    /etc/my.cnf
    [mysqld]
    long_query_time = 15
    slow_query_log = on
    autocommit= off

    /etc/mysql/my.cnf
    [mysqld]
    long_query_time= 12
    slow_query_log = on


    查询:

      mysql> showvariables like 'autocommit';
      +---------------+-------+
      | Variable_name | Value |
      +---------------+-------+
      | autocommit| OFF |
      +---------------+-------+
      1 row in set (0.00 sec)

      mysql> show variables like 'long_query_time';
      +-----------------+-----------+
      | Variable_name | Value|
      +-----------------+-----------+
      | long_query_time | 12.000000 |
      +-----------------+-----------+
      1 row in set (0.01 sec)


    此时先用了/etc/my.cnf中的autocommit=off。
    虽然slow_query_log都有设置,但是参数相同,/etc/mysql/my.cnf优先级更大,故为12s。


    继续实验:
    删除/etc/my.cnf


    $ sudo mv /etc/my.cnf /etc/my.cnf.bk


    重启服务器,查询:

      mysql> show variables like 'autocommit';
      +---------------+-------+
      | Variable_name | Value |
      +---------------+-------+
      | autocommit| ON |
      +---------------+-------+
      1 row in set (0.00 sec)

      mysql> show variables like 'long_query_time';
      +-----------------+-----------+
      | Variable_name | Value|
      +-----------------+-----------+
      | long_query_time | 12.000000 |
      +-----------------+-----------+
      1 row in set (0.01 sec)

    此时只用了/etc/mysql/my.cnf。




    场景二:
    Global options与User-specific options同时存在
    即/etc/my.cnf与~/.my.cnf同时存在


    实验:
    同样先删除其他配置文件,确保只剩如下两个位置:

    /etc/my.cnf
    [mysqld]
    long_query_time = 15
    slow_query_log = on
    autocommit= off


    ~/.my.cnf
    [mysqld]
    long_query_time= 12
    slow_query_log = on


    编辑好后保存退出

    查询:

      mysql> show variables like 'autocommit';
      +---------------+-------+
      | Variable_name | Value |
      +---------------+-------+
      | autocommit | OFF |
      +---------------+-------+
      1 row in set (0.00 sec)

      mysql> show variables like 'long_query_time';
      +-----------------+-----------+
      | Variable_name | Value|
      +-----------------+-----------+
      | long_query_time | 12.000000 |
      +-----------------+-----------+
      1 row in set (0.01 sec)




    autocommit默认是on
    long_query_time默认是10


    说明/etc/my.cnf已经生效
    autocommit= off
    虽然有设置
    long_query_time = 15


    但是
    ~/.my.cnf
    中有设置
    long_query_time = 12
    故~/.my.cnf也有生效,在存在相同选项时,优先级高于Global options的/etc/my.cnf。


    结论:
    当多个my.cnf存在时:
    Global options与User-specific options同时存在时,User-specific options优先级高于Global options并两者都会读取,若选项相同,则优先级高者覆盖前者
    虽然/etc/my.cnf与/etc/mysql/my.cnf均为Global options,但是规则也同样和Global options与User-specific options一致。




    作者微信公众号(持续更新)

    mysql 多个参数选项文件my.cnf优先级研究.docx

    将本文的Word文档下载到电脑

    推荐度:

    下载
    热门标签: my.cnfmysql优先级