CentOS7でmysqldumpを使って定期的にバックアップをとる
CentOS7のサーバでDB(MySQL)のデータを定期的にバックアップしたいことがありました。
手動でバックアップ
手動で都度バックアップをとる場合、以下のコマンドで実行できます。
mysqldump -u user -p dbname > backup.sql
コマンドを実行するとパスワードの入力を求められます。
自動でバックアップ
自動でバックアップをとるようにするには、上記のコマンドにパスワードを埋め込む必要があり、単純に行うと以下のようなコマンドになります。
mysqldump -uuser -ppassword dbname > backup.sql
ユーザーとパスワードをスペースなしで記述するのが特徴。ただ、上記のコマンドを実行すると以下のような警告が表示されます。
Warning: Using a password on the command line interface can be insecure
MySQLのバージョンによっては出力されないようですが、内容はコマンドライン内に直接パスワードを埋め込むのはセキュリティ的によろしくない、という意味。
調べると、こういった場合は、ユーザー名やパスワードを記述した設定ファイルを用意して、コマンド実行時にそのファイルを読み込むという方法をとるようです。
設定ファイル(例:/var/mysql/dbaccess.conf)の内容を以下のように記述し、
[client]
user = hoge
password = fugafuga
host = localhost
この設定ファイルをコマンド実行時に「--defaults-extra-file」で指定して読み込ませます。
mysqldump --defaults-extra-file=/var/mysql/dbaccess.conf dbname > backup.sql
あとはこのコマンドをcronから定期的に実行されるようにすればOKです。