sql >> Databasteknik >  >> NoSQL >> MongoDB

MongoDB 4.x Real Time Sync till ElasticSearch 6.x +

om du arbetar med docker kan du få den här handledningen

https://github.com/ziedtuihri/Monstache_Elasticsearch_Mongodb

Monstache är en synkroniseringsdemon skriven i Go som kontinuerligt indexerar dina MongoDB-samlingar till Elasticsearch. Monstache ger dig möjligheten att använda Elasticsearch för att göra komplexa sökningar och aggregering av dina MongoDB-data och enkelt bygga Kibana-visualiseringar och dashboards i realtid.dokumentation för Monstache :
https://rwynn.github.io/monstache-site/
github :
https://github.com/rwynn/monstache

docker-compose.yml

version: '2.3'
networks:
  test:
    driver: bridge

services:
  db:
    image: mongo:3.0.2
    expose:
      - "27017"
    container_name: mongodb
    volumes:
      - ./mongodb:/data/db
      - ./mongodb_config:/data/configdb
    ports:
      - "27018:27017"
    command: mongod --smallfiles --replSet rs0
    networks:
      - test

  elasticsearch:
    image: docker.elastic.co/elasticsearch/elasticsearch:6.8.7
    container_name: elasticsearch
    volumes:
      - ./elastic:/usr/share/elasticsearch/data
      - ./elastic/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml
    ports:
      - 9200:9200
    command: elasticsearch -Enetwork.host=_local_,_site_ -Enetwork.publish_host=_local_
    healthcheck:
      test: "wget -q -O - http://localhost:9200/_cat/health"
      interval: 1s
      timeout: 30s
      retries: 300
    ulimits:
      nproc: 65536
      nofile:
        soft: 65536
        hard: 65536
      memlock:
        soft: -1
        hard: -1
    networks:
      - test

  monstache:
    image: rwynn/monstache:rel4
    expose:
      - "8080"
    ports:
      - "8080:8080"
    container_name: monstache
    command: -mongo-url=mongodb://db:27017 -elasticsearch-url=http://elasticsearch:9200 -direct-read-namespace=Product_DB.Product -direct-read-split-max=2
    links:
      - elasticsearch
      - db
    depends_on:
      db:
        condition: service_started
      elasticsearch:
        condition: service_healthy
    networks:
      - test

replicaset.sh

#!/bin/bash

# this configuration is so important 
echo "Starting replica set initialize"
until mongo --host 192.168.144.2 --eval "print(\"waited for connection\")"
do
    sleep 2
done
echo "Connection finished"
echo "Creating replica set"
mongo --host 192.168.144.2 <<EOF
rs.initiate(
  {
    _id : 'rs0',
    members: [
      { _id : 0, host : "db:27017", priority : 1 }
    ]
  }
)
EOF
echo "replica set created"

1) kör detta kommando en terminal$ sysctl -w vm.max_map_count=262144

om du arbetar på en server vet jag inte om det är nödvändigt

2)kör en terminaldocker-compose build

3) kör en terminal$ docker-compose up -d

lägg inte ner din behållare.

$ docker ps

kopiera IP-adressen till mongo db-bilden

$ docker inspektera id_of_mongo_image

kopiera IP-adressen och ställ in den i replicaset.sh och kör replicaset.sh

$ ./replicaset.sh

på terminalen bör du se => replikuppsättning skapad

$ docker-compose down

4)kör en terminal$ docker-compose up

äntligen .......

Replikering i MongoDB

En replikuppsättning är en grupp av mongod instanser som upprätthåller samma datamängd. En replikuppsättning innehåller flera databärande noder och valfritt en arbiternod. Av de databärande noderna anses en och endast en medlem vara den primära noden, medan de andra noderna anses vara sekundära noder.
The primär nod tar emot alla skrivoperationer. En replikuppsättning kan bara ha en primär som kan bekräfta skrivningar med { w:"majoritet" } skriva oro; även om under vissa omständigheter kan en annan mongod-instans tillfälligt tro sig vara primär.
Visa replikuppsättningens konfiguration. Använd rs.conf()

replikuppsättning låter dig indexera dina MongoDB-samlingar till Elasticsearch i realtidssynkronisering.



  1. Lägger till mongodb-tillägg för php 5.6 (XAMPP)

  2. Benchmarking MongoDB - Driving NoSQL Performance

  3. Görs mongodb säkerhetskopior automatiskt?

  4. Redis administrationspanel