このスレッドは未解決です(解決したらこちらで解決済にしてください)
<<戻る

MySQLでハイフンを含むDB名の自動バックアップ このメッセージに返信する
日時: 2011/03/03 21:35
名前: atsushi
URL:
いつもお世話になっております。

下記ページを参考に、
MySQLの自動バックアップを行っているのですが、
ハイフンを含むDB名がある場合にエラーになってしまいます。

MySQLデータベース自動バックアップ運用(mysqlhotcopy) - CentOSで自宅サーバー構築
http://centossrv.com/mysql-backup.shtml

▼エラー内容
ERROR 1049 (42000): Unknown database 'aaa@002dbbb'
(「aaa-bbb」というDB名の場合)


「データベースが見つからない」ということで、
「-」が「@002d」に置き換わっているように見受けられたので、
下記のようにスクリプトを修正してみました。
(「/var/lib/mysql/」には「aaa@002dbbb」というディレクトリがありますが、実際に作成したDB名は「aaa-bbb」です。)

▼修正したスクリプト
#DBLIST=`ls -p /var/lib/mysql | grep / | tr -d /`
DBLIST=`ls -p /var/lib/mysql | grep / | tr -d / | sed -e "s/@002d/-/g"`


上記スクリプトを実行してみたのですが、
今度は「aaa-bbb」というディレクトリがないと言われてしまいました。

▼エラー内容
Cannot open dir '/var/lib/mysql/aaa-bbb': そのようなファイルやディレクトリはありません at /usr/bin/mysqlhotcopy line 297.


ハイフンを含むデータベース名を自動バックアップするには、
どのようにするのが良いでしょうか?

「ハイフンを含むデータベース名を付けない」という方法もあるかと思いますが、
諸事情によりハイフンを含む形で運用したいと考えております。

どうぞご教授いただけますよう、よろしくお願いいたします。
記事編集 編集
Re: MySQLでハイフンを含むDB名の自動バックアップ このメッセージに返信する
日時: 2011/03/03 22:27
名前: ペングイン
URL: http://blog.trippyboy.com
http://bugs.mysql.com/bug.php?id=44278

バグのようです。

私はDBのバックアップをmysqldumpでしています。

mysqldump なら問題ないようです。
--------------
mysqldump -u user -pパスワード hello-world > hello

# grep Database hello
-- Host: localhost Database: hello-world
#

記事編集 編集
Re: MySQLでハイフンを含むDB名の自動バックアップ このメッセージに返信する
日時: 2011/03/16 14:50
名前: atsushi
URL:
> ペングイン様

コメントありがとうございます。
また、お返事が遅くなってしまい、申し訳ありません。


> http://bugs.mysql.com/bug.php?id=44278
> バグのようです。

バグなんですね。
それは仕方がないですね……。


ペングイン様からご教授いただいた方法で、
バックアップスクリプトを修正してみました。

▼修正箇所
# データベース名取得
#DBLIST=`ls -p /var/lib/mysql | grep / | tr -d /`
DBLIST=`ls -p /var/lib/mysql | grep / | tr -d / | sed -e "s/@002d/-/g"`

# データベースごとにバックアップ
for dbname in $DBLIST
do
table_count=`mysql -u root -p$ROOTPASS -B -e "show tables" $dbname|wc -l`
[ $table_count -ne 0 ] &&
#mysqlhotcopy $dbname -u root -p $ROOTPASS $BACKDIR | logger -t mysqlhotcopy
mysqldump -u root -p$ROOTPASS $dbname > $BACKDIR/$dbname.sql | logger -t mysqldump
done


上記スクリプトで、
問題なくバックアップできていることを確認いたしました。

ただ個人的には、
ディレクトリ毎にバックアップする形式の方がリストアがしやすく感じておりますので、
バグがいつ修正されるか見守りたいと思っています。

もしくは、「/var/lib/mysql/」以下をディレクトリごとコピーしちゃうかですかね。
どのようにするのがよいか、もう少し検討してみたいと思います。
記事編集 編集
件名※必須
名前※必須
URL
任意のパスワード (投稿後のコメント修正・削除時に使用)
画像認証※必須 投稿キー(画像で表示されている数字を入力)
コメント※必須

※質問を投稿後に自己解決された場合は、原因と行った対処を具体的に書き込み下さるよう、よろしくお願いします。

- WEB PATIO -