:::: MENU ::::

株式会社バックスラッシュ

岐阜県関市にあるかゆい所に手が届くコンピュータ屋さん

mysqlhotcopyのエラー回避

  • 3月 10 / 2010
  • 0
CentOS, サーバ, 覚書

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

}

Leave a comment