MariaDB复制有时不起作用

时间:2016-01-27 21:56:09

标签: perl mariadb

我有一个我以前从未见过的Mysql复制问题(主/从): 当我在我的PHP脚本上执行时,它在mysql控制台查询上非常有效,例如" INSERT INTO"。它们完全复制在mysql slave机器上。 但是:如果我使用Perl DBI在Perl脚本上执行相同的操作,那就不行了。然后它只存储在Mysql主服务器上。在从属服务器上的mysql.log文件中,没有任何内容到达。我有这个问题,因为我在两台服务器上从Mysql迁移到MariaDB。 有没有Perl DBI客户端应该完全复制的东西?

我使用这个简单的代码来插入数据:

#!/usr/bin/perl
use DBI;
$dsn = 'dbi:mysql:database=mysql;host=myhostname';
$dbh = DBI->connect($dsn, 'mouser', 'password',
            { RaiseError => 1, AutoCommit => 0 }) || exit(1);
...
$sth = $dbh->prepare("INSERT INTO mydatabase.mytable (user, domain) VALUES('$account_name', '$domain')");
$sth->execute();
$dbh->commit();

它是否可能不会复制,因为DBI应该使用mariadb驱动程序?就像$ dsn =' dbi:mariadb:database = mysql; host = myhostname&#39 ;;如果存在?

要明确:切换到MariaDB后,仍然会复制插入PHP脚本的数据,但使用Perl脚本插入的数据不是。

1 个答案:

答案 0 :(得分:2)

我通过这个简单的Perl脚本找到了复制失败的原因: 写道:

$dsn = 'dbi:mysql:database=mysql;host=myhostname';
...
$sth = $dbh->prepare("INSERT INTO mydatabase.mytable (user, domain) VALUES('$account_name', '$domain')");

这不起作用,因为DBI连接到数据库" mysql"而不是" mydatabase" (参见" database = mysql")。即使INSERT INTO直接在数据库" mydatabase"中插入行,MariaDB主服务器也会忽略它以进行复制。奇怪的是它与MySQL完美配合而不是MariaDB(版本5.5.46)。也许它是MariaDB中的一个错误,我不知道。