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 ###
}