序文 古いプロジェクトを引き継ぐ苦労 - 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 をご愛顧いただきありがとうございます。 以下もご興味があるかもしれません:
|
<<: Vue のディスパッチとブロードキャストの自己実装の詳細説明 (ディスパッチとブロードキャスト)
>>: CentOS 7 で RPM を使用して mysql5.7.13 をインストールする
VMware vSphere は、業界をリードする最も信頼性の高い仮想化プラットフォームです。 v...
W3C は最近、「 XHTML Basic1.1 」と「 Mobile Web Best Prac...
LOFTER のコンテストで、ログイン ボックスを再設計できると言及されているのを見ました。過去 2...
MySQL の遅いクエリの説明MySQL スロー クエリ ログは、MySQL が提供するログ レコー...
実装のアイデアまず、親コンテナーを作成し、2 つの順序なしリストを使用して、柔軟なレイアウトで親コン...
この記事では、MySQL 8.0.20のインストールと設定方法についての詳細なチュートリアルを参考ま...
サーバーの LNPM 環境をインストールして構成する場合、複数のバージョンの PHP の共存を考慮す...
序文これまで当社ではMySQLの5.7シリーズを使用していましたが、バージョン8.0のリリースに合わ...
この記事では、デジタル時計効果を実現するためのJavaScriptの具体的なコードを参考までに紹介し...
質問: index.html で、iframe が son.html を導入します。son.html...
ユーザーから情報を収集する場合、Web フォームを使用するより簡単で直接的な方法はありません。適切に...
doctype もその 1 つです。 <!DOCTYPE HTML PUBLIC "...
目次文字列オブジェクトのメソッド方法 1: indexOf() (推奨)方法 2: search()...
目次アプリを登録するときに何をすればよいですか?ページを登録するときに通常何をする必要がありますか?...
高性能で軽量なウェブサービスソフトウェアであるNginxについて高い安定性 システムリソースの消費量...