0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

CentOS8.2でMySQL8.0の定期的なバックアップを行う手順

Last updated at Posted at 2020-11-28

| ../ |

VPSサーバー(CentOS8.2)にMySQL8.0をインストールした。定期的にMySQLデータベースのバックアップを作成するようにしたい。その手順をメモしておく。バックアップは、毎日4:00に実行し、過去14日分を残すようにする。スケジュールはcron.dに登録して行う。

定期バックアップのシェル作成

以下のようにシェルファイルを作成する。例では、/var/share9/mysql-backup/mysql-backup.shとしている。データベースの接続情報は適宜、変更のこと。


$ vi /var/share9/mysql-backup/mysql-backup.sh 
#!/bin/sh

keepday=14		# 何日間をサイクルで回すか。
host=xxx		# ホスト名
dbname=kankeri	# データベース名
user=root		# ユーザー名
pwd=***			# パスワード

dst=/var/share9/mysql-backup/backup-${host}
bak=${dbname}.bak
d1=`date +%Y%m%d`
d2=`date "-d${keepday} days ago" +%Y%m%d`
new=${dbname}-${d1}.tar.gz
old=${dbname}-${d2}.tar.gz

cd ${dst}
/usr/bin/mysqldump -u${user} --password='${pwd}' --opt ${dbname} > ${bak}
tar zcvf ${new} ${bak} > /dev/null 2>&1
if [ $? != 0 -o ! -e ${new} ]; then
echo backup failed ${new}
exit 1
fi
if [ -e ${old} ]; then
rm -f ${old}
fi

echo ----------- ${dst}
ls -lag  ${dst}

cron.dへスケジュール登録

毎日4:00に実行されるようにcron.dに登録する。スケジューラはcrondというサービスであるが、登録方法は、cron.dやcrontabやcron.dailyなどがある。設定方法は同じである。私は、cron.dに登録することにした。/etc/cron.d/mysql-backup を以下のように作成した。毎日4:00に前述のmysql-backup.shを実行させる。


vi /etc/cron.d/mysql-backup
# Example of job definition:
# .---------------- minute (0 - 59)
# | .------------- hour (0 - 23)
# | | .---------- day of month (1 - 31)
# | | | .------- month (1 - 12) OR jan,feb,mar,apr ...
# | | | | .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
# | | | | |
# * * * * * user-name command to be executed
  0 4 * * * root      /var/share9/mysql-backup/mysql-backup.sh

動作確認

まず、mysql-backup.sh がrootで正常に動作することを確認しておく。mysql-backup.shの所有者はrootで、権限は700であること。パスワード埋め込みのシェルなので、他者が触れないようにしておくこと。

そしてcrondサービスを再起動させておく。1日待てば確認できる。気が短い方は、cron.hourlyに変更して確認してみてもいい。

# rootで動作するかどうかの確認
$ su -
$ ls -lag /var/share9/mysql-backup/mysql-backup.sh
-rwx------ 1 root  680 11月 28 10:32 mysql-backup.sh
$ /var/share9/mysql-backup/mysql-backup.sh

# cron.dに登録されているか確認
$ ls -lag /etc/cron.d/
-rw-r--r--   1 root    52 11月 28 10:12 mysql-backup

# crondを再起動して、追加したcron.dを読み込ませる。
$ systemctl restart crond
$ systemctl status crond

以上

| ../ |

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?