Centos7 で mysqldump を使用して MySQL データベースの毎日の自動バックアップを作成する

Centos7 で mysqldump を使用して MySQL データベースの毎日の自動バックアップを作成する

1. 要件:

データベースのバックアップは、実稼働環境にとって特に重要です。データベースのバックアップは、物理バックアップと論理バックアップに分けられます。

物理バックアップ: 関連するコピー コマンドを使用して、データベースのデータ ディレクトリ内のデータを直接コピーするか、複数のコピーを作成します。よく使用されるツール: XtraBackup。

論理バックアップ: MySQL に付属する mysqldump コマンドを使用して、バックアップするデータを SQL ステートメントの形式で保存します。

次に、mysqldump コマンドを使用してデータをバックアップします。毎日のバックアップには自動タスクを使用します。

2. 実行ファイルの書き込み:

1. フォルダを作成し、実行されたshファイルとデータベースのバックアップファイルをこのフォルダに保存します。

mkdir /usr/local/mysqlDataBackup
cd /usr/local/mysqlDataBackup

2. sh ファイルを作成し、シェル スクリプトを記述します。

バックアップ.sh

単一データベース スクリプト:

#!/bin/bash
#このスクリプトはデータベースの自動バックアップ用です
#作成者: weijb 日付: 2021-07-28
#7日前のデータを削除

DATAdelete='日付 +%F -d "-7 日"'
rm -rf /usr/local/mysqlDataBackup/*_${DATAdelete}.sql.gz

MYSQL_CMD = /usr/bin/mysqldump
MYSQL_USER=アカウント MYSQL_PWD=パスワード DATA='日付 +%F'
DB名=test_db

${MYSQL_CMD} -u${MYSQL_USER} -p${MYSQL_PWD} --compact -B ${DBname} | gzip >/usr/local/mysqlDataBackup/${DBname}_${DATA}.sql.gz

分析:

(1)スペースを節約するために7日前のバックアップデータを削除します。
DATAdelete='date +%F -d "-7 day"' 現在時刻の7日前の日付

rm -rf /usr/local/mysqlDataBackup/*_${DATAdelete}.sql.gz スペースを節約するために過去 7 日間のバックアップ データを削除し、最新の 7 日間のデータのみを保持します。

(2)変数を定義する:
MYSQL_CMD=/usr/bin/mysqldump mysql に付属する mysqldump コマンドの場所MYSQL_USER=Account mysql に接続するアカウントMYSQL_PWD=Password mysql に接続するパスワードDATA='date +%F' 現在の日付を取得します。%F は %Y-%m-%d の形式を表します。例: 2021-07-28
DBname=test_db バックアップするデータベースの名前。現在のデータベース名は test_db です。
(3)バックアップコマンドを実行します。
${MYSQL_CMD} -u${MYSQL_USER} -p${MYSQL_PWD} --compact -B ${DBname} | gzip >/usr/local/mysqlDataBackup/${DBname}_${DATA}.sql.gz
--compact は出力情報を最適化します -B はデータベース作成ステートメントを含みます gzip 圧縮されたバックアップはバックアップファイルのサイズを縮小します usr/local/mysqlDataBackup/${DBname}_${DATA}.sql.gz バックアップファイルの保存パスと名前

複数のデータベースのバックアップ:

#!/bin/bash
#このスクリプトはデータベースの自動バックアップ用です
#作成者: weijb 日付: 2021-07-28
#7日前のデータを削除
DATAdelete='日付 +%F -d "-7 日"'
rm -rf /usr/local/mysqlDataBackup/*_${DATAdelete}.sql.gz

MYSQL_CMD = /usr/bin/mysqldump
MYSQL_USER=アカウント MYSQL_PWD=パスワード DATA='日付 +%F'
DBname='mysql -u${MYSQL_USER} -p${MYSQL_PWD} -e "データベースを表示;" | sed '1,5d''

${DBname} の DBname について
する 
  ${MYSQL_CMD} -u${MYSQL_USER} -p${MYSQL_PWD} --compact -B ${DBname} | gzip >/usr/local/mysqlDataBackup/${DBname}_${DATA}.sql.gz
終わり

分析:

(1)バックアップが必要なデータベースを傍受する

-e "show databases;" | sed '1,5d'' はすべてのデータベースを表示し、mysql 自身の information_schema、mysql、performance_schema、および sys を除くすべてのデータベースをキャプチャします。

(2)その他の詳細は単一データベースバックアップと同様である。

3. スクリプトが正常に書き込まれたことを確認します。

(1)スクリプトファイルの認証:

cd /usr/local/mysqlDataBackupchmod +x バックアップ.sh

(2)スクリプトを実行する。

sh バックアップ.sh

/usr/local/mysqlDataBackup の下に生成されたファイルは、書き込みが成功したことを示しています。

4. 自動タスクを記述する:

毎日午前 1 時にデータベースをバックアップします。

crontab -e

編集するには i と入力します:

00 01 * * * /usr/local/mysqlDataBackup/backup.sh

esc キーを押してファイル編集を終了し、:wq と入力して保存して終了します。

タスクが正常に設定されているかどうかを確認します。

crontab -l

crontab サービスを再起動します。

サービスcrondの再起動

この時点で、データベースをバックアップする mysql 自動タスク スクリプトが完了します。

CentOS 7 で mysqldump を使用して MySQL データベースの毎日の自動バックアップを実行する方法については、これで終わりです。mysqldump を使用した MySQL 自動バックアップの詳細については、123WORDPRESS.COM の以前の記事を検索するか、次の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。

以下もご興味があるかもしれません:
  • Windows での MySQL 自動バックアップのバッチ処理の実装 (ディレクトリのコピーまたは mysqldump バックアップ)
  • MySQLdump コマンドを使用した MySQL データの移行
  • mysql バックアップ スクリプト mysqldump の使い方の詳細な説明
  • Linux mysqldump によるデータベース、データ、テーブル構造のエクスポートの詳細な説明
  • mysqldumpデータエクスポートの問題に関する詳細な議論
  • mysqldump (MySQL データベースのバックアップとリカバリ) の使用方法についての簡単な説明
  • MySQL データベースを手動および自動でバックアップする 8 つの方法
  • LinuxはMySQLデータベースの自動バックアップとスケジュールバックアップを毎日実装しています
  • MySQL 自動バックアップとリカバリのいくつかの方法の詳細な説明 (グラフィック チュートリアル)
  • CentOS システムで MySQL の自動毎日バックアップを設定する方法

<<:  Docker で TLS と CA 認証を有効にする方法

>>:  HTML と CSS を書くための 6 つの最も効果的な方法

推薦する

Linux のごみ箱メカニズムの実装プロセスと使用方法の詳細な説明

序文: Linux システムでの rm は元に戻せません。コマンドの設計自体に問題はありません。問題...

フォーム要素の簡単な実装コードでは登録を例に挙げています

コード実装:コードをコピーコードは次のとおりです。 <!DOCTYPE html> &l...

画像内のrarファイルを隠す方法

このロゴを .rar ファイルとしてローカルに保存し、解凍して効果を確認することができます。よりシン...

HTML に FLASH へのリンクを追加し、すべての主要ブラウザと互換性を持たせる方法

まずコードを見てみましょうコードをコピーコードは次のとおりです。 <div style=&qu...

Vue は Echarts をインポートして折れ線グラフを実現します

この記事では、VueでEchartsをインポートして線散布図を実現する具体的なコードを参考までに共有...

Vue のライフサイクルとフック関数の詳細な説明と典型的な面接の質問

目次1. Vue ライフサイクル2. フック機能2.1 4つの段階と8つの方法に分かれています。 2...

Docker実践: Pythonアプリケーションのコンテナ化

1. はじめにコンテナはサンドボックス メカニズムを使用して相互に分離します。コンテナ内にデプロイさ...

Vueのログインとログアウトの詳細な説明

目次ログインビジネスプロセスログイン機能の実装要約するまず、エフェクトの実装プロセスを見てみましょう...

Docker バインディング固定 IP/クロスホストコンテナ相互アクセス操作

序文これまでは、パイプワークで割り当てた静的 IP は一時的なものであり、再起動すると無効になってい...

Navicat for MySql ビジュアルインポート CSV ファイル

この記事では、参考までに、Navicat for MySql の CSV ファイルのビジュアルインポ...

Linux mysql5.5 を mysql5.7 にアップグレードする手順と落とし穴

目次Linux MySQL 5.5 が MySQL 5.7 にアップグレードされました1. mysq...

MySQLとElasticsearch間のデータ非対称性問題の解決策

MySQLとElasticsearch間のデータ非対称性問題の解決策jdbc-input-plugi...

Ember.js と Vue.js の詳細な比較

目次概要フレームワークを選択する理由は何ですか? js のエンバーEmber.js と Vue.js...

Alibaba Cloud MySQL スペースをクリーンアップする方法

今日、Alibaba Cloudからディスク警告通知を受け取りました。確認したところ、100Gのスペ...

CocosCreator ソースコードの解釈: エンジンの起動とメインループ

目次序文準備行く!文章プロセスを開始するメインループまとめ要約する序文準備皆さんは、こんなことを考え...