Diese Anleitung beschreibt, wie Sie ein einfaches MongoDB Replica Set installieren und konfigurieren. Sie ist ideal für Test- und Entwicklungsumgebungen. Für Produktionsumgebungen sollten zusätzliche Sicherheits- und Performance-Optimierungen berücksichtigt werden.
Erstellen Sie für jeden Server eine mongod.conf mit den
folgenden Einstellungen:
Beispiel mongod.conf:
net:
bindIp: 0.0.0.0
port: 27017
storage:
dbPath: /var/lib/mongo
replication:
replSetName: "exampleReplicaSet"bindIp: Legt fest, auf welchen
Netzwerkschnittstellen der mongod-Prozess lauscht.port: Standardmäßig wird der Port
27017 verwendet.dbPath: Der Speicherort der
Datenbankdateien.replSetName: Der Name des Replica Sets
(alle Mitglieder müssen denselben Namen verwenden).mongod ProzesseStarten Sie auf jedem Server den mongod-Prozess mit der
entsprechenden Konfigurationsdatei:
mongod --config /path/to/mongod.confVerbinden Sie sich über die MongoDB Shell (mongosh) mit
einem der Server, der als Primary fungieren soll:
mongosh --port 27017Initialisieren Sie das Replica Set:
rs.initiate({
_id: "exampleReplicaSet",
members: [
{ _id: 0, host: "hostname1:27017" }
]
})_id: Eindeutige ID des Replica
Sets.members: Liste der initialen
Mitglieder mit ihren Hostnamen und Ports.Vom Primary-Server aus fügen Sie die anderen Server hinzu:
rs.add("hostname2:27017")
rs.add("hostname3:27017")rs.add: Fügt ein neues Mitglied zum
Replica Set hinzu.Prüfen Sie den Status des Replica Sets:
rs.status()Die Ausgabe zeigt: - Den aktuellen Primary-Knoten. - Den Status jedes
Mitglieds (z. B. PRIMARY, SECONDARY). -
Synchronisations- und Replikationsinformationen.
Um die Hochverfügbarkeit zu testen: 1. Stoppen Sie den
mongod-Prozess auf dem aktuellen Primary:
sudo systemctl stop mongodÜberprüfen Sie, ob einer der Secondary-Knoten automatisch zum neuen Primary gewählt wurde:
rs.status()Ein Arbiter nimmt an Wahlen teil, speichert jedoch keine Daten. Nützlich, wenn eine ungerade Anzahl von Stimmrechten erforderlich ist:
rs.addArb("hostname4:27017")Konfigurieren Sie Lesepräferenzen, um Leseanfragen gezielt auf bestimmte Mitglieder zu leiten:
Bevorzugt Secondary:
db.getMongo().setReadPref("secondaryPreferred")Nur Primary:
db.getMongo().setReadPref("primary")Falls Sie detailliertere Konfigurationen benötigen, z. B. Prioritäten oder Timeout-Einstellungen, können Sie das Konfigurationsdokument anpassen:
var cfg = {
_id: "exampleReplicaSet",
members: [
{ _id: 0, host: "hostname1:27017", priority: 2 },
{ _id: 1, host: "hostname2:27017", priority: 1 },
{ _id: 2, host: "hostname3:27017", arbiterOnly: true }
],
settings: {
electionTimeoutMillis: 5000
}
}
rs.reconfig(cfg)Mit diesen Schritten haben Sie ein funktionierendes MongoDB Replica Set installiert und konfiguriert. Dieses Setup bietet Redundanz, Hochverfügbarkeit und die Grundlage für eine skalierbare Datenbankinfrastruktur. Für Produktionsumgebungen sollten zusätzliche Sicherheitsmaßnahmen wie TLS/SSL, Authentifizierung und regelmäßige Backups implementiert werden. Weitere Informationen finden Sie in der offiziellen MongoDB-Dokumentation.