MySQL,MariaDBのデータベースを バックアップする
mysqldumpの使用
基本的な使い方
# mysqldump -uroot -pPASSWORD DBNAME > BACKUPFILE
-uroot rootユーザーで実行 -pPASSWORD rootユーザーのパスワードPASSWORDを省略すると実行時に入力を求められる DBNAME バックアップするデータベースの名前 BACKUPFILE バックアップファイルの名前
主なオプション
--user=USER (-uUSER) mysqldumpを実行するユーザー --password=PASSWORD (-pPASSWORD) USERのパスワード --add-drop-database create database文の前に drop database文を入れる --all-databases (-A) すべてのデータベースを対象にする --quick (-q) メモリにバッファリングすることなく1行ずつダンプする,メモリを節約する --flushu-logs (-F) dumpを始める前にサーバーログをフラッシュする --single-transaction 一貫性を保ちつつテーブルをロックしないでダンプする ※()内は短縮形
毎日自動でバックアップ
バックアップ専用ユーザーを作成
バックアップ専用ユーザーをbkupusrとして
# mysql -u root -p Enter password:PASSWORD root@localhost [none]>GRANT RELOAD,SELECT,FILE,LOCK TABLES ON *.* TO 'bkupusr'@'localhost' IDENTIFIED BY 'PASSWORD';
bkupusrにはすべての権限を与えない
バックアップ用スクリプトdbdump.shを作成
#!/bin/sh umask 077 DATE=`date +%Y%m%d` BkupDir="/home/XXX/dbdump" mysqldump -ubkupusr -pPASSWORD -F -q --single-transaction --add-drop-database --all-databases > ${BkupDir}/${DATE}.dump find ${BkupDir} -mtime +7 -exec rm -f {} \;
ファイル名をyyyymmdd.dump 保存先をXXXユーザーのホームディレクトリのdbdumpディレクトリにする、7日を過ぎたファイルは削除する
このファイルに実行権を与え、/root/binに配置する
# chmod 755 dbdump.sh # mkdir /root/bin # mv dbdump.sh /root/bin
毎日定時に実行するように/etc/crontabを設定する
SHEL=/bin/sh PATH=/sbin:/bin:/usr/sbin:/usr/bin ***** :/root/bin #minute hour mday month wday who command : 5 2 * * * root dbdump.sh :
毎日午前2時5分にrootユーザーでdbdump.shを実行する ※cronでは環境変数は使われないのでcrontab内でPATHに/root/binを追加する
コメントを残す