MySQL スケジュール データベース バックアップ (フル データベース バックアップ) の実装

MySQL スケジュール データベース バックアップ (フル データベース バックアップ) の実装

1. MySQLデータのバックアップ

1.1、データをバックアップするためのmysqldumpコマンド

MySQL には、コマンドラインからデータベースのデータとファイルをエクスポートするための便利なツール mysqldump が用意されています。コマンドラインからデータベースの内容を直接エクスポートしてダンプすることができます。まず、mysqldump コマンドの使い方を簡単に見てみましょう。

#MySQLdump よく使われる mysqldump -u root -p --databases database 1 database 2 > xxx.sql

1.2、mysqldumpの一般的な操作例

1. すべてのデータベースのデータと構造をバックアップする

mysqldump -uroot -p123456 -A > /data/mysqlDump/mydb.sql

2. データベース全体の構造をバックアップする(-dパラメータを追加)

mysqldump -uroot -p123456 -A -d > /data/mysqlDump/mydb.sql

3. すべてのデータベースデータをバックアップする(-tパラメータを追加)

mysqldump -uroot -p123456 -A -t > /data/mysqlDump/mydb.sql

4. 単一のデータベース(データベース名mydb)のデータと構造をバックアップします。

mysqldump -uroot-p123456 mydb > /data/mysqlDump/mydb.sql

5. 単一データベースの構造をバックアップする

mysqldump -uroot -p123456 mydb -d > /data/mysqlDump/mydb.sql

6. 単一データベースのデータをバックアップする

mysqldump -uroot -p123456 mydb -t > /data/mysqlDump/mydb.sql

7. 複数のテーブルのデータと構造をバックアップします(データと構造を個別にバックアップする方法は上記と同じです)

mysqldump -uroot -p123456 mydb t1 t2 > /data/mysqlDump/mydb.sql

8. 複数のデータベースを一度にバックアップする

mysqldump -uroot -p123456 --databases db1 db2 > /data/mysqlDump/mydb.sql

1.3. MySQLバックアップコンテンツの復元

復元には 2 つの方法があります。1 つ目は MySQL コマンドラインで復元する方法、2 つ目は SHELL 行を使用して復元を完了する方法です。

1. システム コマンド ラインで、次のように入力して復元します。

mysql -uroot -p123456 < /data/mysqlDump/mydb.sql

2. MySQL システムにログインした後、source コマンドを使用して対応するシステム内のファイルを見つけて復元します。

mysql> ソース /data/mysqlDump/mydb.sql

2. バックアップデータベースファイルを維持するためのスクリプトを作成する

Linux では、通常、実行する必要があるコンテンツを記述するために BASH スクリプトが使用され、crontab コマンドを使用してスケジュールされた時間にコマンドを実行し、自動ログ生成を実現します。

次のコード関数は、MySQL をバックアップし、crontab と組み合わせて、過去 1 か月 (31 日間) の毎日の MySQL データベース レコードをバックアップします。

2.1. バックアップファイルの数を固定するためにBASHを書く

Linuxでは、viまたはvimを使用してスクリプトの内容を記述し、mysql_dump_script.shという名前を付けます。

#!/bin/bash

#バックアップ数を保存し、31日分のデータをバックアップします。数=31
#バックアップ保存パスbackup_dir=/root/mysqlbackup
#日付 dd=`日付 +%Y-%m-%d-%H-%M-%S`
#バックアップツール tool=mysqldump
#ユーザー名 username=root
# パスワード password = TankB214
#バックアップするデータベース database_name=edoctor

# フォルダーが存在しない場合は作成します if [ ! -d $backup_dir ]; 
それから     
    mkdir -p $backup_dir; 
フィ

# 書き方の簡単な方法は、mysqldump -u root -p123456 users > /root/mysqlbackup/users-$filename.sql です。
$tool -u $ユーザー名 -p$パスワード $データベース名 > $backup_dir/$データベース名-$dd.sql

# バックアップ ログを作成するために書き込みます echo "create $backup_dir/$database_name-$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`

[ $count -gt $number ]の場合
それから
  #最も古いバックアップを削除し、バックアップの数だけ残す rm $delfile
  # 削除ファイルログを書き込みます echo "delete $delfile" >> $backup_dir/log.txt
フィ

上記コードの主な意味は次のとおりです。

1. まず、バックアップする最大番号、バックアップパス、ユーザー名、パスワードなどのさまざまなパラメータを設定します。

2. mysqldump コマンドを実行してバックアップ ファイルを保存し、同じディレクトリの log.txt に操作を出力して操作ログをマークします。

3. 削除するファイルを定義します。lsコマンドを使用して、ファイル名の列である9番目の列を取得し、

頭 -1

最新の操作時刻を持つファイルは実装によって定義されており、削除する必要があります。

4. バックアップの数を定義する: lsコマンドを追加する

トイレ -l

sql で終わるファイル内の行数をカウントします。

5. ファイルが制限を超えた場合は、最初に作成されたSQLファイルを削除します。

2.2. crontabを使用して定期的にバックアップスクリプトを実行する

LINUX では、定期的なタスクは通常、cron デーモン プロセス [ps -ef | grep cron] によって処理されます。 Cron は、コマンド ラインとそれが呼び出される時刻を含む 1 つ以上の構成ファイルを読み取ります。
cron 設定ファイルは「crontab」と呼ばれ、「cron table」の略です。

1. Cronサービス

Cron は、人間の介入なしにジョブを実行できる、Linux 上のスケジュール実行ツールです。

  service crond start //サービスを開始します service crond stop //サービスを終了します service crond restart //サービスを再起動 service crond reload //設定を再読み込みします service crond status //サービスの状態を確認します

2. Crontab 構文

crontab コマンドは、cron デーモンを駆動するために使用されるテーブルをインストール、削除、または一覧表示するために使用されます。ユーザーは、実行するコマンド シーケンスを crontab ファイルに記述して、コマンドを実行します。各ユーザーは独自の crontab ファイルを持つことができます。 /var/spool/cron 内の crontab ファイルを直接作成または変更することはできません。 crontab ファイルは crontab コマンドによって作成されます。
crontab ファイルに実行するコマンドと時刻を入力する方法。このファイルの各行には 6 つのフィールドが含まれており、最初の 5 つのフィールドはコマンドが実行される時間を指定し、最後のフィールドは実行されるコマンドです。
各フィールドはスペースまたはタブで区切られます。形式は次のとおりです。
分 時間 日 月 曜日 コマンド
有効な値: 00-59 00-23 01-31 01-12 0-6 (0 は日曜日)
数字に加えて、いくつかの特殊記号があります。つまり、「*」、「/」、「-」、「」です。「*」は値の範囲内のすべての数字を表し、「/」はすべてを意味し、「/5」は5単位ごとを意味し、「-」は特定の数字から特定の数字までを表し、「、」は複数の個別の数字を区切ります。

  • -l 現在のcrontabを標準出力に表示します。
  • -r 現在のcrontabファイルを削除します。
  • -e VISUAL または EDITOR 環境変数で指定されたエディターを使用して、現在の crontab ファイルを編集します。編集を終了して終了すると、編集したファイルが自動的にインストールされます。

3. cronスクリプトを作成する

ステップ 1: cron スクリプト ファイルを作成し、mysqlRollBack.cron という名前を付けます。
15,30,45,59 * * * * echo "xgmtest....." >> xgmtest.txt は、印刷コマンドが 15 分ごとに 1 回実行されることを意味します。ステップ 2: スケジュールされたタスクを追加します。コマンド「crontab crontest.cron」を実行します。 3番目のステップを完了します: 「crontab -l」を実行して、スケジュールされたタスクが成功したかどうか、または対応するcronスクリプトが/var/spool/cronに生成されたかどうかを確認します。

注: この操作は、新しいcrontabを追加するのではなく、ユーザーのcrontabを直接置き換えます。

スケジュールされたタスク スクリプトを定期的に実行します (最初にシェル スクリプトの実行権限を与えることを忘れないでください)

0 2 * * * /root/mysql_backup_script.sh

次に、crontabコマンドを使用して、定期的にスケジュールされたスクリプトを作成します。

crontab mysqlRollback.cron

次に、次のコマンドを使用して、スケジュールされたタスクが作成されたかどうかを確認します。

crontab -l

crontab の使用例を添付します。

1. 毎日午前6時

0 6 * * * echo "おはようございます。" >> /tmp/test.txt //注意: echo だけでは、cron がすべての出力を root のメールボックスに電子メールで送信するため、画面に出力が表示されません。

2. 2時間ごと

0 */2 * * * echo "ちょっと休憩しましょう。" >> /tmp/test.txt  

3. 午後11時から午前8時まで2時間ごとと午前8時

0 23-7/2,8 * * * echo "良い夢を" >> /tmp/test.txt

4. 毎月4日と毎週月曜日から水曜日の午前11時

0 11 4 * 1-3 コマンドライン

5. 1月1日午前4時

0 4 1 1 * コマンドライン SHELL=/bin/bash PATH=/sbin:/bin:/usr/sbin:/usr/bin MAILTO=root //エラーが発生したりデータが出力された場合、データはこのアカウントに電子メールとして送信されます HOME=/

6. /etc/cron.hourlyのスクリプトを1時間ごとに実行する

01 * * * * ルート実行部分 /etc/cron.hourly

7. /etc/cron.dailyのスクリプトを毎日実行する

02 4 * * * ルート実行部分 /etc/cron.daily 

8. /etc/cron.weeklyのスクリプトを毎週実行する

22 4 * * 0 ルート実行部分 /etc/cron.weekly

9. /etc/cron.monthlyのスクリプトを毎月実行する

42 4 1 * * ルート実行部分 /etc/cron.monthly

注: 「run-parts」パラメータ。このパラメータを削除すると、フォルダ名の代わりに実行するスクリプトの名前を書き込むことができます。

10. 毎日午後 4 時、5 時、6 時の 5 分、15 分、25 分、35 分、45 分、55 分にコマンドを実行します。

5、15、25、35、45、55、16、17、18 * * * コマンド

11. システムは毎週月曜日、水曜日、金曜日の午後 3 時にメンテナンス モードに入り、再起動します。

00 15 * * 1,3,5 シャットダウン -r +5

12. 毎時 10 分と 40 分に、ユーザー ディレクトリで innd/bbslin コマンドを実行します。

10,40 * * * * innd/bbslink

13. 毎時 1 分ごとにユーザー ディレクトリで bin/account コマンドを実行します。

1 * * * * ビン/アカウント

3. 実行効果のスクリーンショット

以下は 1 分ごとのテストのスクリーンショットです。対応するコードは次のとおりです。

* * * * * /root/mysql_backup_script.sh

エフェクトのスクリーンショット:

log.txt ファイルには、バックアップ操作の詳細なログが記録されます。

この記事の参考文献:

1. MySQLdump の一般的なコマンド: https://www.cnblogs.com/smail-bao/p/6402265.html (Blog Park)

2. シェル スクリプトを使用して MySQL データベースをバックアップする: https://www.cnblogs.com/mracale/p/7251292.html (Blog Park)

3. Linux での Crontab スケジュール実行タスク コマンドの詳細な説明: https://www.cnblogs.com/longjshz/p/5779215.html (Blog Park)

これで、MySQL データベースのスケジュール バックアップ (フル データベース バックアップ) の実装に関するこの記事は終了です。MySQL のスケジュール バックアップに関する関連コンテンツについては、123WORDPRESS.COM の以前の記事を検索するか、以下の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。

以下もご興味があるかもしれません:
  • MySQL データベースを自動的にバックアップする最良の方法 (Windows サーバー)
  • Linux での crontab スケジュール バックアップの例を使用した MySQL スケジュール バックアップ
  • Linux で MySQL データベースのスケジュールされたバックアップを実装する簡単な方法
  • Linux は定期的に MySQL データベースをバックアップし、以前のバックアップ ファイルを削除します (推奨)
  • 定期的にMySQLをバックアップし、定期的にnginxのアクセスログをカットする方法
  • MySQL スケジュールされたデータベース バックアップ操作の例

<<:  VMware は Centos7 システムの PXE+kickstart 無人インストールの詳細なプロセスを実装します

>>:  TypeScript 列挙型

推薦する

外部ファイル(js/vbs/css)をインポートするときに文字化けを回避する方法

ページ内にはjs、cssなどの外部ファイルが導入されており、外部ファイルのエンコードが現在のページフ...

Docker 環境での Jmeter の分散操作に関する詳細なチュートリアル

1. jmeterの基本イメージを構築するDockerfile は次のとおりです。 # Java 8...

Ubuntu 20.04でルートアカウントを有効にする方法

Ubuntu 20.04 をインストールした後、デフォルトでは root アカウントのログイン権限が...

DockerでLNMPアーキテクチャを展開する方法

環境要件: IPホスト名192.168.1.1ノード1プロジェクト計画:コンテナネットワークセグメン...

VMware Workstation 14 Pro に Win10 システムをインストールする

この記事では、VMware Workstation 14 Proにシステムをインストールする方法を紹...

MySQL マスタースレーブ構築(複数のマスターと 1 つのスレーブ)の実装アイデアと手順

背景:最近、同社のプロジェクトは同時実行のプレッシャーに耐えられないようなので、最適化が差し迫ってい...

Linux環境でOpenSSL証明書を生成する

1. 環境: CentOS7、OpenSSL1.1.1k。 2. コンセプト:ルート証明書: サーバ...

after疑似要素を使用して中空の三角矢印とXアイコンを実装する例

フロントエンドのデザイン案では、「X」や「>」の形をした閉じるボタンや、他の 3 方向の白抜き...

vue+element で動的スキニングを実装するためのサンプルコード

プロジェクトのテーマがすべての人の美的感覚を満足できないこともあります。このとき、スキン変更機能は非...

すべてのブラウザに対応したデータURIとMHTMLの完全なソリューション

データURI Data URI は、小さなファイルをドキュメントに直接埋め込むために RFC 239...

フロントエンドブラウザのフォントサイズが12px未満のソリューション

序文最近プロジェクトに取り組んでいたとき、UI デザインのフォント サイズは 10 ピクセルでした。...

Linux 7.7 でスワップ パーティション SWAP を設定する方法

Linux システムの Swap パーティション、つまり swap パーティションは、一般に仮想メモ...

MYSQL フルバックアップ、マスタースレーブレプリケーション、カスケードレプリケーション、および半同期の概要

MySQL フルバックアップ1. バイナリログを有効にし、データベースから分離して別々に保存する v...

Docker ベースのよく使われる CentOS7 イメージの概要

目次1 Dockerをインストールする2 国内ミラーソースの設定3 中国語環境基本版Centos7イ...

VueはCanvasを使用してランダムなサイズで重なり合わない円を生成します

目次キャンバス関連文書エフェクト画像表示ケースの完全なコード親コンポーネントコードサブコンポーネント...