CORESERVER.JPでMySQL(DB)を自動バックアップする方法

スポンサーリンク
adairyをデータベースで運用しだしてから気になっていたのがデータベースのバックアップ。ウェブコンテンツは他サーバにrsyncコマンドを使って二重化しています。(自動化できていないので、rsyncはまた別の機会で取り上げたいと思います。)

今回はデータベースを自動バックアップする方法をご紹介します。

一応CORESERVER.JP(コアサーバ)で動作確認を取れた方法をご紹介しますが、おそらく他のサーバでもそれほど大きな差は無いと思います。ご参考にしていただければ幸いです。

スポンサーリンク

■ やりたいこと

  • データベースのバックアップ(dumpファイル→圧縮)
  • 何世代か残したい
  • 他サーバへFTP転送

私の場合はCORESERVER.JP内に何世代かバックアップファイルを残しておき、万が一の事を考え、他社のサーバ(私はさくら)へ最新のファイルをFTPで転送するようにしたいと思います。以下にその設定手順についてご紹介しておきます。

■ 設定手順

1.CORESERVER.JP側に「backup-mysql」ディレクトリを作る(/virtual//backup-mysql/)
2.以下の2ファイルをbackup-mysql内に設置する。

  • backup.sh(パーミッション755)
    #!/bin/sh
    #===============================================================#
    # 設定(ここを自分に合わせる)
    DATABASE=【データベース名】
    DBUSERNAME=【データベースユーザー名】
    PASSWORD=【データベースパスワード】
    XREAUSERNAME=【CORESERVERユーザー名】
    BACKUPDIR=backup-mysql
    KEEPDAY=【何日間(何世代)バックアップを残すか】
    # 初期化(XREA/CORESERVER用)
    PREFIX=【データベース名(ユーザー名_除く)】
    SERVER=localhost
    NOWDATE=`date +%Y%m%d`
    DESTDIR=/virtual/$XREAUSERNAME/$BACKUPDIR
    DUMPFILE=mysql_$PREFIX.dump
    TARFILE=$PREFIX.$NOWDATE.tar.gz
    OLDDATE=`date "-d$KEEPDAY days ago" +%Y%m%d`
    # MySQLダンプ/圧縮
    cd $DESTDIR
    /usr/local/mysql/bin/mysqldump $DATABASE --host=$SERVER -u $DBUSERNAME --password=$PASSWORD > $DUMPFILE
    tar zcvf $TARFILE $DUMPFILE
    # 処理判定
    if [ $? != 0 -o ! -e $TARFILE ]; then
    echo "backup faild -- ($DUMPFILE)"
    exit 1
    fi
    # 圧縮前ファイル削除
    rm -f $DUMPFILE
    # n日ローテートを削除
    rmfile=$DESTDIR/$PREFIX.$OLDDATE.tar.gz
    if [ -e $rmfile ]; then
    rm -f $rmfile
    fi
    cp $PREFIX.$NOWDATE.tar.gz sakura.$PREFIX.tar.gz
    #===============================================================#
    【?バックアップするDBの数だけすべて記入?】
    #===============================================================#
    ftp -n < ftp_command
    
  • ftp_command
    open 【バックアップ先FTPサーバURL】
    user 【FTPユーザー名】【FTPパスワード】
    bin
    prompt
    cd backup-mysql
    put sakura.【データベース名(ユーザー名_除く)】.tar.gz
    ……【?バックアップするDBをすべて記入?】
    quit
    

3.SSHでログオンし、「backup.sh」を実行してみてうまく動作するか確認
4.正常動作を確認後、cronでbackup.shを1日1回(例えば23:50)に設定

以上で完了です。

■ 参考サイト

以下のサイトを参考にさせていただきました。ありがとうございました。

インターネット
スポンサーリンク
スポンサーリンク
この記事をシェアする
ひとぅをフォローする
関係するかもしれない記事
ひとぅブログ