Quantcast
Channel: Bashタグが付けられた新着記事 - Qiita
Viewing all articles
Browse latest Browse all 2912

Shellを使ってDB(MySQL)を別サーバにバックアップしたい

$
0
0
目的 Linuxサーバで動かしているシステムのDB(MySQL)をバックアップして、別のサーバで管理したい。 背景 最近システムのMySQLのDBバックアップができていないことがわかったので、バックアップして別のサーバで保管したいと考えました。 準備 今回は、別のサーバ側にマウントしてマウント先に直接バックアップを行います。そのため、事前にDBがあるサーバ側にマウントポイント(ディレクトリ)を作成する必要があります。今回は /bk がマウントポイントにあたります。 コード #!/bin/sh # DBのバックアップを置くサーバをマウント mount -t nfs XXX.XXX.XXX.XXX:/mnt/XXXXX /bk EXITVALUE=$? if [ $EXITVALUE != 0 ]; then /usr/bin/logger -t nfs_mount "ALERT Failed NFS_MOUNT" fi # バックアップ先にバックアップ # XXXXがDBのユーザ名、YYYYYYYYがパスワード、db_nameがDB名 mysqldump -uXXXX -pYYYYYYYY --single-transaction db_name |gzip > /bk/mysqldump_`date +"%Y%m%d"`.sql.gz # 3週間前のDBは削除 find /bk/ -mtime +21 -exec rm -f {} \; # バックアップ失敗時にはメール通知 # aaaaaa@hogehoge.hogeは送信元のアドレス # bbbbbbb@hogehoge.hogeは送信先のアドレス if [ $EXITVALUE != 0 ]; then echo "DBのバックアップに失敗しました。" | mail -s "mysqldumpによるバックアップ失敗" -r aaaaaa@hogehoge.hoge bbbbbbb@hogehoge.hoge fi # マウント解除 umount /bk if [ $EXITVALUE != 0 ]; then /usr/bin/logger -t nfs_unmount "ALERT Failed NFS_UNMOUNT" 補足 あとはこれをcronで仕込めば自動で勝手バックアップしてくれます。  なお、マウントの失敗及びバックアップの失敗時にはメールを飛ばすように設定しています。また、世代管理として、3週間前のDBは自動で削除するコマンドも仕込んでいます。

Viewing all articles
Browse latest Browse all 2912

Trending Articles