Linuxでテープバックアップ
10 月 19, 2008 1:33 pm Linux, mysqlしばらく前に「サーバに内蔵されているシングルテープドライブを利用したいんだけど」と相談されました。普通に考えると商用ソフトであるCA ARCserve Backupの使用を進めたりするのですが諸般の事情によりmt を利用することにしました。
お客様が利用されているのは Red Hat Enterprise Linux 、CDを確認するとの三枚目に「mt-st-0.9b-2.2.2.i386.rpm」を見つけましたのでこちらをインストールして利用することとにします。サクっとCDをマウントrpmインストールを行いましょう。
# rpm -ihv mt-st-0.9b-2.2.2.i386.rpm
でインストールを行うとmtコマンドが利用できるようになります。コマンドの使用方法は他のホームページを参照してもらうとしまして、bashスクリプトでマネージャーもどき・バックアップ・リストアする3本のスクリプトを作成しました。
バックアップするシェルスクリプトとは、バックアップする対象フォルダは「/var/www」と「/etc」、あとはmysqlのdb名を指定して(ここではtest_data)バックアップするときに必要なrootアカウントのパスワードを設定(ここではroot_passとしましょう)、「/root/backup/latest/」へバックアップデータをまとめてテープで圧縮、その後「日付+tar.gz」でまとめたら「/root/backup/latest/」フォルダを削除、7日分の「日付+tar.gz」ファイルより古いファイルは削除するという設計にしています。さらに金曜日はテープが自動的にイジェクトされるようにしてみました。
リストアスクリプトは「/root/restoring」フォルダへデータをリストアするという設計です。
マネージャスクリプトはドライブの状態確認したり、テープの内容を消去したり、リストアスクリプトやバックアップスクリプトを実行したりします。またバックアップはcrontabで毎日決まった時間に起動するようにします。bashスプリクトで配列変数を使用していますのでバックアップしたいmysqlデータベースを追加していくだけでバックアップ可能です。
このスプリクトは少し改変するだけで色々と転用方法があると思います。このデータベースバックアップ方法には欠点もあるので、内容を理解して使用してくださいね。
