2022年4月19日火曜日

cron + mysqldump で定期バックアップする方法

cron + mysqldump で定期バックアップする方法

概要

mysqldump を cron に仕込む際のテクニックを紹介します

環境

  • Ubuntu 18.04

cron

30 5 * * * cd /home/user; /usr/bin/mysqldump -h 192.168.100.1 -u db_user --all-databases --skip-add-drop-table > /home/user/dump/`date +"\%Y\%m\%d"`_dump.sql

.my.cnf

  • vim /home/user/.my.cnf
[mysqldump]
user=db_user
password=xxxxxx

解説

ダンプ時のオプションは --all-databases--skip-add-drop-table にしています
前者は全データベースのダンプで後者は発行されるダンプファイルに drop table 文を含めないようにするオプションです

ダンプファイルは毎日取得することを想定しているので日時情報をファイル名に含めています
その際に date コマンドを使用していますが date コマンドのフォーマット記法「% (パーセント)」は cron ないではエスケープしなければならないので注意しましょう

mysqldump を取得する際には必ずと言っていいほどパスワードが必要になります
コマンドに直接埋め込んでもいいのですが警告が出るのでファイルに記載します
その際に mysqldump コマンドを実行しているパスに「.my.cnf」という隠しファイルを置いておくと自動でそれを読み込んでくれます
ここに認証情報が記載できるので mysql のユーザ名とパスワードを記載しましょう

0 件のコメント:

コメントを投稿