mysqlhotcopyのエラー回避

mysqlhotcopyがエラーを出していたので、回避策を講じる。

エラーは、
「DBD::mysql::db do failed: You can't use locks with log tables. at /usr/local/bin/mysqlhotcopy line 452.」
となっていた。

mysqlhotcopyを修正して完了

# vi /usr/local/bin/mysqlhotcopy
sub get_list_of_tables {
my ( $db ) = @_;

my $tables =
eval {
$dbh->selectall_arrayref('SHOW TABLES FROM ' .
$dbh->quote_identifier($db))
} || [];
warn "Unable to retrieve list of tables in $db: $@" if $@;

#return (map { $_->[0] } @$tables); ← 行頭に#を追加してコメントアウト

### add ###

my @ignore_tables = ();

# Ignore tables for the mysql database
if ($db eq 'mysql') {
@ignore_tables = qw(general_log slow_log schema apply_status);
}

my @res = ();
if ($#ignore_tables > 1) {
my @tmp = (map { $_->[0] } @$tables);
for my $t (@tmp) {
push(@res, $t) if not exists { map { $_=>1 } @ignore_tables }->{$t};
}
} else {
@res = (map { $_->[0] } @$tables);
}

return @res;

### add end ###

}

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です