我修改了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脚本打开新连接呢?
答案 0 :(得分:0)
使用手册:
$dsn->disconnect;