Bugzilla アイコン Bugzilla 日本語版

データベースのバックアップ

バグレポートに関するデータはすべて MySQL のデータベースに保存されます。このデータベースをバックアップする方法について説明します。

MySQL サーバを停止してバックアップ

ディレクトリをバックアップするだけです。Bugzilla のデータを格納する bugs データベースは、MySQL のデータディレクトリにある bugs ディレクトリをバックアップすることで保存できます。ほかにも MySQL の管理情報を記録した mysql ディレクトリも保存しておくとよいでしょう。

$ cd /var/lib/mysql
$ tar zcvf /home/mysql/bz-20030903.tar.gz bugs/ mysql/

バックアップしたデータの復元も、MySQL サーバを止めてから バックアップした同じディレクトリに書き戻すだけです。

MySQL サーバを停止しないでバックアップ

mysqlhotcopy を使用します。ただしこのコマンドを使用するためには以下の方法で mysqlデータベースの SELECT 権限と MySQL の RELOAD 権限を有効にしておく必要があります。

(MySQL の rootユーザで実行するなら元からすべての権限があるので以下の権限変更は必要ありません。ここでは一般ユーザでバックアップする方法を説明します)

$ mysql -u root -p
Enter password:
mysql> use mysql;
mysql> update user set reload_priv='Y' where user='bugs';
             ( bugs のところは Bugzilla が使用するユーザを指定します)
mysql> grant select on mysql.* to bugs@localhost;
mysql> flush privileges;
mysql> exit;

mysqlhotcopy は以下のように使います。

$ mysqlhotcopy -u bugs -p <bugsユーザのパスワード> <バックアップするデータベース> <コピー先のディレクトリ>

たとえば以下のシェルスクリプトを実行すると /home/mysql/20030912-1700 といったディレクトリの中に bugs ディレクトリと mysql ディレクトリがコピーされます。

#!/bin/sh
BACKUP_DIR=/home/mysql/`date +%Y%m%d-%H%M`
mkdir -p $BACKUP_DIR
mysqlhotcopy -u bugs -p passbugs bugs $BACKUP_DIR
mysqlhotcopy -u bugs -p passbugs mysql $BACKUP_DIR

ソースコードから MySQL をインストールした場合、mysql コマンドの部分は代わりに /usr/local/mysql/bin/mysql に書き換えるなど、PATH を指定するようにしてください。

データベース以外で保存すべきファイル

バグレポート以外の Bugzilla 動作設定ファイルなど一部のファイルは、MySQL データベースではない場所に保存されています。以下のファイルもバックアップしておくことをすすめます。

<bugzilla>/localconfig
MySQL サーバと接続する ユーザ名・パスワードなど重大な内容が保存されています。
<bugzilla>/data/params
Web ブラウザから Bugzilla 管理者としてログインし「パラメータ」ページで設定した内容はここに保存されています。
<bugzilla>/data/mining/<プロダクト名>
Bugzilla トップページあるいは画面下にあるフッタから行ける「統計」ページで「出力形式 : グラフ」を選択したときの画像を作るために cron で日々記録されている統計データファイルです (cron の設定をしていないときは作られません)。
ここのファイルはプロダクト名に空白があればファイル名に空白を含むファイル名になりますし、プロダクト名が日本語であれば文字コード EUC-JP の日本語ファイル名になります。この仕様は問題かもしれません。

DB の基礎

ここでは Bugzilla を扱う上で最低限知る必要があるデータベース用語を説明します。

MySQLデータベースシステムのデータ構造について:

以下の図を見てみましょう。緑の枠で囲まれた 1つの データベース があります。その中にはテーブル が 2 つあります。そのテーブルの中に書いてある「名前」「性別」「年齢」といった項目が カラム です。Robert, Male, 11, Student という横一例の、黄色とオレンジに塗ってあるのが です。

名前 性別 年齢 職業
Robert Male 11 Student
David Male 33 Businessman
Michael Male 55 Columnnist
名前 電話番号 住所
Robert 123-3210 CA
David 888-8887 UT
Michael 456-7890 AZ