ホームページ  >  記事  >  データベース  >  MySQL バックアップ スクリプトの作成方法を見てみましょう。

MySQL バックアップ スクリプトの作成方法を見てみましょう。

coldplay.xixi
coldplay.xixi転載
2020-08-27 16:21:261971ブラウズ

MySQL バックアップ スクリプトの作成方法を見てみましょう。

[関連する学習の推奨事項: mysql チュートリアル ]

前書き:

データベースのバックアップの重要性は、特にデータ損失が重大な結果をもたらす可能性がある実稼働環境では、自明の理です。したがって、環境に関係なく、データベースを定期的にバックアップするための対応するバックアップ戦略を立てる必要があります。 MySQL では、論理バックアップ ツールとして mysqldump がよく使われますが、この記事では MySQL のスケジュール バックアップの方法を紹介します。

1. 適切なバックアップ戦略を開発する

データベース環境が異なると、異なるバックアップ戦略を検討する必要があります。バックアップ戦略を策定するときは、次の要素を考慮する必要があります:

  • 物理バックアップまたは論理バックアップ。これはデータベースのサイズによって決まります。たとえば、100G 未満の場合は論理バックアップを使用し、100G を超える場合は物理バックアップを使用します。
  • バックアップ ファイルの保存期間。これはディスクのサイズによって決まり、通常は少なくとも 7 日間保持されます。
  • バックアップの実行時間。通常、早朝のバックアップ操作の実行など、ビジネスのピーク時間帯に配置されます。
  • バックアップ間隔。通常、バックアップは 1 日に 1 回行うことをお勧めしますが、システムがそれほど重要でない場合は、バックアップ間隔を延長することができます。
  • スレーブライブラリがあるかどうか。スレーブ データベースがある場合は、メイン データベースへの負担を軽減するために、スレーブ データベースにバックアップすることをお勧めします。

2.Linux システム バックアップ スクリプト

Linux システムでは、crontab スケジュールされたタスクを使用してバックアップ スクリプトを実行できます。 crontab をまだ知らない場合は、次の概要を参照してすぐに学習できます。

crontab は、Unix および Unix 系オペレーティング システムで一般的なコマンドで、定期的に実行される命令を設定するために使用されます。

形式:

* * * * * コマンド
タイムシェアリング日-月-週コマンド

最初の列は分を示します 1分は * または */1 で表されます。
2 列目は 1 から 23 時を表します (0 は 0 時を表します)
3 列目は 1 から 31 までの日付を表します
4 列目は月を表します1 ~ 12
列 5 は 0 ~ 6 の曜日を示します (0 は日曜日を意味します)
列 6 で実行するコマンド

crontab -e この下のスケジュールされたタスク設定を編集しますuser
crontab -l ユーザーの下にあるすべてのスケジュールされたタスクをリストします

さあ、バックアップ スクリプトを正式に書きましょう。これ以上の苦労はせずに、最初にスクリプト テンプレートを指定しましょう:

#!/bin/bash
# -------------------------------------------------------------------------------
# FileName:  mysql_backup.sh 
# Describe:  Used for database backup
# Revision:  1.0
# Date:    2020/08/11
# Author:   wang

# 设置mysql的登录用户名和密码(根据实际情况填写)
mysql_user = "root"
mysql_password = "yourpassword"
mysql_host = "localhost"
mysql_port = "3306"
backup_dir = /data/mysql_backup

dt=date +'%Y%m%d_%H%M'
echo "Backup Begin Date:" $(date +"%Y-%m-%d %H:%M:%S")

# 备份全部数据库
mysqldump -h$mysql_host -P$mysql_port -u$mysql_user -p$mysql_password -R -E --all-databases --single-transaction > $backup_dir/mysql_backup_$dt.sql

find $backup_dir -mtime +7 -type f -name '*.sql' -exec rm -rf {} \;
echo "Backup Succeed Date:" $(date +"%Y-%m-%d %H:%M:%S")

上記のスクリプト特定のライブラリのバックアップ、保持時間の変更など、実際の状況に応じて変更できます。スクリプトを作成したら、デバッグに注意してください。デバッグが完了したら、デプロイできます。たとえば、毎日午前 2 時にバックアップを実行する予定の場合、このようにスケジュールされたタスクを設定できます。

# 注意脚本执行权限及修改脚本路径
00 02 * * * sh /root/scripts/mysql_backup.sh > /root/scripts/mysql_backup.log 2>&1

3. Windows システム バックアップ スクリプト

Windows システム バックアップ スクリプトは、bat スクリプトになる点を除けば似ており、スケジュールされたタスクを設定する必要があります。定期的な実行。たとえば、E ドライブの下に MySQLdata_Bak ディレクトリを作成し、その下にバックアップ ファイルを保存するための mysql_backup ディレクトリを作成します。mysql_bak.bat はバックアップ スクリプトです。スクリプトの内容は次のとおりです (バックアップ ファイルは 7 日間自動的に削除されます) ago):

rem auther:wang
rem date:20200811
rem ******MySQL backup start********
@echo off
forfiles /p "E:\MySQLdata_Bak\mysql_backup" /m backup_*.sql -d -7 /c "cmd /c del /f @path"
set "Ymd=%date:~0,4%%date:~5,2%%date:~8,2%0%time:~1,1%%time:~3,2%%time:~6,2%"
"E:\mysql5.7.23\bin\mysqldump" -uroot -p123456 -P3306 --default-character-set=utf8 -R -E --single-transaction --all-databases > "E:\MySQLdata_Bak\mysql_backup\backup_%Ymd%.sql"
@echo on
rem ******MySQL backup end********

上記のスクリプトは参照専用であり、独自の環境に応じて若干変更できます。同様に、スクリプトのデバッグが完了したら、スケジュールされたタスクを追加できます。Windows のスケジュールされたタスクについて知らない場合は、Baidu でダウンロードすることができ、より便利で簡単です。

4. バックアップの可用性の確認

バックアップに加えて、バックアップ データの可用性を確認することも非常に重要です。データの復元を実行する必要があるときに、過去のバックアップ データが無効であることが突然判明したときの不快な気持ちを想像してみてください。多くの友人は、バックアップ スクリプトを作成してスケジュールされたタスクに追加した後、スケジュールされたタスクが実行されたかどうか、またはバックアップ ディレクトリにファイルがあるかどうかをチェックするだけで、もう注意を払わず、問題があることだけを発見します。バックアップ ファイルを使用する必要がある場合は、バックアップ データを保存します。

現時点では、バックアップ ファイルのデータを検証するための非常に便利な方法はありません。より一般的に使用されるのは、バックアップ ファイルを定期的に取り出してバックアップとリカバリの訓練を行うことです。たとえば、バックアップとリカバリの訓練を行うことです。月に 1 回のバックアップにより、ファイルの可用性と安心感が効果的に向上します。

したがって、バックアップがあればすべてが確実であるとは考えないでください。また、バックアップ スクリプトが正しく実行されているかどうか、生成されたバックアップ スクリプトのコンテンツが利用可能であるかどうかも確認する必要があります。定期的にリカバリー訓練を実施。

関連する学習に関する推奨事項: プログラミング ビデオ

以上がMySQL バックアップ スクリプトの作成方法を見てみましょう。の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はjb51.netで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。

関連記事

続きを見る