RADL ひよっこエンジニアの備忘録 2年目 奮闘記
reddit.epicplugins.com 
want to join? in seconds

MySQL バックアップ スクリプト 作成

以前、mha構成のMariaDB(MySQL)サーバーを3台ほど用意したのですが、バックアップ処理を全く考えておりませんでした。
(レプリケーションされてるし大丈夫かなぁと。。。)

別のバックアップ用サーバーへ毎日1回バックアップを取るようなスクリプトを作成しました。
(制限をしないと無限に容量くってしまうので、7日分だけ保持するようにします)

MariaDBが動いているサーバーに設置
backup_db.dump.sh

#!/bin/sh

DATE=`date '+20%y_%m_%d'`
DBLIST=`mysql -uroot -phogehoge -S /data/mysql/3306/mysql.sock -e"show databases" |grep -v "Database"`

for dbname in $DBLIST
do
        mysqldump -S /data/mysql/3306/mysql.sock $dbname -phogehoge --single-transaction |ssh root@backup用サーバーのアドレス "cat |gzip > /data/backup/${DATE}.${dbname}.sql.dump.gz"
done

↑ちょっと特殊な(1台のサーバー上に複数のMariaDBを動かしている)環境でMariaDBを動かしているため -S /data/mysql/3306/mysql.sock オプションでソケットを指定しなければいけません。
(普通の使い方の人はここの部分をごりっと消してください)

バックアップ用サーバーに設置
removedir_7days.sh

#!/bin/sh

DIR=/data/backup
LIMIT=7

for FILE in `find ${DIR} -type f -ctime +${LIMIT}`
do
        rm -f ${FILE}
done

しかし、全くシェルスクリプトに慣れません・・・
こんな簡単なスクリプトを作るのに2時間かかりました。orz

やりたいことはわかっているのに、いざスクリプトを書こうとすると詰まっちゃって書けません。

プログラマーの人達ってどういう頭の仕組みをしているんでしょうね。
慣れなのかなぁ?

コメントを残す