centos7からalmalinuxへの移行の冒頭でも記載した通り、
mysqlを家計分析・可視化に活用するようになってきました。
しかし、今までデータベースを誤って破損させてしまったときの考慮をしていなかったので、
バックアップファイルを定期取得するようにしました。
やりたいこととしては、下記の2つです。
①データベース(maindb)のバックアップ用として、backupmaindbを作成・リストア
mysqlデータベース複製スクリプト
[root@homeserver ~]# cat mysql_dump_getter.sh
#!/bin/bash
echo `date`_backups_mysql_process_was_doing >> /var/log/mysql_watcher.log
datearg=`date +%Y%m%d%H%M`
mysqldump -u root --password=`cat /root/.pgpassword_for_maindb` -h 127.0.0.1 --default-character-set=binary mysql > /var/lib/mysql/backups/${datearg}_mysql_dumpfiles
mysqldump -u root --password=`cat /root/.pgpassword_for_maindb` -h 127.0.0.1 --default-character-set=binary maindb > /var/lib/mysql/backups/${datearg}_maindb_dumpfiles
mysqldump -u root --password=`cat /root/.pgpassword_for_maindb` -h 127.0.0.1 --default-character-set=binary homeserver_wpdb > /var/lib/mysql/backups/${datearg}_homeserver_wpdb_dumpfiles
cp -pv /var/lib/mysql/backups/${datearg}_mysql_dumpfiles /root/backups/ >> /var/log/mysql_watcher.log
cp -pv /var/lib/mysql/backups/${datearg}_maindb_dumpfiles /root/backups/ >> /var/log/mysql_watcher.log
cp -pv /var/lib/mysql/backups/${datearg}_homeserver_wpdb_dumpfiles /root/backups/ >> /var/log/mysql_watcher.log
mysql -u root --password=`cat /root/.pgpassword_for_maindb` -h 127.0.0.1 --database=mysql -e "drop database backupmaindb;show databases;create database backupmaindb;show databases;"
mysql -u root --password=`cat /root/.pgpassword_for_maindb` -h 127.0.0.1 --default-character-set=binary backupmaindb < /var/lib/mysql/backups/${datearg}_maindb_dumpfiles
echo `date`_backups_files_remove_was_doing >> /var/log/mysql_watcher.log
ls -1t /var/lib/mysql/backups/*_dumpfiles | xargs rm -fv >> /var/log/mysql_watcher.log
ls -1t ./backups/*_dumpfiles | tail -n+10 | xargs rm -fv >> /var/log/mysql_watcher.log
echo `date`_backups_files_removewas_completed >> /var/log/mysql_watcher.log
echo `date`_backups_mysql_process_was_completed >> /var/log/mysql_watcher.log
[root@homeserver ~]#
※pgpassword_for_maindbはmysql時のパスワード認証で、パスワードを入力する必要があるのですが、
パスワードをファイル内容に記載することでノーパスログインを実現します。
- リストアで、バイナリでダンプを取っているので、下記の通りbinary指定します。
mysql -u root --password=パスワード -h ホスト名かipアドレス --default-character-set=binary backupmaindb < バックアップしたダンプファイル
②ダンプファイルも管理するbashスクリプトを作成し、cronに組み込む。
ダンプファイルの管理
バックアップをし続けるとたまってしまうため、定期的に削除するスクリプトを作成する必要があります。
Cronの設定
は下記のとおりです。
[root@homeserver ~]# crontab -l
[root@homeserver ~]#
[root@homeserver ~]# crontab -e
※「*/15 * * * * /root/mysql_dump_getter.sh」を追記
[root@homeserver ~]# crontab -l
*/15 * * * * /root/mysql_dump_getter.sh
[root@homeserver ~]#
後書
同様にpostgresqlも同じようなバックアップ、リストアができます。