
これがいかに関連性があるかについて話すのは意味がありません。 今日は、mysqlデータベースのバックアップ方法を説明します。
そして、最も重要なものの1つはチェックですが、バックアップは作成されていますか? ダンプは成功しましたか? そして、間違いはありましたか? それらについて知っていますか?
私の意見では、今日、バックアップしていない人を見つけることはほとんど不可能です。 ただし、ここではバックアップの実行時にエラーをチェックします。おそらくその方法を説明しようと思います。
おそらく、実装の原則では標準的なスキームが使用されていたとすぐに言わなければなりませんが、自宅で実装できる新しいものを自分で見つけられるかもしれません。
変数とパスについて説明します。
PATH=/usr/local/bin:/usr/bin:/bin:/usr/local/mysql/bin DATE=`date +%Y-%m-%d_%Hh%Mm`
すべてのサーバーで、スクリプトは1つですが、設定ファイルがありません。 多くの場合、グローバル設定だけでなく、特定のプロジェクト固有のニーズもあります。 いくつかのファイルに分割することにしました。
mysql-backup.conf.dist-ファイルには、すべてのプロジェクトに共通のグローバル設定が保存されます
mysql-backup.conf-プロジェクトの特定の設定のファイル
mysql-backup.local.conf-ローカルバックアップ設定用のファイル
構成があるかどうかを確認します-このサーバーでバックアップを取り、構成を読み取ります。
if [ -f "$LOCATION/etc/mysql-backup.conf.dist" ]; then . "$LOCATION/etc/mysql-backup.conf.dist" if [ -f "$LOCATION/etc/mysql-backup.conf" ]; then . "$LOCATION/etc/mysql-backup.conf" fi if [ -f "$LOCATION/etc/mysql-backup.local.conf" ]; then . "$LOCATION/etc/mysql-backup.local.conf" fi else echo "mysql-backup.conf.dist not found" exit 0 fi
次に、設定オプションを読んで値を設定しましょう
詳細に説明する必要はないと思います 変数名はすべて自明でなければなりません。
バックアップ用のディレクトリを確認して作成します
重要なポイントの1つは、バックアップするだけでなく、実行中にエラーをチェックすることでもあります。
機能について説明します。 なぜなら さまざまなプロジェクトでは、増分バックアップ用、ユーザーが夜寝る別のバックアップが必要です。夜間ダンプで十分です。
プレーンmysqldump
mydumperを使用する
当然のことながら、テーブルロックを使用した通常のデータコピー
dbdump_h () { echo First rsync started at `date` rsync -avH --delete --numeric-ids /var/lib/mysql/ /var/lib/mysql.backup echo First rsync finished at `date` echo DB locked, second rsync started at `date` echo "FLUSH TABLES WITH READ LOCK" | mysql --user=$USERNAME --password=$PASSWORD --host=$DBHOST rsync -avH --delete --numeric-ids /var/lib/mysql/ /var/lib/mysql.backup echo "UNLOCK TABLES" | mysql --user=$USERNAME --password=$PASSWORD --host=$DBHOST echo DB unlocked, second rsync finished at `date` return 0 }
そして、それなしで、私たちは皆増分バックアップを知っています
dbdump_h_xtra () { if [ ! -f /usr/bin/innobackupex ]; then yum -y install xtrabackup.x86_64 fi if [ ! -f /var/lib/mysql-xtra/xtrabackup_checkpoints ]; then echo Full backup stage started at `date`
おそらく、圧縮の機能を個別に取り出します。 何のために? -風水。 クライアントの気分は不明であり、どのような圧縮を望んでいますか。 私たちは彼に希望のタイプを選択する権利を与えます。
回転について説明します。 繰り返しますが、賞味期限の要件は異なります。
バックアップを開始する前にコマンドを実行する必要がある場合があります。 サービスを中断し、ユーザーに作業に関するメッセージを表示します。 検索エンジンに報告し、巨大なベースをダンプします。 そのような機会を提供します。
すべてのテーブルをバックアップする必要がない場合があります。
この部分には説明は必要ないと思います
if [ "$SEPDIR" = "yes" ]; then
すべてのデータベースを読み取り、バックアップのリストから除外を削除します
バックアップ自体を開始する時間です
echo ====================================================================== echo AutoMySQLBackup VER $VER echo http://sourceforge.net/projects/automysqlbackup/ echo echo Backup of Database Server - $HOST echo ======================================================================
ダンプが必要ですか? ダンプに行きましょう
if [ "$DO_SQL_DUMP" = "yes" ]; then echo Backup Start Time `date` echo ======================================================================
風水ごとに一時的なバックアップの種類を分けることも便利ですが、今日の最初の数字は何ですか? 毎月のダンプを作成しましょう。
月の最初の日ではありませんか? -毎日のバックアップに進みます。 行ごとの説明は必要ないと思います。
else for DB in $DBNAMES do
ホットバックアップが必要ですか? 続行:
ホットXTRAバックアップ? -それを作ります:
最後のオプションはmydumperです。
ダンプの数を数えてみましょう。場所には終わりの習慣があります。
echo Total disk space used for backup storage.. echo Size - Location echo `du -hs "$BACKUPDIR"` echo
たとえば、サイトを再度開くなど、バックアップ後にコマンドを実行する必要がある場合があります。 私たちはそのような機会を提供します:
バックアップログを分析しましょう
はい、知っています、ありがとう。 これをログから削除しましょう。
sed -i '/Using a password on the command line interface can be insecure/d' $LOGERR
さらに、いくつかのオプションがあります:スクリプトのログを送信し、ログとダンプファイルを送信し、コンソールに出力を表示し(デバッグ、それがない場合)、ログをメールに送信し、エラーがある場合。
おそらくデフォルトでは、最後のオプションを選択します。 しかし、すべてを説明します。
if [ "$MAILCONTENT" = "files" ] then if [ -s "$LOGERR" ] then
自分用にクリーンアップしましょう:
if [ -s "$LOGERR" ] then STATUS=1 else STATUS=0 fi
次に、オプションの構成ファイルを提供します。
「アメリカを発見する」という目標は設定しませんでしたが、バックアップトピックは重要ではなくなりません。 また、データベースダンプスクリプトに行を追加することにより、ダンププロセスのエラーをチェックし忘れることがよくあります。 この記事で、もう一度バックアップを確認する必要があることを思い出していただければ幸いです。 バックアップを確認しましたか?

著者:イゴール・メディンスキー