序文 古いプロジェクトを引き継ぐ苦労 - 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 をインストールする
はじめに: プロジェクトを開発するために、サーバーに MySql データベース サーバーを展開し、ロ...
序文要件を満たす特定のデータをデータベースから取得する必要があります。Select ABC FROM...
目次依存関係をインストールするブーストをインストールMySQLをコンパイルしてインストールする構成依...
記録として、将来使用される可能性があり、困っている友人も使用できます。 BBはもうやめて、まずはレン...
目次1. 現在のデータベース内のテーブルを表示する2. テーブルを作成する3. 指定されたテーブル構...
以下のコードはすべて <head>...</head> の間にあり、具体的な...
目次ブール型数値型文字列型文字列と数値を連結する未定義およびnull配列型タプル型列挙型あらゆるタイ...
目次概要パフォーマンス.nowコンソール.time時間精度を短縮注意事項分割して征服する入力値に注意...
Dockerにfastdfsをインストールするディレクトリをマウント-v /e/fdfs/トラッカー...
序文gdb は Linux で非常に便利なデバッグ ツールです。コマンドライン モードのデバッグ ツ...
zhangxinxu より https://www.zhangxinxu.com/wordpress...
目次React Hooks に基づく状態共有の実装ユーザーエクスペリエンスこの記事では、主に Rea...
この記事では、ビデオプレイリストを実装するためのvue + video.jsの具体的なコードを参考ま...
基本的な構文CREATE VIEW ステートメントを使用してビューを作成できます。構文の形式は次のと...
MySQL Community Server 5.7.18 の配布パッケージには .ini ファイル...