我修改了mysql_
Munin 的脚本,使函数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 脚本打开一个新连接?