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 をインストールする

推薦する

CSS トップに戻る コード例

最近のウェブサイトのほとんどはページが長く、4 画面または 5 画面の長さのものもあれば、2 画面ま...

Linux で JDK をインストールして環境変数を設定する方法 (この記事で十分です)

目次1. Linuxのビット数を確認する2. JDKをダウンロードする3. JDKをインストールする...

CentOS 6.x のインストール時に発生するエラー「ディスク sda に BIOS RAID メタデータが含まれています」の解決方法

今日、CentOS6.2 をインストールしていたところ、ハード ドライブの検出段階を通過できませんで...

Vue el-date-picker 動的制限時間範囲ケースの詳細な説明

2つの状況がある1. 開始時間と終了時間が同じボックス内にあります(今月のみ限定) 2. 開始時間と...

ウェブページを作るときに注意すべき5つのポイント

1. 色合わせの問題<br />Web ページには 3 色以上使用しないでください。そう...

プロセスのすべての情報を表示するLinuxメソッドの例

サーバー上にタスク プロセスがあります。 ps -ef | grep task を使用して表示すると...

MySQLのインストール時に発生する可能性のある問題

質問1:インストール中に net start mysql と入力すると、次のエラー メッセージが表示...

CentOS 7.4 64 ビット版に MySQL 8.0 をインストールして設定するための詳細な手順

ステップ1: MySQL YUMソースを取得するMySQLの公式サイトにアクセスして、RPMパッケー...

Dockerコンテナレイヤーの概念の詳細な説明

目次01 コンテナの一貫性02 レイヤーの概念03 レイヤードデザインの利点今日はコンテナ レイヤー...

インデックスとテーブルリターンをカバーするMySQLの使い方

インデックスの2つの主要なカテゴリ使用されるストレージエンジン: MySQL 5.7 InnoDBク...

MySQL データベース内の同じテーブルを同時にクエリして更新する方法

通常のプロジェクトでは、1 回の入札で同時にデータを更新および照会する必要があるという問題によく遭遇...

Linux ホスト上で複数の MySQL データベースを起動する方法

今日は、Linux ホスト上で 4 つの MySQL データベースを起動する方法について説明します。...

Linux CentOS インストール JDK および Tomcat チュートリアル

まずJDKをダウンロードします。ここではjdk-8u181-linux-x64.tar.gzを使用し...

MySQL での IN データボリュームの使用の最適化された記録

MySQL のバージョン番号は 5.7.28 です。テーブル A には 390 万件のレコードがあり...

Squid を使用して http および https 用のプロキシ サーバーを構築する方法

nginx を導入した際に、フォワードプロキシの設定も nginx を使っていました。しかし、htt...