LoginSignup
4
6

More than 5 years have passed since last update.

5分でやっつけるシェルスクリプト(DBバックアップ編)

Posted at

DBを定期的にバックアップする必要があったので簡易的に実装。
初心者感溢れるスクリプトになったが改良は未来の自分に託すことに。超がんばれ

まず最低限必要な知識

crontab

定期的にコマンドを自動実行してくれる勤勉な子。
http://www.server-memo.net/tips/crontab.html

シェルスクリプト

コマンドを複数書き連ねてプログラムのように実行できる。

スクリプトの基本的な書き方

曜日取得

date +%wでいけた
http://qiita.com/bsdhack/items/2884a232bf49dbd7988c

変数の使い方

ちょっと癖があります
http://shellscript.sunone.me/variable.html

mysqldump

DBをバックアップするコマンド
http://qiita.com/morizyun/items/f45dc580bac0ebba79ab

#!/bin/sh
# 曜日で連番しながらバックアップを保存する
# 一週間したら情け容赦なく上書きされていくよ

# 改行コードはLinux(LF)にしないと死に至る
# プログラミングのノリでイコールの前後にスペース入れると死に至る
# コマンドの返り血を変数に渡したいときはコマンドを``で包囲する
w=`date +%w`
f=/var/usr/hoge/backup_${w}.sql

# -pの後ろに半角スペースを入れると死に至る
mysqldump -u username -ppaswwwwwword tablename > $f

# バックアップ日のログを保存する
l=/var/usr/hoge/backup.log
d=`date`
echo backup as ${f} at ${d}>>$l

後はこの子をcrontabでぐるぐるしてあげればよさげ。

crontab -e

# DBバックアップタスク
34 3 * * * /bin/sh /var/usr/hoge/backup.sh

実行されると
/var/usr/hoge/backup_0.sql/var/usr/hoge/backup_1.sql、と1週間分連番で保存されます。
翌週以降は上書きされます。
実行ログは/var/usr/hoge/backup.logに保存されます。延々と追記するだけの簡易版なので実運用する際はファイル切り替えしないと(何かあったとき)つらい。

4
6
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
6