为什么Perl在这个Munin脚本中重用相同的MySQL连接?

时间:2016-08-18 12:49:56

标签: mysql perl munin

我修改了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脚本打开新连接呢?

1 个答案:

答案 0 :(得分:0)

使用手册:

$dsn->disconnect;