source

MariaDB 복제가 작동하지 않을 수 있음

gigabyte 2022. 9. 15. 22:54
반응형

MariaDB 복제가 작동하지 않을 수 있음

Mysql 리플리케이션(마스터/슬레이브)에서 지금까지 본 적이 없는 문제가 있습니다.PHP 스크립트를 실행할 때 "INSERT INTO"와 같은 mysql 콘솔 쿼리에서 매우 잘 작동합니다.이들은 mysql 슬레이브 머신에 완벽하게 복제됩니다.단, Perl 스크립트에서 Perl DBI를 사용하여 동일한 작업을 수행하는 경우에는 그렇지 않습니다.Mysql 마스터 서버에만 저장됩니다.슬레이브 서버의 mysql.log 파일에는 아무것도 도착하지 않습니다.Mysql에서 MariaDB로 2개의 서버를 이행했기 때문에 이 문제가 발생하였습니다.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 드라이버를 사용해야 하므로 복제되지 않을 수 있습니까?예를 들어 $syslog = 'dbi:syslog=syslog;host=myhostname'이 존재한다면?

주의: PHP 스크립트로 삽입된 데이터는 MariaDB로 전환한 후에도 복제되지만 Perl 스크립트로 삽입된 데이터는 복제되지 않습니다.

다음과 같은 간단한 Perl 스크립트를 사용하여 복제가 실패한 이유를 찾았습니다.다음과 같이 기재되어 있습니다.

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

DBI가 "my database"가 아닌 "my database"에 연결되기 때문에 작동하지 않습니다("my database" 참조).INSERT INTO가 데이터베이스 "my database"에 행을 직접 삽입하더라도, MariaDB 마스터 서버는 복제에 대해 행을 무시합니다.MariaDB(버전 5.5.46)가 아닌 MySQL과 완벽하게 연동된 것이 이상합니다.마리아DB의 버그일 수도 있어요

언급URL : https://stackoverflow.com/questions/35048834/mariadb-replication-some-times-does-not-working

반응형