データベースのバックアップについて


現在、担当プロジェクトのデータベースのバックアップを日々手作業で行っています。

このシステムはデータベースとしてMySQLを使用していますが、MySQLのデータのバックアップにも他のデータベース同様何種類かの方法があります。

私は、手順が容易なコマンドラインから実行する"mysqldump"を使用しています。

このコマンドはデータファイルのコピーとは異なり、データベースの内容をSQL形式で出力しますので利用するストレージエンジンに依存せずに利用でき、また他のデータベースにデータを複製することも可能です。

また、リモートでのバックアップにも対応しており、データベース単位、テーブル単位のバックアップを取得することもできます。

バックアップのリストアには、同じくコマンドラインから実行する"mysql"を使用します。

ただし、どちらのコマンドについても処理中は更新にロックが掛りアクセスできなくなったり、バックアップ/リストアに時間が掛る他、データ量に比例し時間も出力データも増大するといった注意すべき点もあります。

参考サイト
http://dev.mysql.com/doc/refman/4.1/ja/mysqldump.html

以下が"mysqldump"、"mysql"の利用例です。

(1)指定のデータベースの全テーブルのバックアップ

shell> mysqldump -u[ユーザー名] -p[パスワード] -h[ホスト名] [データベース名] > [バックアップファイル名]

(2)指定のデータベースから特定のテーブルのみバックアップ

shell> mysqldump -u[ユーザー名] -p[パスワード] -h[ホスト名] [データベース名] [テーブル名] > [バックアップファイル名]

(3)バックアップファイルからデータをリストア

shell> mysql -u[ユーザー名] -p[パスワード] -h[ホスト名] [データベース名] < [バックアップファイル名]

リストアは、バックアップファイル内のテーブルについてのみ上書きしますので他のテーブルに影響することはありません。

上記(2)のように特定のテーブルのみバックアップし、そのテーブルのみリストアすることも可能です。

また、上述したとおり他のデータベースへの複製も可能ですので、実機環境のサーバーのデータベースをバックアップし開発機のlocalhostへリストアし、より実機環境に近い状態での開発も可能となります。

現在は、手作業によりバックアップを行うといった、あまり効率のいい方法ではありませんが今後は、自動でバックアップ作業を行えるように、さらに精進していきたいと思います。

ちなみに、私が現在携わっているプロジェクトは、下記プロジェクトになります。

→営業情報管理システムhttp://msystm.co.jp/user_tosho1.html

また弊社ホームページのURLは、下記の通りです。

http://msystm.co.jp/