榕榕妈 發表於 2026-1-23 09:13:00

小心my.cnf中重复系统变量设置带来困扰

<p>我们知道MySQL对不同位置的my.cnf文件的读取顺序是有优先级的. 那么问题来了, 如果同一个my.cnf中,不同位置出现了两个相同系统变量/参数, MySQL会读取哪一个系统变量呢? 是不是一个很有意思的问题!</p>
<p>那么我们先来看看,在测试环境的my.cnf中, 我们以变量server_id为例子,</p>
<pre><code class="language-bash">server_id=1002
</code></pre>
<p>我们在my.cnf中新增了一个server_id=1003,如下所示</p>
<pre><code class="language-bash">...................................
server_id=1002
...................................
server_id=1003
</code></pre>
<p>然后重启MySQL服务后,此时,检查系统变量server_id. 经过验证发现<strong>靠后位置的系统变量</strong>生效了, 而前面的系统变量被"覆盖"了.</p>
<pre><code class="language-SQL">mysql&gt; show variables like 'server_id';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| server_id   | 1003|
+---------------+-------+
1 row in set (0.01 sec)

mysql&gt;
</code></pre>
<p>一般来说,这种情况比较少见, 而且也容易排查, 如下所示.</p>
<pre><code>$ grep server_id my.cnf
server_id=1002
server_id=1003
</code></pre>
<p>介绍一个我遇到的案例, 搭建MySQL InnoDB Cluster时,需要在my.cnf中设置参数server_id, 但是之前的my.cnf中设置了server-id系统变量/参数,而在不知情的情况下(没有仔细检查,系统变量太多,搜索的时候只搜索了关键词server_id)设置了server_id系统变量后,重启MySQL实例发现系统变量/参数没有生效. 刚开始挺纳闷的.仔细检查好久后才发现这个问题.所以,这里有衍生了另外一个问题,系统变量要统一一致,不要有些用"中划线",有些用"下划线".</p>
<p>MySQL的系统变量,有时候你会看到下面两种不同“样貌”的系统变量,有时候是下划线,有时候是横线,关于这部分内容的详细说明如下所示:</p>
<pre><code class="language-SQL">log-timestamps=SYSTEM

log_timestamps=SYSTEM
</code></pre>
<p>其实,下划线和横线都支持, 官方文档中称带横线的系统变量为"命令行格式","下划线"的为系统变量(System Variables)</p>
<p>官方文档的介绍:</p>
<p>System variable values can be set globally at server startup by using options on the command line or in an option file.<br>
At startup, the syntax for system variables is the same as for command options, so within variable names, dashes and<br>
underscores may be used interchangeably. For example, --general_log=ON and --general-log=ON are equivalent.</p>
<p>通过使用命令行或选项文件中的选项,可以在服务器启动时全局设置系统变量值。启动时,系统变量的语法与命令选项的语法相同,因此在变量名称中,破折号和下划线可以互换使用。例如, --general_log=ON和 --general-log=ON是等价的。</p>


</div>
<div id="MySignature" role="contentinfo">
    <div id="KerryCodeSignature">
<div>
<img src="https://images.cnblogs.com/cnblogs_com/kerrycode/1913302/o_240731062102_kerrycode.png" height="120" width="500">
</div>
<div>
<b>扫描上面二维码关注我</b>
</div>
<div>如果你真心觉得文章写得不错,而且对你有所帮助,那就不妨帮忙“推荐"一下,您的“推荐”和”打赏“将是我最大的写作动力!</div>
<div>本文版权归作者所有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接.</div>
</div><br><br>
来源:https://www.cnblogs.com/kerrycode/p/19520115
頁: [1]
查看完整版本: 小心my.cnf中重复系统变量设置带来困扰