【发布时间】:2016-12-27 02:59:36
【问题描述】:
我已经修改了来自 Munin 的脚本 mysql_,使函数 do_connect 看起来像这样:
sub db_connect {
my $dsn = "$config{dsn};mysql_socket=$config{mysqlsocket};mysql_connect_timeout=5;";
return DBI->connect($dsn, $config{user}, $config{password}, {
RaiseError => 1,
PrintError => 0,
FetchHashKeyName => 'NAME_lc',
});
}
我已配置plugins-conf 为环境变量mysqlsocket 中反映的套接字设置不同的值。因此,每个实例都有自己的 env.mysqlsocket 值。当我使用
$ for i in a b c; do munin-run mysql_${i}_innodb_rows; done
然后第一个连接(a 按此顺序)打开一个连接,供后续连接使用,而不是它们的套接字。连接字符串是正确的,它们确实发生了变化。
DBI->connect 未执行。我可以通过将套接字文件名设置为不存在的文件来证明这一点;它再次重用相同的连接。
我想知道,因为这些是符号链接脚本的独立进程。
我怎样才能强制我的 Perl 脚本打开一个新连接?
【问题讨论】: