Linux で MongoDB のリモート自動バックアップを実装する方法

Linux で MongoDB のリモート自動バックアップを実装する方法

序文

古いプロジェクトを引き継ぐ苦労 - MongoDB クラスターの学習と構築に関する前回の記事を読んだ後、私は最近、継母が運営するプロジェクトを引き継いだことを知りました。プロジェクトのデータベースを保守している人は誰もおらず、DBA はさまざまな理由で当面は引き継ぐことを拒否しました。バックアップのない裸のデータベースに直面して、私は非常に不安になったので、本番環境の自動バックアップを設定するために時間を費やしました。

詳しい紹介を見てみましょう。

準備

全てバックアップを取っているので、安全のためバックアップとライブラリを同じサーバには置かず、運用保守からサーバを申請し、同時にmongoもインストールしました。mongoのインストール方法が分からない方は前回の記事を読んでみてください。

インストール後、まずは対象のmongodbにリモートアクセスできるかどうかをテストし、mongoがインストールされているbinディレクトリに移動します。

./mongo 10.100.1.101:27017 #mongoのIPとポートをターゲットとする

次に、バックアップ ファイルを配置するディレクトリなど、必要なディレクトリをいくつか作成します。

次に、mongodump を使用してデータベースをバックアップしてテストします。

./bin/mongodump --host test/10.100.1.101:27017,10.100.1.102:27017 -d testdb --out /data/temp

# test はレプリカ セット名です。# 10.100.1.101:27017、10.100.1.102:27017 はレプリカ セット ノードです。複数のノードを持つことができます。# -d testdb はバックアップするデータベースの名前です。入力しない場合は、デフォルトのレプリカ セット内のすべてのノードが対象となります。# --out 保存パス

この時点で、mongo バックアップは実装されており、あとは自動化するだけです。

スクリプトの作成

自動スケジュールバックアップは、実際には crontab コマンドによって実行されます。しかし、前提として、定期的に実行されるスクリプトを作成する必要があります。まず、新しいスクリプトを作成します。

vi /home/local/mongod_bak.sh

次に、対応するスクリプトを記述します。スクリプトには、参考のために対応するコメントがあります。ここでは、主に 3 つのアクションがあります。最初はバックアップし、次にバックアップ ファイルを圧縮し、最後の 7 日間のファイルのみを保持します。

#!/bin/bash
sourcepath='/home/local/mongodb/bin' #mongodb ファイル パス targetpath='/home/local/mongodb_bak' #バックアップ パス nowtime=$(date +%Y-%m-%d-%H)
replicationname='test' #レプリカセット名 dbname='testdb' #データベース名 port='27017' #ポート ip1='10.100.1.101' #ip
ip2='10.100.1.102'

echo "=============== バックアップを開始 ${nowtime} ================"
始める()
{
 ${ソースパス}/mongodump --host ${レプリケーション名}/${ip1}:${ポート},${ip2}:${ポート} -d ${データベース名} --out ${ターゲットパス}/${現在時刻}
}
実行する()
{
 始める
 [ $? -eq 0 ]の場合
 それから
 echo "正常に戻りました!"
 それ以外
 「バック失敗!」をエコーし​​ます。
 フィ
}
 
if [ ! -d "${targetpath}/${nowtime}/" ]
それから
 mkdir ${targetpath}/${nowtime}
フィ
実行する
echo "=============== バックエンド ${nowtime} ================"

echo "=============== zip ${nowtime} を開始します ==============="
zip -r ${ターゲットパス}/${nowtime}.zip ${ターゲットパス}/${nowtime}
rm -rf ${ターゲットパス}/${現在時刻}
echo "=============== zip 終了 ${nowtime} ==============="

echo "=============== 7日前の ${nowtime} の削除を開始 ================"
${targetpath} -type f -mtime +7 -name "*" -exec rm -rf {} \; を検索します。 
echo "=============== 削除終了 ${nowtime} ================"

書き込み後、ファイルに実行権限を与え、手動でテストを実行します。

chmod +x /home/local/mongod_bak.sh

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

最後のステップは、実行プランを追加し、/etc/crontabを変更することです。

crontab -e

実行スクリプトを追加して保存します。

30 1 * * * /home/local/mongod_bak.sh #毎日午前1時30分にバックアップが実行されることを示します

ここでcrontabについて簡単に紹介します。

crontab コマンドは Unix および Unix 系オペレーティング システムでよく使用され、定期的に実行される命令を設定するために使用されます。このコマンドは、標準入力デバイスから命令を読み取り、後で読み取って実行できるように crontab ファイルに保存します。

通常、crontab に保存された命令はデーモン プロセスによってアクティブ化されます。Crond はバックグラウンドで実行されることが多く、実行予定のジョブがあるかどうかを 1 分ごとにチェックします。これらのジョブは一般に cron ジョブと呼ばれます。

一般的なコマンドをいくつか以下に示します。

#サービスを開始 /sbin/service crond start 

#サービスをシャットダウンします /sbin/service crond stop 

#サービスを再起動します /sbin/service crond restart 

#設定を再読み込み /sbin/service crond reload 

#crontab サービスのステータスを表示するサービス crond ステータス 

#crontab サービスを手動で開始する service crond start 

#crontab サービスが起動時に開始するように設定されているかどうかを確認し、次のコマンドを実行します。
ntsysv

#自動起動を追加:
chkconfig --level 35 crond オン

# crontabファイルを一覧表示する crontab -l

#crontabファイルを編集するcrontab -e

#crontabファイルを削除する $ crontab -r

# 失われた crontab ファイルを復元します # $HOME ディレクトリにバックアップがある場合は、それを /var/spool/cron/<username> にコピーできます。ここで、<username> はユーザー名です。 # または、次のコマンドを使用します。ここで、<filename> は $HOME ディレクトリにあるコピーのファイル名です。crontab <filename>

要約する

ゆっくりやれば良い仕事ができます。最初は難しくて面倒に思えるかもしれませんが、落ち着いてじっくり勉強してみると、やはり簡単に理解できます。結局、罠に陥るのはあなただけではありませんから、一生懸命勉強すべきです。

さて、以上がこの記事の全内容です。この記事の内容が皆さんの勉強や仕事に一定の参考学習価値を持つことを願っています。ご質問があれば、メッセージを残してコミュニケーションしてください。123WORDPRESS.COM をご愛顧いただきありがとうございます。

以下もご興味があるかもしれません:
  • Windows で MongoDB を自動的にバックアップするためのバッチ スクリプト
  • Linux での MongoDB データベースの自動バックアップの詳細な説明
  • MongoDBは自動バックアップの完全なプロセス記録を実現

<<:  Vue のディスパッチとブロードキャストの自己実装の詳細説明 (ディスパッチとブロードキャスト)

>>:  CentOS 7 で RPM を使用して mysql5.7.13 をインストールする

推薦する

MySql データベースにリモートでログインするにはどうすればよいですか?

はじめに: プロジェクトを開発するために、サーバーに MySql データベース サーバーを展開し、ロ...

MySQLクエリ文の実行プロセスを理解するための記事

序文要件を満たす特定のデータをデータベースから取得する必要があります。Select ABC FROM...

CentOS7 で MySQL 5.7.24 をコンパイルしてインストールする詳細なチュートリアル

目次依存関係をインストールするブーストをインストールMySQLをコンパイルしてインストールする構成依...

HTML+CSS を使用して、画像の右上隅に削除の十字と画像削除ボタンを追加します。

記録として、将来使用される可能性があり、困っている友人も使用できます。 BBはもうやめて、まずはレン...

MySQLデータベースのデータテーブルに関する詳細な基本操作

目次1. 現在のデータベース内のテーブルを表示する2. テーブルを作成する3. 指定されたテーブル構...

HTMLページのヘッダーコードは完全に明確です

以下のコードはすべて <head>...</head> の間にあり、具体的な...

TypeScriptの基本型の詳細な説明

目次ブール型数値型文字列型文字列と数値を連結する未定義およびnull配列型タプル型列挙型あらゆるタイ...

JavaScript 関数のパフォーマンスを測定するさまざまな方法の比較

目次概要パフォーマンス.nowコンソール.time時間精度を短縮注意事項分割して征服する入力値に注意...

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

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

Linux での GDB 入門チュートリアル

序文gdb は Linux で非常に便利なデバッグ ツールです。コマンドライン モードのデバッグ ツ...

CSS プロパティ display:flow-root 宣言を 1 つの記事でマスターする

zhangxinxu より https://www.zhangxinxu.com/wordpress...

React Hooks に基づく小さな状態管理の詳細な説明

目次React Hooks に基づく状態共有の実装ユーザーエクスペリエンスこの記事では、主に Rea...

Vue+video.jsはビデオプレイリストを実装します

この記事では、ビデオプレイリストを実装するためのvue + video.jsの具体的なコードを参考ま...

MySQLでビューを作成する方法

基本的な構文CREATE VIEW ステートメントを使用してビューを作成できます。構文の形式は次のと...