シェルスクリプトを使用した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

推薦する

Linux でプロセスを効果的に管理するための 8 つのコマンド

序文プロセス管理の役割:サーバーの健全性状態を判定する: プロセスの状態 (メモリ、CPU 占有率な...

Reactにおけるフックの一般的な使用法

目次1. フックとは何ですか? 2. フックはなぜ現れるのでしょうか? 3. よく使われるフックは何...

Docker で FastDFS をデプロイする方法

Dockerにfastdfsをインストールするディレクトリをマウント-v /e/fdfs/トラッカー...

初心者がHTMLタグを学ぶ(3)

HTML に触れる初心者は、いくつかの HTML タグを学びます。関連記事:初心者が学ぶ HTML...

vue backtop コンポーネントを実装するための完全なコード

効果: コード: <テンプレート> <div class="back-t...

Vue フロントエンド開発補助機能状態管理詳細例

目次マップ状態マップゲッターマップミューテーションマップアクション例まとめマップ状態コンポーネントが...

Vue画像拡大鏡コンポーネントのカプセル化と使用方法の詳細な説明

Vue画像拡大鏡コンポーネントパッケージに基づいて、参考までに具体的な内容は次のとおりです。画像拡大...

シェルで文字列内のスペースや指定された文字を削除する方法

インターネット上には、正しい方法であっても、使用しても正しい結果が得られない方法が数多くあります。正...

MySQLのパフォーマンスが突然低下する理由

場合によっては、SQL ステートメントが通常どおり、非常に速く実行される状況に遭遇することがあります...

k8sとDockerの関係についての簡単な説明

最近、プロジェクトでは kubernetes (以下、k8s と表記、k と s の間には 8 つの...

Linuxでファイルを削除してもスペースが解放されない問題の対処方法

問題の背景業務システムのサーバ監視システムからディスク使用率が90%に達したという早期警告通知が来た...

MySql 8.0.16 バージョンのインストールでは、「UTF8B3」ではなく「UTF8B4」が使用されるように求められます。

MySQL 8.0.16 にインストールする場合、「UTF8B3」ではなく「UTF8B4」が使用さ...

Node+socketでシンプルなチャットルーム機能を実現

この記事では、参考までに、シンプルなチャットルームを実装するためのnode+socketの具体的なコ...

JS のディープコピーとシャローコピーの詳細

目次1. 浅いコピーとはどういう意味ですか? 2. ディープコピーとはどういう意味ですか? 3. デ...

MySQLのデッドロックとログに関する詳細な説明

最近、MySQL オンラインでいくつかのデータ異常が発生しましたが、すべて早朝に発生しました。ビジネ...