MySQL スケジュール バックアップ ソリューション (Linux crontab を使用)

MySQL スケジュール バックアップ ソリューション (Linux crontab を使用)

序文

この世の愛には値段のつくものもありますが、データには値段のつけられないものがあります。将来、誤ってデータベースを削除してしまった場合に慌てて逃げなくて済むように、データのバックアップは特に重要です。

この記事で紹介する解決策は、Linux 独自の crontab スケジュール タスク機能を使用して、データベース バックアップ スクリプトを定期的に実行することです。

技術的なポイント:

  • データベースバックアップダンプコマンド
  • シェルスクリプト
  • Linux スケジュールされたタスク crontab

データバックアップダンプ

データベースには、データベース内のデータと構造をエクスポートするコマンドがあり、これがバックアップです。

バックアップしたデータを復元すると、元のデータ内のテーブルが削除され再構築され、その後バックアップ内のデータを挿入します。これがリカバリです。

リカバリ前のデータがバックアップよりも多い場合、リカバリ後に余分なデータが失われることに注意することが重要です。

私がよく使う2つのデータベースのバックアップとリカバリのコマンドを一覧表示します

PostgreSQL:

pg_dump -h [ip] -U [ユーザー名] [データベース名] > [エクスポートされた.sqlファイル] をバックアップします

復元 psql -s [データベース名] -f [.sql ファイルをエクスポート]

マイスク:

mysqldump -h -u [ユーザー名] -p [データベース名] > [エクスポートされた.sqlファイル] をバックアップします

mysqlを復元 -u [ユーザー名] -p [データベース名] < [エクスポートされた.sqlファイル]

シェルスクリプト

完全に機能するバックアップ ソリューションを完成させるには、シェル スクリプトが必要です。

このスクリプトでは、最大 30 個のファイルを指定されたパスにバックアップし、圧縮形式で保存します。30 個を超えるファイルがある場合は、最も古いファイルが削除され、操作ログが記録されます。

これ以上言うことはありません。すべては脚本に書いてあるので、やってみましょう!

#ユーザー名 username=root
# パスワード password = nicai
#バックアップするデータベース database_name=l_love_you

#保存するバックアップファイルの最大数は count=30 です
#バックアップ保存パスbackup_path=/app/mysql_backup
#日付 date_time=`日付 +%Y-%m-%d-%H-%M`

# フォルダーが存在しない場合は作成します if [ ! -d $backup_path ]; 
それから  
 mkdir -p $バックアップパス; 
フィ
#backupmysqldump を開始 -u $username -p$password $database_name > $backup_path/$database_name-$date_time.sql
#圧縮を開始 cd $backup_path
tar -zcvf $データベース名-$日付時刻.tar.gz $データベース名-$日付時刻.sql
#ソースファイルを削除します rm -rf $backup_path/$database_name-$date_time.sql
# バックアップ ログを更新 echo "create $backup_path/$database_name-$date_time.tar.gz" >> $backup_path/dump.log

#削除する必要があるバックアップを検索します delfile=`ls -l -crt $backup_path/*.tar.gz | awk '{print $9 }' | head -1`

#現在のバックアップ数がしきい値より大きいかどうかを判断します number=`ls -l -crt $backup_path/*.tar.gz | awk '{print $9 }' | wc -l`

[ $number -gt $count ]の場合
それから
 #最も古いバックアップを削除し、count 個のバックアップのみを保持します rm $delfile
 # ファイル削除ログを更新 echo "delete $delfile" >> $backup_path/dump.log
フィ

スクリプトに意味のある名前を付けます。例: dump_mysql.sh

スクリプトに実行権限を付与します (chmod +x dump_mysql.sh)。実行後、スクリプトは緑色に変わり、実行可能ファイルになります。

実行方法: ./ プラススクリプト名

chmodコマンドパラメータの意味 -
+ は特定の権限を追加することを表します
xは実行権限を表す

スケジュールされたタスクの crontab

Crontab は Linux に付属するスケジュールされたタスク機能です。これを使用して、毎朝 1 回 dump_mysql.sh スクリプトを実行できます。

Crontab の使用法:

  • crontab -l スケジュールされたタスクリストを表示する
  • crontab -e スケジュールされたタスクを編集(追加/削除)する

crontab -eコマンドを実行し、編集可能なテキストボックスを開いて、 00 01 * * * /app/dump_mysql.shと入力します。

元金が確保され、引き出しが完了すると追加が完了します。

コンテンツの説明:

00 01 * * * /app/dump_mysql.shは 2 つの部分に分かれています。

最初の部分 00 01 * * * はスケジュールされたタスクの期間であり、2 番目の部分 /app/dump_mysql.sh は指定された時間に実行する内容です。

期間表現は、分、時間、日、月、週を表す 5 つのプレースホルダーです。

プレースホルダー * は、毎を表します。最初の桁は毎分、2 番目の桁は毎時間、というようになります。

プレースホルダーは、特定の数字を使用して特定の時間を表します。最初の位置の 10 は 10 分を意味し、3 番目の位置の 10 は 10 日を意味します。

プレースホルダー - は間隔を示します。最初の 5-7 は 5 分から 7 分を意味し、5 番目の場合は金曜日から日曜日を意味します。

プレースホルダー / は間隔を示します。 5-10/2 は、最初の位置で 5 分から 10 分の間隔を示すために使用され、2 番目の位置で 5 時から 10 時までの間隔を示すために使用されます。

プレースホルダーでは、リストを示すために , を使用します。最初の位置の 5,10 は 5 ポイントと 10 ポイントを意味し、4 番目の位置は 5 月と 10 月を意味します。

要約する

これで、MySQL スケジュール バックアップ ソリューションに関するこの記事は終了です。MySQL スケジュール バックアップに関するより関連性の高いコンテンツについては、123WORDPRESS.COM の以前の記事を検索するか、次の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。

以下もご興味があるかもしれません:
  • Linuxでmysqlの定期的なコールドバックアップを実装するためにmysqldump+expect+crontabを使用するアイデアの詳細な説明
  • Linux 6.7 に付属する mysql-libs* crontab コマンドがアンインストール後に使用できなくなる理由の分析
  • Linux での crontab スケジュール バックアップの例を使用した MySQL スケジュール バックアップ
  • Linux システムで crontab を使用して MySQL データベースを定期的にバックアップする方法

<<:  Reactはダブルスライダークロススライドを実装します

>>:  MySQL インデックスのクイックガイド

推薦する

Dockerコンテナのネットワーク管理とネットワーク分離の実装

1. Dockerネットワーク管理1. Dockerコンテナ方式1) Dockerが外部ネットワーク...

Windows 10 システムで nginx ファイル サーバーを構成するためのグラフィック チュートリアル

Nginx の公式 Web サイトから Windows バージョンの Nginx をダウンロードしま...

一般的なテーブルコンポーネントの Vue カプセル化の完全な手順記録

目次序文テーブル コンポーネントをカプセル化する必要があるのはなぜですか?ステップ1: 共通コンポー...

SQL ステートメント実行の詳細な説明 (MySQL アーキテクチャの概要 -> クエリ実行プロセス -> SQL 解析順序)

序文:私はずっと、SQL 文がどのように、どのような順序で実行されるのかを知りたいと思っていました。...

MySQLでユーザー認証情報を表示する具体的な方法

具体的な方法: 1. コマンドプロンプトを開く2. mysql -u root -pコマンドを入力し...

TomcatのmaxPostSize属性を設定する際に注意する必要がある問題を解決する

必要:近い将来、大容量ファイルのアップロード機能を実装します。フロントエンドフレームワークのアップロ...

Nexus をベースに Alibaba Cloud プロキシ ウェアハウスを構成するプロセスの分析

Nexus のデフォルトのリモートリポジトリは https://repo1.maven.org/ma...

ウェブデザイン実践者必読のキャリアプラン

原文記事、転載の際は著者と出典を明記してください! Web デザインは間違いなくテクノロジーであり、...

Vite2とVue3を使用したウェブサイトの国際化を実現するプロセス全体

目次序文vue-i18nをインストールするロケールの設定getLangs.js の実装i18nインス...

フレックスレイアウトにおける画像変形の解決策の詳細な説明

フレックス レイアウトは現在よく使用されるレイアウト方法ですが、場合によっては小さな問題が発生するこ...

CentOS 7.x のマスターおよびスレーブ DNS サーバーの展開

1. 準備例: 2 台のマシン: 192.168.219.146 (マスター)、192.168.21...

Apache Tika を使用してファイルが破損しているかどうかを検出する方法

Apache Tika は、さまざまな形式のファイルからファイル タイプを検出し、コンテンツを抽出す...

MySQLのタイムゾーンを表示および設定する方法

1. データベースのタイムゾーンを確認する '%time_zone' のような変数を...

W3C チュートリアル (9): W3C XPath アクティビティ

XPath は、XML ドキュメントの一部を選択するための言語です。 XPath は、XSLT、XQ...

Vue は水の波紋効果のクリックフィードバック指示を実装します

目次水波効果実装を見てみましょう水の波紋のデフォルトスタイルをカスタマイズする水の波紋の位置と直径を...