💂‍♀️

【MySQL】定期的なバックアップをとる方法

概要

サーバーを移行した際にMySQLのバックアップ処理の実装を忘れていたので改めてメモします。

実装手順

1. サーバーの /root ディレクトリにてバックアップ用のディレクトリを作成しておきます。

# sudo mkdir /root/backup/mysql

2. シェルスクリプトの作成

sudo vim /root/backup4mysql.sh
backup4mysql.sh
#!/bin/sh

<!-- 他のユーザからバックアップを読み込めないようにする -->
umask 077

<!-- バックアップファイルを何日分残しておくか(一ヶ月分) -->
period=31
<!-- バックアップファイルを保存するディレクトリ -->
dirpath= &apos;/root/backup/mysql&apos;

<!-- ファイル名を定義(※ファイル名で日付がわかるようにしておきます) -->
filename=`date +%y%m%d`

<!-- mysqldump実行(ファイルサイズ圧縮の為gzで圧縮しておきます。) -->
MYSQL_PWD=PASSWORD mysqldump DB_NAME --default-character-set=binary -u root | gzip &gt; $dirpath/$filename.sql.gz

<!-- 古いバックアップファイルを削除 -->
oldfile=`date --date "$period days ago" +%y%m%d`
rm -f $dirpath/$oldfile.sql.gz

PASSWORD,DB_NAME は自身の環境に合わせて変更してください。

3. 定期実行されるようにcronに記述

crontab
22 3 * * * root /root/backup4mysql.sh

時間なども自身の環境に合わせて設定してください。 最後にターミナルで /root/backup4mysql.sh と打ち込んで正常に動作すれば成功です!

CEO & Enginner.(PHP/React Native+Expo/Python/Gatsby+Netlify) 起業6年目。WEBとかアプリ開発しております。趣味は読書、米国株投資、ピアノ。ほぼ毎日スマブラやってるただのピチュー使いおじさん。ジョーカー練習中。