PT-1556 binlog_format should be STATEMENT on master

On the master, binlog_format should be always STATEMENT on master

Resolves: #PT-1527
This commit is contained in:
Carlos Salguero
2018-05-18 12:42:51 -03:00
parent 4ac6333b6c
commit 81efd315e2

View File

@@ -10052,30 +10052,28 @@ sub main {
# instead, it should check if it's already set to STATEMENT. # instead, it should check if it's already set to STATEMENT.
# This is becase starting with MySQL 5.1.29, changing the format # This is becase starting with MySQL 5.1.29, changing the format
# requires a SUPER user. # requires a SUPER user.
if ( $o->get('check-binlog-format') ) { if ( VersionParser->new($dbh) >= '5.1.5' ) {
if ( VersionParser->new($dbh) >= '5.1.5' ) { $sql = 'SELECT @@binlog_format';
$sql = 'SELECT @@binlog_format'; PTDEBUG && _d($dbh, $sql);
PTDEBUG && _d($dbh, $sql); my ($original_binlog_format) = $dbh->selectrow_array($sql);
my ($original_binlog_format) = $dbh->selectrow_array($sql); PTDEBUG && _d('Original binlog_format:', $original_binlog_format);
PTDEBUG && _d('Original binlog_format:', $original_binlog_format); if ( $original_binlog_format !~ /STATEMENT/i ) {
if ( $original_binlog_format !~ /STATEMENT/i ) { $sql = q{/*!50108 SET @@binlog_format := 'STATEMENT'*/};
$sql = q{/*!50108 SET @@binlog_format := 'STATEMENT'*/}; eval {
eval { PTDEBUG && _d($dbh, $sql);
PTDEBUG && _d($dbh, $sql); $dbh->do($sql);
$dbh->do($sql); };
}; if ( $EVAL_ERROR ) {
if ( $EVAL_ERROR ) { die "Failed to $sql: $EVAL_ERROR\n"
die "Failed to $sql: $EVAL_ERROR\n" . "This tool requires binlog_format=STATEMENT, "
. "This tool requires binlog_format=STATEMENT, " . "but the current binlog_format is set to "
. "but the current binlog_format is set to " ."$original_binlog_format and an error occurred while "
."$original_binlog_format and an error occurred while " . "attempting to change it. If running MySQL 5.1.29 or newer, "
. "attempting to change it. If running MySQL 5.1.29 or newer, " . "setting binlog_format requires the SUPER privilege. "
. "setting binlog_format requires the SUPER privilege. " . "You will need to manually set binlog_format to 'STATEMENT' "
. "You will need to manually set binlog_format to 'STATEMENT' " . "before running this tool.\n";
. "before running this tool.\n"; }
} }
}
}
} }
# Set transaction isolation level. We set binlog_format to STATEMENT, # Set transaction isolation level. We set binlog_format to STATEMENT,