ラベル MongoDB の投稿を表示しています。 すべての投稿を表示

MongoDB を macOS に インストールする 方法

今回は「MongoDB を macOS にインストールする方法」についてまとめます。 目次 動作環境 ダウンロード インストール 初期設定 データ保存ディレクトリ作成 設定ファイル(mongod.cfg)の作成 パス登録(.bashrc) 自動起動設定(plist) 動作確認 MongoDBの起動 MongoDBへ接続 MongoDBの終了 動作環境 今回、 対象とする環境は以下のような環境とします。 macOS 1 ...

MognoDB の シャードクラスタ から シャードサーバー を取り除く 方法

今回は「MongoDB の シャードクラスタからシャードサーバーを取り除く方法」についてまとめます。 目次 概要 手順 確認 概要 今回は何かしらの理由でシャードサーバーを取り外したいときの手順についてまとめました。 単純に removeShard を実行すればできるか…と言われるとそうではなかったので、その注意点も含めてまとめました。 手順 基本的には以下の手順でシャードクラスタから任意のシャードサーバーを取り除けます。 バランサーが有効であることを確認。 mongos > sh.getBalancerState() 取り除くシャードサーバー情報の確認 sh.status() を実行して、取り除きたいシャードサーバーの s ...

MognoDB の シャードクラスタ に シャードサーバー を追加する 方法

今回は「MongoDB の シャードクラスタにシャードサーバーを追加する方法」についてまとめます。 目次 概要 手順 確認 概要 今回はシャードサーバー(レプリカセット) shard2-rs を作成してシャードクラスタに追加する手順について見ていきます。 基本的な手順はシャードクラスタ環境構築と一緒です。 ルーターサーバーの初期設定がないくらいが違いです。 それでは、以下に具体的な手順を記載しているので順に見ていきましょう。 手順 シャードサーバーは「レプリカセット」なので単純にレプリカセットを準備して、それをシャードクラスタへ追加していきます。 今回は shard2-rs というシャードサーバー(レプリカセット)を作成して、シャードクラスタへ追加していきます。 シャ ...

MongoDB の チャンク について

今回は「MongoDB の チャンク」についてまとめます。 目次 概要 チャンクサイズ チャンク分割 チャンク平準化 概要 MongoDB はシャードキーを利用してコレクションを「チャンク」と呼ばれるデータの塊に分割します。 ここでは「チャンク」について「サイズ」「分割」「平準化」をまとめました。 チャンクサイズ MongoDB のデフォルトチャンクサイズは 64MB です。 後から変更できますが、以下のようなことを考える必要があります。 チャンクサイズを減らす場合、シャードサーバー間の平準化はしやすいが、ルーターサーバーの負荷が上がります。 チャンクサイズを増やす場合、平準化操作が減るのでネットワーク負荷とルーターサーバー負荷が減ります。 た ...

MongoDB で チャンクサイズ の 確認/変更 を行う方法

今回は「MongoDB の チャンクサイズ の 確認/変更 方法」についてまとめます。 目次 チャンクサイズ確認 チャンクサイズ変更 チャンクサイズ確認 mongos サーバーに接続して config データベース の settings コレクション にある chunksize の値を確認します。 mongos サーバーへ接続 mongo 172.0.0.1:8001 config データベースへスイッチ mongos > use config settings コレクションのデータを確認 mongos > db.settings.find() 何もデータがなければデフォルトなので 64MB まで、設定されていればその容量 ...

MongoDB の バランサー とは

今回は「MongoDBのシャードクラスタバランサー」についてまとめます。 目次 概要 平準化基準 平準化時の動作制限 平準化プロセス 概要 MongoDB のバランサーはバックグランドでシャーディングサーバー間でチャンク数が均等になるよう平準化を行います。 平準化はシャードクラスタ内の「最もチャンクが多いシャードのチャンク数」と「最もチャンクが少ないシャードのチャンク数」の差(平準化基準)が一定値を超えたときに開始されます。 平準化処理自体は MongoDB の利用側から見ると透過的ですが、性能劣化するのでいくつか動作制限があります。 平準化基準 平準化操作がシャードクラスタに及ぼす影響を最小限にするため、バランサーは以下の閾値を超えたときだけ平準化操作を行 ...

MongoDB で シャードクラスタ 環境 を 構築する

今回は「シャードクラスタの構築方法」についてまとめます。 「ハッシュシャード」と「レンジシャード」の違いについても触れています。 目次 概要 シャードクラスタの構築 フォルダ準備 設定サーバー構築 シャードサーバー構築 ルーター構築 シャードクラスタの動作確認 mongoシェルコマンド Node.js MongoDB Driver 概要 まずは「シャードクラスタ構成」の基本的なイメージを以下に載せます。 シャード環境ではデータ保存されている場所に直接アクセスするのでは ...

MongoDB で トランザクション を利用する方法

今回は MongoDB 4.0 で追加された 「トランザクション」 の利用方法 についてまとめます。 目次 概要 前提準備 実装例 動作確認 概要 2018年6月27日にリリースされた MongoDB 4.0 には、新機能として「マルチドキュメントトランザクション」が追加されました。 基本の設計は非正規化したドキュメント構造ですが、どうしても分割されてしまうドキュメントが出ないとは言い切れません。 そんな時に「トランザクション」はデータの整合性を保つうえで重要な機能になります。 では、以下で実際にトランザクションを利用した Node.js からのDB操作のサンプル実装および動作確認をしていきます。 前提準備 利用するモジュールは以下のものになります。 サーバー ...

MongoDB の シャーディング 概要

今回は「MongoDB の シャーディング」についてまとめます。 目次 スケーリング シャーディングとは シャードクラスタ シャードキー チャンク シャーディングの制約 シャードコレクションと非シャードコレクション データ分散方法 スケーリング いきなりシャーディングの話を始める前にそもそものスケーリングについて触れておきたいと思います。 一般的なスケーリングの話として、システム規模が大きくなるとスケーリング(拡張)が必要になってきます。 スケーリング方法は大きく2種類あり、具体的には「垂直スケーリング」と「水平スケーリング」があります。 垂直スケーリング CPUやRAM、ストレージをより高性能な ...

MongoDB の 特定レプリカセットメンバー に対して 強制再同期 を行う 方法

今回は「MongoDBのレプリカセットメンバーに対して強制再同期をする方法」についてまとめます。 目次 再同期が必要なケース 再同期する際の注意点 自動再同期を行う手順 再同期が必要なケース レプリカセットの中でデータ不整合が起こっている状態のとき、再同期が必要になってきます。 具体的なケースとしては以下のいずれかの場合にデータ再同期が必要になります。 "stale"な状態(時間当たりの更新処理が多すぎてoplog容量を超えてしまいプライマリと完全な同期ができなくなった状態)になった場合 新規メンバーとして追加する場合 再同期する際の注意点 データ再同期する場合、大量のデータ移動が発生するためネットワーク通信帯域を使います。 通信帯域を使うとMongoDB全体 ...

MongoDB を CentOS に インストールする 方法

今回は「MongoDB を CentOS にインストールする方法」についてまとめます。 目次 動作環境 インストール 初期設定 データ保存ディレクトリ作成 ポート開放 設定ファイル作成 (mongod.config) 自動起動設定 動作確認 MongoDBの起動 (mongod) MongoDBへ接続 (mongo) MongoDBの終了 (mongod) 動作環境 今回は Linux も CentOS へ MongoDB をインストー ...

MongoDB の レプリカセットで 特定メンバー を プライマリ に昇格させる 方法

今回は「MongoDBの特定レプリカセットメンバーを強制的にプライマリサーバーにする方法」についてまとめます。 目次 前提状況 優先度の調整で変更する コマンドで変更する 前提状況 今回は以下のような状況( _id: 1 がプライマリ、 _id: 0 および _id: 2 はセカンダリ)で、 _id: 0 をプライマリにする方法を見ていきます。 変更する方法は以下の2通りが考えられます。 優先度の調整で変更する コマンドで変更する 「優先度調整」は設定変更なので、サーバースペックが異なるなど恒久的にあるサーバーを優先的にプライマリサーバーとしたい場合に有効な手段になります。 「コマンド」は一時的な変更なので動作確認やテストなどの用途での利用になるかと思います。 ...

MongoDB の oplog ファイルサイズ を変更する 方法

今回は「MongoDB の oplog ファイルサイズ を変更する 方法」についてまとめます。 目次 概要 変更手順 現在のサイズを確認 oplogサイズ変更 データ再同期 概要 oplogファイルサイズの変更は replSetResizeOplog コマンドで変更できます。 基本的には現状確認、検討、変更、データ再同期の手順です。 実施する際はセカンダリサーバーから実施するようにします。 データ再同期はサイズ縮小する場合だけですが、サーバー停止を伴うので実施には要注意です。 それでは以下で詳しい手順を見ていきます。 変更手順 現在のサイズを確認 現在の設定を確認してど ...

MongoDB の レプリカセット へ Node.jsドライバー を使って アクセスする 方法

今回は「MongoDB の レプリカセットにNode.jsドライバを使ってアクセスする方法」についてまとめます。 目次 接続する 接続文字列 読み込み設定 書き込み設定 読み書きする 接続する MongoDBのレプリカセットも接続さえできてしまえばほぼ終わりです。 ここではその基本となる接続文字列、読み込み設定、書き込み設定についてまとめます。 Node.jsドライバーでMongoDBへ接続する場合、 MongoClient.connect() を利用するので、その引数にどのような値を与えるとよいか、が要です。 接続文字列 (url) ここでは MongoClient.conne ...

MongoDB の レプリカセット へ mongoシェル を使って アクセスする 方法

今回は「MongoDB の レプリカセットにmongoシェルを使ってアクセスする方法」についてまとめます。 目次 接続する サーバーを指定して接続する プライマリサーバーを探す ユーザー名とパスワードを指定して接続する アクセス制御が有効化されている場合に必要な権限 読み書きする プライマリサーバーで読み書き セカンダリサーバーで読取 接続する 何はともあれサーバーへの接続から見ていきます。 サーバーを指定して接続する もっとも単純な接続は接続先サーバーを指定した接続で、サ ...