(O+P)ut

アウトプット



(O+P)ut

エンジニアのアウトプット

Database-MongoDB

【MongoDB】スロークエリを書き出す設定を入れてパフォーマンスが遅くなる時間帯を確認する

やりたいこと MongoDBの特定のデータベース内で遅いトランザクションが発生している時間帯やクエリの中身を突き止める。 環境情報 Mongo v4.0 やり方 対象のデータベースを選定した後に rs0:PRIMARY> use testdb switched to db testdb以下コマンドを押下す…

【MongoDB/Kubernetes】curlでPrometheusのメトリクスを取得する

はじめに Podとして展開しているMongoDBのメトリクスをエクスポーターのPodから取得する流れについて記載しました。 尚、MongoDBは既に構築済のものとし、省力化のためにHelmパッケージを利用します。 環境情報 Mongo v4.0 openshift 4.6(kubernetes 1.19)…

【MongoDB】RECOVERING状態のmemberを強制的に復旧させる

事象 レプリケーションの状態が以下のようなmemberが存在し "state" : 3, "stateStr" : "RECOVERING", ... "lastHeartbeatMessage" : "",...以下のエラーにて事象が解消しない。 REPL [rsBackgroundSync] sync source candidate: xx REPL [replication-0] We…

【MongoDB】SecondaryのMongoDBを強制的にPrimaryに変更する手順メモ

やりたいこと レプリケーションの不具合にてSecoundaryのMongoDBしかいない状況でコマンドを通してPrimaryに変更したい。 環境情報 Mongo v4.0 やり方 以下のようにコマンドにforce:trueを付与すると rs0:SECONDARY> rs.reconfig(cfg,{"force":true})書き込…

【MongoDB】レプリケーションの動きを検証する

はじめに 以下記事にて作成したレプリカセットが機能していることをPrimaryを落とすことで検証します。 環境情報 MongoDB v4.4 kubectl v1.18 事前準備 PrimaryのDBサーバにてデータベース/コレクションを作成して1つドキュメントを追加します。 repltest:P…

【MongoDB/Kubernetes】レプリカセットの初期設定

はじめに KubernetesのStatefulsetを利用して3つのMongoDBを用意し、PrimaryとSecondaryとArbiterにてレプリケーションを組む手順について解説します。 環境情報 MongoDB v4.4 kubectl v1.18 事前準備 以下のyamlを展開することで3台もMongoDBがレプリカセ…

【MongoDB】WiredTiger has failed to open its metadata RawというErrorメッセージ

事象 KubernetesにてMonogoDBを起動するも以下メッセージがPodのログに残った状態でSTATUSがErrorとなる。 I STORAGE [initandlisten] wiredtiger_open config: create,cache_size=7505M,cache_overflow=file_max=0M),session_max=20000,eviction=(threads_m…

【Linux】tmpfsを指定したRAMディスクの作成/削除手順

はじめに データをディスクではなくメモリ上に配置することで高速な読み込みを可能にする「RAMディスク」をRHEL環境で作成及び削除する手順を説明します。 環境情報 Red Hat EnterPrise Linux Server 7.6 メモリ容量の事前確認 同環境では meminfoにてー全体…

【Linux】ip routeで表示されるdev,via,src,protoの意味と見方

はじめに ip routeコマンドでよく見るタイトルの文言の意味とその見方を簡単に解説します。 尚、詳細が知りたければman ip routeでも確認可能です。 環境情報 Red Hat Enter Prise Linux Server 7.6 IP-ROUTE(8) dev/via/src/protoの意味 devはパケットを流…

【MongoDB】Kubernetesの別PodからリモートのMongoDBを操作する

やりたいこと MondoDBへの操作を別のホストから行う。 具体的には以下のようにDBの実体がいるホストとは別のホストにmongo関連コマンドを入れ、操作を行う。 +---------+ +---------+ | Mongo +<----+/bin/mongo | DB | | | +---------+ +---------+ 環境情…

【入門】Node.jsでMongoDBに値を書き込むハンズオン(後編)

はじめに 以下の記事の後編です。 MongoDBの書き込み先は既に作成済の以下です。 DB Collections test user 環境情報 Ubuntu : 20.04 Node.js : v10.19 MongoDB : v3.6 MongoDBに書き込むサンプルプログラム const mongodb = require('mongodb') const Mongo…

【入門】Node.jsでMongoDBに値を書き込むハンズオン(前編)

はじめに 以下の記事でも触れたようにJSON形式で価を保持するMongoDBはNode.jsと相性がよいためサービスの組み合わせでもよく見られます。 本記事ではUbuntu環境に1からインストールを行い、Node.jsプログラムからMongoDBにドキュメントを挿入する流れを紹介…

【GROWI】ページに書いたテキストデータをMongoDBから確認する

はじめに マークダウン形式でWikipediaのようにドキュメントを生成できるGrowiは以下公式サイトにあるようにdocker-composeで利用でき 構成コンテナを見れば分かりますがMongoDBがデータベースとして利用されています。 $ docker-compose.exe ps Name Comman…

【MongoDB】MongoTimeoutError: Server selection timed out となるエラー

事象 node.jsアプリケーションにてMongoDBに接続に行く処理にて以下のようなタイムアウトエラーになる、 MongoTimeoutError: Server selection timed out after 10000 ms ... name: 'MongoTimeoutError' 環境情報 NodeJS Version: 12.16.1 - x64 MongoDB Ver…

【MongoDB】個人的によく使う照会系コマンド群

MongoDBで定期的に打ちたくなるコマンドをメモしておきます。 DB一覧 コレクション一覧 ドキュメント全件取得 コレクション一覧とドキュメント数を表示 ドキュメントの表示件数の制限を変更 レプリカセットの状態 統計情報 DB一覧 show dbs コレクション一覧…

【Docker&MongoDB】getaddrinfo ENOTFOUND GetAddrInfoReqWrap.onlookuにて接続エラー

事象 Roket.chatコンテナをMongoDBコンテナに接続しようとするも以下メッセージでエラーになる。 /app/bundle/programs/server/node_modules/fibers/future.js:313 throw(ex); ^ Error: getaddrinfo ENOTFOUND mongo at GetAddrInfoReqWrap.onlookup [as onc…

【MongoDB】バックアップとリストアの流れ

はじめに MongoDBにて以下記事で作成したデータベース名「test」コレクション名「user」のデータをバックアップし、データを削除した後にリストアして復旧する手順を紹介します。 環境情報 Debian GNU/Linux 9 MongoDB shell version: 3.2.11 事前確認 バッ…

【MongoDB】コマンドから非対話形式で利用する

はじめに NoSQLの筆頭として以下記事でも軽く触れたMongoDBですが タイトルの通りコマンドから直接DBを操作することも可能なのでテキストに追記する感覚でDBに格納&検索ができます。本記事ではデータをコマンドから操作する方法を前提知識を補足しながら記載…

【MongoDB】LogicalSessionRecordCacheがTooManyLogicalSessionsというエラー

事象 MonogoDBのStatusを確認すると以下エラーとなる。 > db.serverStatus() { "operationTime" : Timestamp(xx,x), "ok" : 0, "errmsg" : "cannot add session into the cache", "code" : 261, "codeName" : "TooManyLogicalSessions", "$clusterTime" : { …