MySQL バックアップ スクリプトの書き方

MySQL バックアップ スクリプトの書き方

序文:

データベースのバックアップの重要性は、特にデータの損失が深刻な結果を招く可能性がある実稼働環境では明らかです。したがって、環境がどのようなものであっても、データベースを定期的にバックアップするための適切なバックアップ戦略が必要です。 MySQL では、より一般的に使用される論理バックアップ ツールは mysqldump です。この記事では、MySQL のスケジュール バックアップの方法を紹介します。

1. 適切なバックアップ戦略を策定する

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

  • 物理バックアップまたは論理バックアップ。これはデータベースのサイズによって決定されます。たとえば、100G 未満の場合は論理バックアップを使用し、100G を超える場合は物理バックアップを使用します。
  • バックアップ ファイルの保持期間。これはディスクのサイズによって決まり、通常は少なくとも 7 日間保持されます。
  • バックアップが実行された時刻。これは通常、バックアップ操作が実行される早朝などのオフピーク時間帯に実行されます。
  • バックアップ間隔。一般的には 1 日に 1 回のバックアップが推奨されます。システムがそれほど重要でない場合は、バックアップ間隔を延長できます。
  • 奴隷図書館はありますか?スレーブ データベースがある場合は、マスター データベースへの負荷を軽減するために、スレーブ データベースのデータをバックアップすることをお勧めします。

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

Linux システムでは、crontab を使用してバックアップ スクリプトを実行できます。crontab についてよく知らない場合は、次の紹介を参照してすぐに学習できます。

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

形式:

* * * * * 指示
毎日、毎月、毎週のコマンドをタイムシェアリング

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

crontab -e このユーザーのスケジュールされたタスク設定を編集する
crontab -l はこのユーザーでスケジュールされたすべてのタスクを一覧表示します

それでは、バックアップ スクリプトを記述しましょう。 スクリプトのテンプレートは次のとおりです。

#!/bin/bash
# ---------------------------------------------------------------------------------
# ファイル名: mysql_backup.sh 
# 記述: データベースのバックアップに使用
# リビジョン: 1.0
# 日付: 2020/08/11
# 著者: 王

# mysqlログインユーザー名とパスワードを設定します(実際の状況に応じて入力してください)
mysql_user = "ルート"
mysql_password = "あなたのパスワード"
mysql_host = "ローカルホスト"
mysql_port = "3306"
バックアップディレクトリ = /data/mysql_backup

dt=日付 +'%Y%m%d_%H%M'
echo "バックアップ開始日:" $(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

$backup_dir -mtime +7 -type f -name '*.sql' -exec rm -rf {} \; を検索します。
echo "バックアップ成功日:" $(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 日前のバックアップ ファイルを自動的に削除します)。

rem 作者:wang
日付:20200811
rem ******MySQL バックアップ開始********
@エコーオフ
forfiles /p "E:\MySQLdata_Bak\mysql_backup" /m backup_*.sql -d -7 /c "cmd /c del /f @path"
「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"
@エコーオン
rem ******MySQL バックアップ終了********

上記のスクリプトは参考用であり、独自の環境に応じて若干変更することができます。同様に、スクリプトをデバッグした後、スケジュールされたタスクに追加できます。Windows のスケジュールされたタスクについてよくわからない場合は、Baidu で検索できます。これも非常に便利で簡単です。

4. バックアップの可用性チェック

バックアップに加えて、バックアップ データの可用性を確認することが非常に重要です。データを回復する必要があるときに、保存したバックアップ データがすべて無効であることが突然わかったら、どれほど困るか想像してみてください。多くの友人がバックアップ スクリプトを作成し、それをスケジュールされたタスクに追加します。次に、スケジュールされたタスクが実行されているかどうか、およびバックアップ ディレクトリにファイルがあるかどうかを確認します。バックアップ ファイルを使用する必要があるときに、バックアップ データに問題があることがよくわかります。

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

したがって、バックアップがあれば万全だと考えないでください。バックアップ スクリプトが正しく実行されているかどうか、また作成されたバックアップ スクリプトの内容が利用可能かどうかも確認する必要があります。定期的にリカバリ ドリルを実行するのが最善です。

要約:

この記事では、主に Linux および Windows システムでの MySQL スケジュール バックアップ スクリプトを紹介します。スクリプトの内容は比較的シンプルで明確であり、機能も複雑ではありません。他のバックアップ要件がある場合は、これに基づいて変更および改善できます。この記事がお役に立てば、ぜひシェアして転送してください。

上記は、MySQL バックアップ スクリプトの書き方の詳細内容です。MySQL バックアップ スクリプトの詳細については、123WORDPRESS.COM の他の関連記事をご覧ください。

以下もご興味があるかもしれません:
  • MySQLのバックアップとリカバリの簡単な分析
  • MySQLのバックアップとリカバリの詳細な説明
  • MySQL スケジュール バックアップ ソリューション (Linux crontab を使用)
  • MySQL スケジュールバックアップタスクの簡単な分析
  • Linux サーバーのスクリプトを自動的にバックアップする方法 (mysql、添付ファイルのバックアップ)
  • Linux は定期的に MySQL データベースをバックアップし、以前のバックアップ ファイルを削除します (推奨)
  • CentOS7 で MySQL のスケジュールされた自動バックアップを実装する方法
  • Mysql 複数データベースのバックアップ コード例
  • MySQL アカウント情報をエレガントにバックアップする方法

<<:  Vue は動的なプログレスバー効果を実現します

>>:  CentOS ベースの OpenStack 環境の展開に関する詳細なチュートリアル (OpenStack のインストール)

推薦する

MySQL で explain ステートメントを使用する基本的なチュートリアル

目次1. 概要1. 説明文テスト2. 結果の各列の説明2. ID列の説明1. 環境整備2. expl...

MySQL データベース アカウントの作成、認証、データのエクスポートおよびインポート操作の例

この記事では、MySQL データベースでのアカウントの作成、認証、データのエクスポートおよびインポー...

CSS3でハートを描く

成果を達成する要件/機能: CSS + HTML を使用してハートを描く方法。分析:正方形と 2 つ...

cocoscreatorプレハブの詳しい説明

目次プレハブプレハブの作り方プレハブの役割1. 同じタイプのノードをバッチで作成する2. 特定の時間...

MySQLインデックスの使用に関するヒントと注意事項

1. インデックスの役割一般的なアプリケーション システムでは、読み取りと書き込みの比率は約 10:...

HTTP および HTTP コラボレーション Web サーバー アクセス フロー図

Web サーバーは、独立したドメイン名を持つ複数の Web サイトを構築できるほか、通信経路上のトラ...

960 グリッドシステムの基本原理と使用法

もちろん、CSS はフレームワークを必要とするほど高度ではないと考えて、反対の意見を持つ人もたくさん...

Docker 入門インストールチュートリアル (初心者版)

ドクター紹介: Docker はコンテナ関連の技術です。簡単に言うと、さまざまなソフトウェアを実行で...

JavaScript クラス配列の詳細な理解

js 配列はどこでも使用されているため、おそらく誰もがよく知っているでしょうが、配列クラス (疑似配...

JS で配列の重複排除を実装する 7 つの方法

目次1. Set()+Array.from() を使用する2. 2層ループ+アレイ接合方式の使用3....

EXPLAIN を使って MySQL の SQL 実行プランを分析する方法

序文MySQL では、EXPLAIN コマンドを使用して、テーブルの接続方法や SELECT ステー...

Oracle を MySQL に置き換える際の問題と解決策

目次移行ツールアプリケーション変換mysql8.0 ドライバ パッケージを追加データソース構成の変更...

複数の HTML ページで HTML コードをまとめて呼び出す方法

方法 1: スクリプト方式を使用する:共通ヘッダー ファイル head.js または共通フッター フ...

Linux オペレーティング システムで ssh/sftp を構成して権限を設定する方法

FTP と比較すると、SSH ベースの sftp サービスは、セキュリティが優れており (非プレーン...

CSS3は、Transformを使用して動く2D時計を作成します。

これでtransformコースは終了です。例を見てみましょう。transform transform...