So installieren Sie Apache Cassandra 3.11.x unter Ubuntu 16.04 LTS
Verwenden Sie ein anderes System? Apache Cassandra ist ein kostenloses und Open-Source-NoSQL-Datenbankverwaltungssystem, das Skalierbarkeit bietet
Seit seiner Konzeption im Jahr 2009 ist MongoDB führend in der NoSQL-Branche. Eines der Kernkonzepte von MongoDB ist das Replikatset. Bevor Sie also damit arbeiten, sollten Sie zunächst das Konzept überprüfen.
Das einfachste Kommunikationsmodell für die Replikation von Datenbanken ist die Master-Slave-Architektur. Wie der Name schon sagt, hat dieses Modell zwei Rollen, die in einem eindeutigen Master und vielen Slaves verteilt sind. Die Rolle des Masters besteht darin, die von den Clients ausgeführten Lese- und Schreibvorgänge zu verarbeiten, und die Slaves werden als Replikat des Masters behandelt.
Der wichtigste Vorteil dieses Modells besteht darin, dass die Leistung des Masters nicht durch die Sicherungsvorgänge beeinträchtigt wird. Die Sicherungsvorgänge werden asynchron ausgeführt. Dies kann zu einem ernsthaften Problem werden, wenn ein Masterknoten ausfällt. Slave-Knoten sind schreibgeschützt und müssen manuell zum Master-Knoten heraufgestuft werden. In dieser Zeit besteht daher die Möglichkeit, dass Daten verloren gehen.
Eine Möglichkeit, das Verfügbarkeitsproblem zu lösen, besteht darin, mehr als einen Master in der Architektur zu haben. Dies kann jedoch zu einem weiteren Problem in der Konsistenz der Daten zwischen diesen Instanzen und der zusätzlichen Komplexität der Konfiguration führen.
Im gegebenen Kontext können wir die Replica Set- Technologie von MongoDB vorstellen . Replikatsatz ist der Name der Master-Slave-Architektur mit automatischem Failover. In dem Moment, in dem ein Master- primary
Knoten (der jetzt den Namen trägt ) nicht ordnungsgemäß funktioniert, wird ein election
Wille ausgelöst und ein neuer Primärknoten wird aus den verbleibenden Slaves ausgewählt ( jetzt bezeichnet als secondaries
).
Der Primärknoten ist der einzige, der Schreibvorgänge ausführt. Standardmäßig werden Lesevorgänge auch vom Primärknoten ausgeführt. Dieses Verhalten kann jedoch später geändert werden.
Die Operationen werden im oplog
(Operationsprotokoll) aufgezeichnet , und die sekundären Knoten aktualisieren ihren Inhalt asynchron basierend auf dem Inhalt deroplog
Hinweis: oplog
Ist eine Sammlung mit einer Obergrenze. Dies bedeutet, dass die Sammlung ein Limit hat. local.oplog.rs
Sie können den Inhalt dieser Sammlung in einer Mongo-Shell in einem beliebigen festgelegten Mitglied überprüfen.
Ein sekundärer Knoten ist nicht nur derjenige, der eine ordnungsgemäße Sicherung der Datenbank durchführt, sondern hat auch folgende Rollen:
Dank dieser Eigenschaften können wir verschiedene Arten von Sekundärknoten haben:
primary
und keine Wahl auslösen. Sie können jedoch bei Wahlen abstimmen, eine vollständige Replik haben und Lesevorgänge akzeptieren. Diese können bei der Bereitstellung mehrerer Rechenzentren hilfreich sein.Priority 0
Mitglieder, aber sie können auch keine Lesevorgänge verarbeiten. Sie können bei Bedarf abstimmen. Bevorzugte Aufgaben für diese Mitglieder sind Berichte und Sicherungen.priority 0
Knoten sein, und es wird empfohlen, dass es auch hidden
Mitglied ist.Vor dem Bereitstellen einer Infrastruktur ist es wichtig, sie zu entwerfen. Bei diesem Entwurf sind einige Punkte zu beachten.
Beachten Sie, dass die Mindestanzahl von Elementen zum Erstellen eines Replikatsatzes 3 beträgt. Sie können die drei Knotentypen mit mindestens einem primären und einem sekundären Knoten mischen.
In diesem Handbuch stellen wir drei Mitglieder bereit, ein primäres und zwei standardmäßige sekundäre.
Hinweis: Es wird empfohlen, maximal 7 stimmberechtigte Mitglieder mit einer Mischung aus Schiedsrichtern und sekundären Mitgliedern zu haben.
Der Name dient nur als Referenz, wird jedoch in der Konfiguration des Sets verwendet. Beachten Sie, dass in Ihrer Produktionsumgebung mehr als ein Replikatsatz vorhanden sein kann. Vernachlässigen Sie daher nicht den Namen Ihres Satzes.
Dieses Tutorial fordert den Benutzer auf, den Namen des Sets auszuwählen.
In diesem Lernprogramm wird empfohlen, die Bereitstellung im selben Rechenzentrum durchzuführen, um Kommunikationsprobleme zu vermeiden.
Hinweis: Bei der Bereitstellung in verschiedenen Rechenzentren wird empfohlen, Ihre Knoten mit einem VPN zu umhüllen
Starten Sie 3 Knoten von Ubuntu 16.04 x64; in der gleichen Region von Ihrem Kundenportal, wenn möglich. Vergessen Sie nicht , sie entsprechend der Art des Projekts zu nennen Sie es zu tun mit und sicher sein , die haben denselben Server Größe in allen diesen Knoten.
Nachdem Sie Ihre 3 Knoten bereitgestellt haben, müssen Sie sicherstellen, dass jeder Knoten mit dem Rest kommunizieren kann. Sie müssen in zwei Knoten ssh und die anderen mit erreichen ping -c 4 EXAMPLE_IP
. Wechseln Sie EXAMPLE_IP
zu den tatsächlichen IPs Ihrer Knoten.
Hier sehen Sie ein Beispiel für eine erfolgreiche Kommunikation zwischen zwei Knoten.
root@foo_node:~# ping -c 4 EXAMPLE_IP
PING EXAMPLE_IP (EXAMPLE_IP) 56(84) bytes of data.
64 bytes from EXAMPLE_IP: icmp_seq=1 ttl=59 time=0.594 ms
64 bytes from EXAMPLE_IP: icmp_seq=2 ttl=59 time=0.640 ms
64 bytes from EXAMPLE_IP: icmp_seq=3 ttl=59 time=0.477 ms
64 bytes from EXAMPLE_IP: icmp_seq=4 ttl=59 time=0.551 ms
--- EXAMPLE_IP ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3021ms
rtt min/avg/max/mdev = 0.477/0.565/0.640/0.064 ms
Im Allgemeinen können Sie das MongoDB-Paket von Ubuntu verwenden, es ist jedoch besser, das offizielle Community-Repo zu verwenden, da es immer auf dem neuesten Stand ist. Dieses Repo enthält folgende Pakete:
mongod
Daemon (primärer Prozess, der Datenanforderungen verarbeitet).mongos
Daemon (Routing-Service für gemeinsam genutzte Bereitstellungen).mongo shell
JavaScript-Oberfläche.Fahren Sie mit der Installation der Pakete fort.
Importieren Sie den öffentlichen Schlüssel in das Paketverwaltungssystem.
sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 0C49F3730359A14518585931BC711F9BA15703C6
Erstellen Sie die Listendatei für MongoDB '/etc/apt/sources.list.d/mongodb-org-3.4.list'.
echo "deb [ arch=amd64,arm64 ] http://repo.mongodb.org/apt/ubuntu xenial/mongodb-org/3.4 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-3.4.list
Aktualisieren Sie die Paketdatenbank.
sudo apt-get update
Installieren Sie das MongoDB-Metapaket.
sudo apt-get install -y mongodb-org
Starten Sie den MongoDB-Dienst.
sudo service mongod start
Jetzt können Sie die mongo shell
in jeder Bash-Sitzung öffnen . Dazu müssen Sie den mongo
Befehl verwenden. Sie werden von etwas Ähnlichem begrüßt.
MongoDB shell version v3.4.7
connecting to: mongodb://127.0.0.1:27017
MongoDB server version: 3.4.7
Welcome to the MongoDB shell.
For interactive help, type "help".
For more comprehensive documentation, see http://docs.mongodb.org/
Questions? Try the support group
http://groups.google.com/group/mongodb-user
Server has startup warnings:
*Some extra logs are cut by the way*
>
Vergessen Sie nicht, den Dienst mit zu beenden sudo service mongod stop
, da wir später mongod
mit einigen Parametern erneut beginnen werden. Wiederholen Sie diesen Vorgang in allen 3 Knoten des Satzes.
Die Verwendung einer Schlüsseldatei erzwingt zwei Konzepte in der Replikatsatzverwaltung. Der erste ist Internal Authentication
. Standardmäßig können Sie eine mongo shell
Sitzung ohne Verwendung eines Benutzers starten. Diese Sitzung hat die vollständige Kontrolle über die Datenbank. Wenn Sie jedoch eine Schlüsseldatei zur Authentifizierung verwenden, erreicht Ihre mongo shell
Sitzung einen Status namens localhost exception
. In diesem Status können Sie nur den Administratorbenutzer und das Replikatset erstellen. Das zweite Konzept ist Role-Based Access Control
oder mit anderen Worten die Autorisierung. Dies wird erzwungen, um die Verwaltungsebenen des Replikatsatzes zu steuern.
Die Schlüsseldatei ist das Kennwort, das im Satz verwendet werden soll. Dieses Kennwort muss für alle Mitglieder des Satzes gleich sein. Um die Sicherheit zu erhöhen, ist es wichtig, einen zufälligen Schlüssel mit dem Werkzeug Ihrer Wahl zu verwenden.
Der Inhalt muss zwischen 6 und 1064 Zeichen lang sein. Außerdem müssen Sie die read only
Berechtigung für die Schlüsseldatei festlegen.
chmod 400 PATH_OF_YOUR_KEYFILE
Kopieren Sie nun Ihre Schlüsseldatei in jedes festgelegte Mitglied. Verwenden Sie zum späteren Nachschlagen einen konsistenten Ordner und speichern Sie ihn nicht auf einem Wechselmedium.
Verwenden Sie auch einen Ordner für die Datei, auf die zugegriffen werden mongod
kann.
In diesem Schritt müssen wir das mongod daemon
in jedem Set-Member starten . Es gibt zwei Möglichkeiten, den mongod
Prozess zu starten : Verwenden einer Konfigurationsdatei oder Verwenden der Befehlszeile. Beide Methoden sind recht einfach, aber der Einfachheit halber verwendet dieses Tutorial die Befehlszeilenversion.
Verwenden Sie den Namen, den Sie zuvor in diesem Befehl ausgewählt haben.
mongod --keyFile PATH_OF_YOUR_KEYFILE --replSet "YOUR_SET_NAME"
Standardmäßig mongod
wird nicht als Daemon ausgeführt. Sie müssen den --fork
Parameter verwenden oder den verwenden, upstart
um ihn vollständig als Daemon auszuführen. In diesem Tutorial wird nicht empfohlen, mongod
als Daemon zu arbeiten, damit Sie die Protokolle direkt in Ihrem Terminal sehen können.
Hinweis: Geben Sie den Namen des Replikatsatzes sorgfältig ein, da Sie ihn nach dem Erstellen nicht mehr ändern können.
Hinweis: Wenn Sie mongod
als Nicht-Daemon-Prozess ausgeführt werden, müssen Sie eine weitere SSH-Verbindung öffnen, um weiterarbeiten zu können.
Sie müssen den mongo
Befehl verwenden, um das zu öffnen mongo shell
. Dies kann in jedem Mitglied des Sets erfolgen.
In diesem Moment befinden wir uns in einem Zustand namens localhost exception
. Wenn zum Einrichten des mongod
Prozesses eine Schlüsseldatei verwendet wird, müssen Sie einen Datenbankadministrator erstellen, bevor Sie Lese- / Schreibvorgänge anwenden können. Wir werden später darauf eingehen .
Dies ist ein heikler Teil. Wir verwenden den Befehl rs.initiate()
in mongo shell
Schritt 4. Bevor wir diesen Befehl verwenden, überprüfen wir ihn.
rs.initiate(
{
_id : <replicaSetName>,
members: [
{ _id : 0, host : "example1.net:27017" },
{ _id : 1, host : "example2.net:27017" },
{ _id : 2, host : "example3.net:27017" }
]
}
)
Das erste _id
Feld ist eine Zeichenfolge und muss mit der --replSet
zuvor übergebenen Zeichenfolge übereinstimmen mongod
. Außerdem muss jeder Wert von host
entweder die IP-Adresse oder der Domänenname jedes Mitglieds des Replikatsatzes sein. Vergessen Sie nicht, den Port anzuhängen, den die Mongo-Instanz in jedem Mitglied verwendet.
Jetzt ist es Zeit, den Befehl mit Ihren Daten auszuführen. Dies löst eine aus election
, dann wird automatisch eine primäre ausgewählt.
Hier sollten Sie beachten, dass sich Ihr Shell-Cursor in YOUR_SET_NAME:PRIMARY>
oder geändert hat YOUR_SET_NAME:SECONDARY
. Dies bedeutet, dass das Erstellen eines Sets ein Erfolg war.
Um weiterarbeiten zu können, müssen Sie das finden primary
, wenn Sie nicht dabei sind. Verwenden Sie den rs.status()
Befehl, um die Informationen des Replikatsatzes anzuzeigen und die zu suchen primary
. Sie suchen die Immobilie "stateStr" : "PRIMARY"
.
Nachdem Sie das gefunden haben primary
, geben Sie das ein mongo shell
und führen Sie den nächsten Befehl mit Ihren Daten aus.
admin = db.getSiblingDB("admin")
admin.createUser(
{
user: "YOUR_USER",
pwd: "YOU_PASSWORD",
roles: [ { role: "userAdminAnyDatabase", db: "admin" } ]
}
)
Mit diesem admin = db.getSiblingDB("admin")
Teil können wir admin
aus einer anderen Datenbank schreiben . Dadurch wird ein Alias namens aufgerufen admin
, sodass wir stattdessen Befehle ausführen können.
Wenn der Vorgang erfolgreich ist, erhalten Sie eine Benachrichtigung, dass der Benutzer hinzugefügt wurde.
Successfully added user: {
"user" : "YOUR_USER",
"roles" : [
{
"role" : "userAdminAnyDatabase",
"db" : "admin"
}
]
}
Zu diesem Zeitpunkt haben wir nur einen Administrator für alle Server, aber ein Replikatsatz zwingt uns dazu, einen Benutzer mit der clusterAdmin
Rolle zu haben. Wir werden einen anderen Benutzer mit nur dieser Rolle erstellen, um Bedenken zu trennen.
Wir haben die Grenze von erreicht localhost exception
, weshalb wir die Authentifizierung auf den Benutzer ändern müssen, der einen Schritt zuvor erstellt wurde.
Sie können Benutzer innerhalb mongo shell
der folgenden ändern .
db.getSiblingDB("admin").auth("YOUR_ADMIN", "YOUR_PASSWORD" )
Wenn Sie noch keine Verbindung zum hergestellt haben, mongo shell
verwenden Sie stattdessen diesen Befehl.
mongo -u "YOUR_ADMIN" -p "YOUR_PASSWORD" --authenticationDatabase "admin"
Sie werden über die Änderung eines Benutzers benachrichtigt und können mit dem nächsten Schritt fortfahren.
Die clusterAdmin
Rolle gibt dem Benutzer die volle Kontrolle über das Replikatset. Das Erstellen ist so einfach wie das Erstellen des Administrators.
db.getSiblingDB("admin").createUser(
{
"user" : "YOUR_USER",
"pwd" : "YOUR_PASSWORD",
roles: [ { "role" : "clusterAdmin", "db" : "admin" } ]
}
)
Beachten Sie, dass diesmal die Rolle in geändert wirdclusterAdmin
.
Derzeit haben wir zwei Administratorbenutzer: einen, der die vollständige Kontrolle über den Server hat, und einen, der Zugriff auf Verwaltungsaufgaben auf der Ebene des Replikatsatzes hat. Es fehlt uns jedoch ein Benutzer, der Zugriff auf die "Verwendung" einer Datenbank hat. Daher werden wir diesen Benutzer jetzt erstellen.
admin = db.getSiblingDB("admin")
admin.createUser(
{
user: "YOUR_USER",
pwd: "YOUR_PASSWORD",
roles: [ { role: "userAdminAnyDatabase", db: "cars" } ]
}
)
Beachten Sie db
, dass wir diesmal das Teil ändern und dort die Datenbank für den Benutzer zugänglich machen. In diesem Fall verwenden wir eine Datenbank mit dem Namen cars
.
Die Datenbank ist noch nicht erstellt. Dazu müssen Sie einige Befehle eingeben, um sie implizit zu erstellen. Wechseln Sie zur cars
Datenbank.
use cars
Sie erhalten eine Benachrichtigung : switched to db cars
.
Die Datenbank wurde noch nicht erstellt. Dazu müssen Sie etwas darauf schreiben. Wir verwenden das folgende Beispiel.
db.models.insert({ make: "Dodge", model: "Viper", year: 2010 })
Dieses Mal werden Sie benachrichtigt WriteResult({ "nInserted" : 1 })
.
Wenn Sie möchten, können Sie alle Objekte in der Datenbank mit der folgenden find()
Methode abrufen :
db.models.find()
{ "_id" : ObjectId("59acd8b55334882863541ff4"), "make" : "Dodge", "model" : "Viper", "year" : 2010 }
Beachten Sie, dass _id
dies in Ihrer Ausgabe unterschiedlich sein wird, die anderen Daten jedoch identisch sein sollten. Bei ausreichender Zeit werden diese Daten auf die anderen Mitglieder repliziert.
Das Erstellen eines Replikatsets kann zunächst eine Herausforderung sein, da viele Informationen zu verstehen sind. Sobald Sie jedoch die Idee dahinter haben, können Sie es im Handumdrehen bereitstellen. Geben Sie also nicht auf, wenn Sie es beim ersten Mal nicht erfassen können. Beachten Sie, dass das Replikatset in der MongoDB-Verwaltung wichtig ist, da es die Möglichkeit eröffnet, erweiterte Funktionen wie den Lastausgleich hinzuzufügen.
Verwenden Sie ein anderes System? Apache Cassandra ist ein kostenloses und Open-Source-NoSQL-Datenbankverwaltungssystem, das Skalierbarkeit bietet
MongoDB ist standardmäßig nicht sicher. Wenn Sie MongoDB installieren und starten, ohne es für die Authentifizierung zu konfigurieren, werden Sie eine schlechte Zeit haben
Verwenden Sie ein anderes System? Apache Cassandra ist ein kostenloses und Open-Source-NoSQL-Datenbankverwaltungssystem, das Skalierbarkeit bietet
MySQL ist die weltweit beliebteste Software für Datenbanken. Es ist sehr wichtig sicherzustellen, dass Sie Sicherungen Ihrer Datenbank haben. Diese Praxis erlauben
MongoDB ist eine schnelle und leistungsstarke NoSQL-Datenbank. Debian-Repositorys werden jedoch langsam aktualisiert und enthalten häufig sehr alte Versionen von Paketen. Diese Tutoria
Einführung MyCLI ist ein Befehlszeilenclient für MySQL und MariaDB, mit dem Sie automatisch vervollständigen können und der bei der Syntax Ihrer SQL-Befehle hilft. MyCL
Laravel GitScrum oder GitScrum ist ein Open-Source-Produktivitätswerkzeug, mit dem Entwicklungsteams die Scrum-Methodik auf ähnliche Weise implementieren können
In diesem Artikel werde ich Ihnen zeigen, wie Sie MariaDB unter OpenBSD 6 installieren und so konfigurieren, dass ein Chroot-Webserver (Apache oder Nginx) darauf zugreifen kann. Sie werden auch
Verwenden Sie ein anderes System? Einführung ArangoDB ist eine Open-Source-NoSQL-Datenbank mit einem flexiblen Datenmodell für Dokumente, Grafiken und Schlüsselwerte. Es ist
Voraussetzungen Ein Vultr-Server, auf dem Arch Linux auf dem neuesten Stand ist (siehe diesen Artikel). Sudo-Zugriff. Befehle, die als root ausgeführt werden müssen, werden mit dem Präfix # und eins versehen
Einführung In diesem Artikel erfahren Sie, wie Sie mehrere MySQL- oder MariaDB-Datenbanken, die sich auf demselben Computer befinden, mithilfe eines benutzerdefinierten Bash-Skripts sichern
Das Sichern ist ein wichtiger Bestandteil des Umgangs mit Datenbanken. Unabhängig davon, ob Sie eine Unternehmenswebsite betreiben oder nur WordPress hosten, ist es wichtig, Sie zu sichern
Verwenden Sie ein anderes System? Einführung ArangoDB ist eine Open-Source-NoSQL-Datenbank mit einem flexiblen Datenmodell für Dokumente, Grafiken und Schlüsselwerte. Es ist
Barnyard2 ist eine Möglichkeit, die Binärausgaben von Snort in einer MySQL-Datenbank zu speichern und zu verarbeiten. Bevor wir beginnen Bitte beachten Sie, dass Sie kein Schnarchen haben
Redis ist eine Schlüsselwert-Datenspeicherlösung, die häufig als NoSQL-Datenbank bezeichnet wird. Es kann sehr hohe Lese- / Schreibgeschwindigkeiten erreichen, da es sich um ein In-Memory-Bu handelt
Voraussetzungen Docker Engine 1.8+. Mindestens 4 GB Speicherplatz. Mindestens 4 GB RAM. Schritt 1. Docker installieren Um SQL-Server zu installieren, muss Docker mus
MariaDB ist eine kostenlose Open-Source-Datenbank und der am häufigsten verwendete Drop-In-Ersatz für MySQL. Es wird von den Entwicklern von MySQL erstellt und soll bleiben
Voraussetzungen Ein Vultr-Server, auf dem Arch Linux auf dem neuesten Stand ist (siehe diesen Artikel). Sudo-Zugriff: Befehle, die als Root ausgeführt werden müssen, werden mit dem Präfix # und eins versehen
Verwenden Sie ein anderes System? Apache Cassandra ist ein kostenloses und Open-Source-NoSQL-Datenbankverwaltungssystem, das Skalierbarkeit bietet
Ransomware-Angriffe nehmen zu, aber kann KI helfen, den neuesten Computervirus zu bekämpfen? Ist KI die Antwort? Lesen Sie hier, ob KI boone oder bane ist
ReactOS, ein quelloffenes und kostenloses Betriebssystem, ist hier mit der neuesten Version. Kann es den Anforderungen moderner Windows-Benutzer genügen und Microsoft zu Fall bringen? Lassen Sie uns mehr über dieses alte, aber neuere Betriebssystem erfahren.
Whatsapp hat endlich die Desktop-App für Mac- und Windows-Benutzer auf den Markt gebracht. Jetzt können Sie ganz einfach von Windows oder Mac auf WhatsApp zugreifen. Verfügbar für Windows 8+ und Mac OS 10.9+
Lesen Sie dies, um zu erfahren, wie Künstliche Intelligenz bei kleinen Unternehmen beliebt wird und wie sie die Wahrscheinlichkeit erhöht, sie wachsen zu lassen und ihren Konkurrenten einen Vorsprung zu verschaffen.
Vor kurzem hat Apple macOS Catalina 10.15.4 als Ergänzungsupdate veröffentlicht, um Probleme zu beheben, aber es scheint, dass das Update mehr Probleme verursacht, die zum Bricking von Mac-Computern führen. Lesen Sie diesen Artikel, um mehr zu erfahren
13 Tools zur kommerziellen Datenextraktion von Big Data
Unser Computer speichert alle Daten in einer organisierten Weise, die als Journaling-Dateisystem bekannt ist. Es ist eine effiziente Methode, die es dem Computer ermöglicht, Dateien zu suchen und anzuzeigen, sobald Sie auf die Suche klicken.https://wethegeek.com/?p=94116&preview=true
Da sich die Wissenschaft schnell weiterentwickelt und einen Großteil unserer Bemühungen übernimmt, steigt auch das Risiko, uns einer unerklärlichen Singularität auszusetzen. Lesen Sie, was Singularität für uns bedeuten könnte.
Ein Einblick in 26 Big-Data-Analysetechniken: Teil 1
KI im Gesundheitswesen hat in den letzten Jahrzehnten große Fortschritte gemacht. Somit wächst die Zukunft der KI im Gesundheitswesen immer noch von Tag zu Tag.