プロジェクト

全般

プロフィール

バックアップ

データベース全体のバックアップ

mysqldump -u <user> -p -x --all-databases > /保存先/保存名.dump

・エラーが出た場合の対応

mysqldump: Couldn't execute 'FLUSH /*!40101 LOCAL */ TABLES': 
Access denied; you need (at least one of) the RELOAD privilege(s) for this operation (1227)

RELOAD権限を与える

mysql> GRANT RELOAD ON *.* TO '<user>'@'<host_name>';
mysql> FLUSH PRIVILEGES;

FLUSH ステートメントには、さまざまな内部キャッシュをクリアまたはリロードしたり、
テーブルをフラッシュしたり、ロックを取得したりするいくつかのバリアント形式があります。FLUSH を実行するには、
RELOAD 権限が必要です。

特定のデータベースのバックアップ

mysqldump -u <user> -p <dbname> > /保存先/保存名.dump

データベースインポート

・特定のデータベースの復元

mysql -u <user> -p <dbname> < dumpファイル名

・データベース全体の復元

mysql -u <user> -p < dumpファイル名

スクリプト

#!/bin/bash

#バックアップファイルの保存期間
period=7

#バックアップファイルを保存するディレクトリ
dirpath='/backup'

#ファイル名を定義
filename=`date +%y%m%d`

#mysqldump実行
mysqldump -u ユーザー名 --opt --password=パスワード テーブル名 > $dirpath/$filename.sql

#パーミッション変更
chmod 770 $dirpath/$filename.sql

#圧縮
gzip $dirpath/$filename.sql

#古いバックアップファイルを削除
oldfile=`date --date "$period days ago" +%y%m%d`
rm -f $dirpath/$oldfile.sql.gz