LinuxでのMySQLデータベースのバックアップ
前言
プロジェクトの必要性のため、データベースに予期せぬ障害が発生した場合にデータをリカバリできるように、ユーザーデータをタイミング的にバックアップする機能を実現する必要があります.本プロジェクトはSaaSアーキテクチャであり、新しく登録された会社ごとに動的にデータベースを生成し、その会社の下のすべてのデータを保存するために使用します.そのため、データバックアップを行う際にも、プロジェクトに関連するすべてのデータベースを動的にバックアップする必要があります.
実現構想.
調べた結果、mysqlが持参したバックアップコマンドを採用し、Linuxのタイミングタスクに合わせて、毎日すべてのユーザーデータをタイミングよくバックアップすることを決定した.つまりshellスクリプトを作成し、バックアップコマンドを書き込み、Linuxにこのスクリプトをタイミングよく実行させます.
実装手順
1.ディレクトリ/root/mysqlbackup/shell/を作成しmysql_dump_script....cronをこのディレクトリに移動
2.mysql_dump_script....cronは実行可能権限を付与します.
3.タイミングタスクを追加し、コマンドを実行する:
4.スケジュールタスクが正常に作成されたかどうかを確認します.
注意:
1. mysql_dump_script.shは、この例では実行するたびにcloud_ですべてエクスポートされるように、データベースバックアップスクリプトを実行します.先頭のデータベースのすべての構造とデータ、
xxに併存する.sqlファイル、xxは実行時の日付です.また、デフォルトでは最近31件のファイルが保存され、超過部分は最も元のファイルから削除され、総量が31に保たれるまで保存されます.
2. mysqlCron.cronはタイミングタスクファイルです
本明細書で説明するスクリプトのソースコードを添付します.
mysql_dump_script.sh
mysqlCron.cron
プロジェクトの必要性のため、データベースに予期せぬ障害が発生した場合にデータをリカバリできるように、ユーザーデータをタイミング的にバックアップする機能を実現する必要があります.本プロジェクトはSaaSアーキテクチャであり、新しく登録された会社ごとに動的にデータベースを生成し、その会社の下のすべてのデータを保存するために使用します.そのため、データバックアップを行う際にも、プロジェクトに関連するすべてのデータベースを動的にバックアップする必要があります.
実現構想.
調べた結果、mysqlが持参したバックアップコマンドを採用し、Linuxのタイミングタスクに合わせて、毎日すべてのユーザーデータをタイミングよくバックアップすることを決定した.つまりshellスクリプトを作成し、バックアップコマンドを書き込み、Linuxにこのスクリプトをタイミングよく実行させます.
実装手順
1.ディレクトリ/root/mysqlbackup/shell/を作成しmysql_dump_script....cronをこのディレクトリに移動
2.mysql_dump_script....cronは実行可能権限を付与します.
sudo chmod 777 XXX.XX
3.タイミングタスクを追加し、コマンドを実行する:
crontab mysqlCron.cron
4.スケジュールタスクが正常に作成されたかどうかを確認します.
crontab -l
注意:
1. mysql_dump_script.shは、この例では実行するたびにcloud_ですべてエクスポートされるように、データベースバックアップスクリプトを実行します.先頭のデータベースのすべての構造とデータ、
xxに併存する.sqlファイル、xxは実行時の日付です.また、デフォルトでは最近31件のファイルが保存され、超過部分は最も元のファイルから削除され、総量が31に保たれるまで保存されます.
2. mysqlCron.cronはタイミングタスクファイルです
本明細書で説明するスクリプトのソースコードを添付します.
mysql_dump_script.sh
#!/bin/bash
# , 31
number=31
#
backup_dir=/root/mysqlbackup
#
dd=`date +%Y-%m-%d-%H-%M-%S`
#
username=root
#
password=1234
#
if [ ! -d $backup_dir ];
then
mkdir -p $backup_dir;
fi
# ,
mysql -e "show databases;" -u$username -p$password | grep "cloud_*" | xargs mysqldump -u$username -p$password --databases > $backup_dir/backup-$dd.sql
#
echo "create $backup_dir/$backup-$dd.dupm" >> $backup_dir/log.txt
#
delfile=`ls -l -crt $backup_dir/*.sql | awk '{print $9 }' | head -1`
# $number
count=`ls -l -crt $backup_dir/*.sql | awk '{print $9 }' | wc -l`
if [ $count -gt $number ]
then
# , number
rm $delfile
#
echo "delete $delfile" >> $backup_dir/log.txt
fi
mysqlCron.cron
0 2 * * * /root/mysqlbackup/shell/mysql_dump_script.sh