シェルスクリプトを使用したMySQLデータベースの自動バックアップ

シェルスクリプトを使用したMySQLデータベースの自動バックアップ

シェルスクリプトを使用したMySQLデータベースの自動バックアップ

データベースを頻繁にバックアップするのは良い習慣です。データベースの破損やデータの損失の可能性は非常に低いですが、一度そのようなことが起こると、後悔しても仕方がありません。通常、Web サイトやアプリケーションのバックグラウンドでデータベースをバックアップするための機能ボタンはありますが、手動で実行する必要があります。毎日自動的にバックアップする安全な方法が必要です。次のシェル スクリプトは、MySQL データベースを毎日バックアップするように Crontab を設定する方法を示しています。

#!/bin/bash
# データベース認証 user=""
 パスワード=""
 ホスト=""
 db_name=""
# その他 backup_path="/path/to/your/home/_backup/mysql"
 日付=$(日付 +"%d-%b-%Y")
# エクスポートされたファイルのデフォルトの権限を umask 177 に設定します
# データベースを SQL ファイルにダンプする mysqldump --user=$user --password=$password --host=$host $db_name > $backup_path/$db_name-$date.sql

上記のスクリプトを使用すると、SQL バックアップ ファイルを毎日エクスポートでき、ファイル名はその日の日付に応じて生成されます。時間が経つにつれて、このようなファイルが大量に生成されます。古いバックアップ ファイルを定期的に削除する必要があります。次のコマンドラインはこのタスク用です。上記のスクリプトの後に追加できます。

# 30 日以上経過したバックアップ ファイルを削除します。find $backup_path/* -mtime +30 -exec rm {} \;

上記のスクリプトを使用しているときに、問題が発生したことがあります。Crontab がスクリプトのエクスポートを定期的に実行したときにエラーは発生しませんでしたが、エクスポートされた SQL ファイルは空でした。ただし、コンソールにログインしてスクリプトを手動で実行すると、バックアップは成功しました。後で調べたところ、Crontab 実行スクリプトにシステム環境情報が不足しており、mysqldump が見つからないことがわかりました。修正方法は、mysqldump のフルパスを使用することでした。エラー メッセージがない理由は、mysqldump がエラー メッセージを stderr に出力するためです。エラー メッセージが表示されるように、コマンドの最後に「2>&1」を追加します。

mysqldump -ujoe -ppassword > /tmp/somefile 2>&1

読んでいただきありがとうございます。お役に立てれば幸いです。このサイトをサポートしていただきありがとうございます。

以下もご興味があるかもしれません:
  • HBASE でよく使用されるシェル コマンド、追加、削除、変更、クエリ メソッド
  • MySQL のスケジュールされたバックアップ、削除、および回復機能を実装するシェル スクリプト
  • MySQLクエリ結果をシェルで簡単に処理する方法
  • シェルを使用してMySQLデータバックアップスクリプトを作成する
  • シェルでパスワードなしでMySQLデータベースに素早くログインする方法
  • シェルスクリプトを使用して、mysql を追加、削除、変更、チェックし、my.cnf を構成します。

<<:  Linuxでプロセスが占有するポート番号を表示する

>>:  自作メニューをクリックする効果を実現するJavaScript

推薦する

Ubuntu 18.0.4 は mysql をインストールし、エラー 1698 (28000): ユーザー ''root''@''localhost'' のアクセスが拒否されましたを解決します

序文最近 Linux を学び、その後 Win から Ubuntu に変更しました。以前インストールし...

MySQLがフルテーブルスキャンを実行するいくつかの状況

目次ケース1:ケース2:ケース3:簡単にまとめると:過去 2 日間で、完全なテーブル スキャンを引き...

JavaScript は詳細なコードで星座クエリ機能を実装します

目次1. タイトル2. コード3. 結果IV. 結論1. タイトルテキスト ボックスに誕生日の値を入...

MySQL の大文字と小文字の区別に関する注意

目次MySQLの大文字と小文字の区別はパラメータによって制御されますMySQLの大文字と小文字の区別...

MySQLトリガーの例の詳細な説明

目次トリガーとは何かトリガーを作成する複数の実行ステートメントを持つトリガーの作成制限と考慮事項要約...

Vueはパーセンテージバー効果を実現します

この記事では、パーセンテージバーを実現するためのVueの具体的なコードを参考までに共有します。具体的...

スクリプトを使用して、ワンクリックでDockerイメージをパッケージ化してアップロードします。

著者は1年以上マイクロフロントエンドプロジェクトに取り組んできました。チームは10個のマイクロアプリ...

MYSQL 5.6 スレーブレプリケーションの展開と監視

MYSQL 5.6 スレーブレプリケーションの展開と監視MYSQL 5.6 のインストールと展開 #...

Docker で PostgreSQL を実行し、いくつかの接続ツールを推奨する

1 はじめに PostgreSQL は、非常に充実した機能を備えたフリーソフトウェアのオブジェクトリ...

Vue router-viewとrouter-linkの実装原理

使用 <div id="アプリ"> <router-link ...

LinuxでのDockerのインストールチュートリアル

Docker パッケージは、デフォルトの CentOS-Extras リポジトリにすでに含まれていま...

Windows 10 無料インストール版の MySQL インストールと設定のチュートリアル

ネットでいろいろ検索してみたところ、Linux システム向けではなく、現在の新しいバージョンと一致し...

node.jsミドルウェアの種類についての簡単な説明

目次概要1. アプリケーションレベルのミドルウェア2. 組み込みミドルウェア3. サードパーティミド...

カンマで区切られたmysqlの分割関数の実装

1: 文字列を区切るためのストアドプロシージャを定義する 区切り文字 $$ `mess`$$ を使う...

Vue はグラフィック検証コードログインを実装します

この記事では、グラフィック認証コードログインを実装するためのVueの具体的なコードを参考までに紹介し...