Installera InfluxDB på Ubuntu 14
Inledning InfluxDB är en öppen källkod, distribuerad, tidsseriedatabas utan externa beroenden. Ja, du läser paragrafen för inga externa beroenden
Sedan starten 2009 har MongoDB lett NoSQL-branschen. Ett av kärnkoncepten i MongoDB är Replica Set, så innan vi arbetar med det, låt oss först se över konceptet.
Den enklaste kommunikationsmodellen som används vid replikering av databaser är Master-Slave-arkitekturen. Som namnet antyder har denna modell 2 roller som är spridda i en unik master och många slavar, masterns roll är att bearbeta läs- och skrivoperationerna som görs av klienterna och slavarna behandlas som en replik av mastern.
Den viktigaste fördelen med denna modell är att masterns prestanda inte äventyras av backup-operationerna, backup-operationerna görs på ett asynkront sätt och detta kan bli ett allvarligt problem när en masternod misslyckas. Slavnoder är skrivskyddade och de måste flyttas upp manuellt till masternoden, så under denna tid finns det möjlighet att förlora data.
Ett alternativ för att lösa tillgänglighetsproblemet är att ha mer än en master i arkitekturen, men detta kan leda till ytterligare ett problem i datakonsistensen mellan dessa instanser och den ökade komplexiteten i konfigurationen.
Med tanke på sammanhanget kan vi presentera Replica Set- tekniken från MongoDB. Replica Set är namnet på Master-Slave-arkitekturen som har automatisk failover, så i det ögonblick som en masternod (som nu heter primary
) misslyckas med att fungera korrekt election
kommer en utlösare och en ny primär nod att väljas från de återstående slavarna ( kallas nu secondaries
).
Den primära noden är den enda som utför skrivoperationer, som standard hanteras läsoperationer även av den primära men detta beteende kan ändras senare.
Operationerna registreras i oplog
(driftsloggen), sedan uppdaterar sekundära noder sitt innehåll asynkront baserat på innehållet ioplog
Obs: oplog
är en begränsad samling, detta betyder att samlingen har en gräns, med local.oplog.rs
du kan kontrollera innehållet i denna samling inuti ett mongoskal i valfri uppsättningsmedlem.
Förutom att vara de som gör en ordentlig säkerhetskopiering av databasen, har en sekundär nod dessa roller:
Tack vare dessa egenskaper kan vi ha olika typer av sekundära noder:
primary
och kan inte utlösa ett val, ändå kan de rösta i val, har en komplett replik och kan acceptera läsoperationer. Dessa kan vara till hjälp vid distribution av flera datacenter.Priority 0
medlemmar, men dessutom kan de inte bearbeta läsoperationer. De får rösta om det behövs. Föredragna uppgifter för dessa medlemmar är rapportering och säkerhetskopiering.priority 0
nod, och det rekommenderas att de också är en hidden
medlem.Innan du distribuerar en infrastruktur är det viktigt att designa den, och det finns punkter att tänka på i denna design.
Tänk på att det minsta antalet element för att bygga en replikuppsättning är 3. Du kan blanda de tre typerna av noder med minst en primär och en sekundär nod.
I den här guiden distribuerar vi 3 medlemmar, en primär och två standardsekundärer.
Notera: Det rekommenderas att ha ett maximalt antal av 7 röstberättigade medlemmar med en blandning av skiljedomare och sekundära medlemmar.
Namnet är bara för referens men du använder det i uppsättningens konfiguration. Tänk på att du kan ha mer än en replikuppsättning i din produktionsmiljö, så försumma inte uppsättningens namn.
Denna handledning uppmuntrar användaren att välja namnet på uppsättningen.
Den här handledningen föreslår att du installerar på samma datacenter så att du kan undvika kommunikationsproblem.
Obs: Vid distribution i olika datacenter rekommenderas att du omsluter dina noder med ett VPN
Starta 3 noder av Ubuntu 16.04 x64; i samma region från din kundportal, om möjligt. Glöm inte att namnge dem i enlighet med den typ av projekt du har att göra med och se till att ha samma serverstorlek i alla dessa noder.
Efter att du har distribuerat dina 3 noder måste du vara säker på att varje nod kan prata med resten. Du måste ssh till två noder och nå de andra med ping -c 4 EXAMPLE_IP
. Ändra EXAMPLE_IP
till de faktiska IP-adresserna för dina noder.
Här kan du se ett exempel på framgångsrik kommunikation mellan två noder.
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
I allmänhet kan du använda MongoDB-paketet för Ubuntu, men det är bättre att använda den officiella community-repo eftersom den alltid är uppdaterad. Denna repo innehåller dessa paket:
mongod
demonen (primär process som hanterar dataförfrågningar).mongos
demonen (rutttjänst för delade distributioner).mongo shell
JavaScript-gränssnittet.Fortsätt med att installera paketen.
Importera den publika nyckeln till pakethanteringssystemet.
sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 0C49F3730359A14518585931BC711F9BA15703C6
Skapa listfilen 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
Uppdatera paketdatabasen.
sudo apt-get update
Installera MongoDB-metapaketet.
sudo apt-get install -y mongodb-org
Starta MongoDB-tjänsten.
sudo service mongod start
Nu kan du öppna mongo shell
i valfri bash-session. För att göra detta måste du använda mongo
kommandot. Du kommer att mötas av något liknande detta.
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*
>
Glöm inte att stänga av tjänsten med sudo service mongod stop
, för senare börjar vi mongod
igen med några parametrar. Upprepa denna process i alla tre noder i uppsättningen.
Att använda en nyckelfil tvingar fram två koncept i Replica Set-administrationen. Den första är Internal Authentication
. Som standard kan du starta en mongo shell
session utan att använda en användare och denna session kommer att ha full kontroll över databasen, men när du använder en nyckelfil för autentisering mongo shell
når din session ett tillstånd som kallas localhost exception
. Det här tillståndet låter dig bara skapa administratörsanvändaren och replikuppsättningen. Det andra konceptet är Role-Based Access Control
, eller med andra ord auktorisation. Detta genomdrivs för att styra administrativa nivåer till replikuppsättningen.
Nyckelfilen är lösenordet som ska användas i setet, detta lösenord måste vara detsamma i alla medlemmar i setet. För att öka säkerheten är det viktigt att använda en slumpmässig nyckel med det verktyg du väljer.
Innehållet måste vara mellan 6 och 1064 tecken långt. Du måste också ställa in read only
behörigheten för nyckelfilen.
chmod 400 PATH_OF_YOUR_KEYFILE
Kopiera nu din nyckelfil till varje uppsättningsmedlem, använd en konsekvent mapp för framtida referens och lagra den inte på ett flyttbart medium.
Använd också en mapp för filen som mongod
kan komma åt.
I det här steget måste vi starta mongod daemon
medlemmen i varje set . Det finns två sätt att starta mongod
processen: med hjälp av en konfigurationsfil eller med kommandoraden. Båda är ganska enkla metoder, men bara för enkelhetens skull använder den här handledningen kommandoradsversionen.
Använd namnet du valde tidigare i det här kommandot.
mongod --keyFile PATH_OF_YOUR_KEYFILE --replSet "YOUR_SET_NAME"
Som standard mongod
körs inte som en demon. Du kommer att behöva använda --fork
parametern eller använda för upstart
att köra den helt som en demon. I den här handledningen uppmuntrar vi inte att köra mongod
som en demon så att du kan se loggarna i din terminal direkt.
Obs: Skriv noggrant namnet på replikuppsättningen eftersom du inte kan ändra den när den väl har skapats.
Obs: Om du kör mongod
som en icke-demon-process, måste du öppna en annan ssh-anslutning för att fortsätta arbeta.
Du måste använda mongo
kommandot för att öppna mongo shell
. Detta kan göras i vilken medlem som helst i uppsättningen.
I detta ögonblick är vi i ett tillstånd som heter localhost exception
. När en nyckelfil används för att ställa in mongod
processen är du skyldig att skapa en databasadministratör innan du kan tillämpa läs-skrivoperationer, men vi kommer att gå in på det senare.
Detta är en känslig del, vi använder kommandot rs.initiate()
inuti mongo shell
från steg 4. Innan vi använder det här kommandot låt oss granska det.
rs.initiate(
{
_id : <replicaSetName>,
members: [
{ _id : 0, host : "example1.net:27017" },
{ _id : 1, host : "example2.net:27017" },
{ _id : 2, host : "example3.net:27017" }
]
}
)
Det första _id
fältet är en sträng och måste matcha det --replSet
som skickades innan till mongod
. Varje värde på host
måste också vara antingen ip eller domännamn för varje medlem i replikuppsättningen. Glöm inte att lägga till porten som mongoinstansen använder i varje medlem.
Nu är det dags att utföra kommandot med dina data på, detta kommer att utlösa en election
, sedan väljs en primär automatiskt.
Här bör du notera att din skalmarkör har ändrats till YOUR_SET_NAME:PRIMARY>
eller YOUR_SET_NAME:SECONDARY
. Det betyder att skapandet av ett set var en framgång.
För att fortsätta arbeta måste du hitta primary
, om du inte är på den förstås. Använd rs.status()
kommandot för att visa informationen om replikuppsättningen och lokalisera primary
. Du letar efter fastigheten "stateStr" : "PRIMARY"
.
När du har hittat primary
, skriv in mongo shell
och kör nästa kommando med dina data.
admin = db.getSiblingDB("admin")
admin.createUser(
{
user: "YOUR_USER",
pwd: "YOU_PASSWORD",
roles: [ { role: "userAdminAnyDatabase", db: "admin" } ]
}
)
Den admin = db.getSiblingDB("admin")
del låter oss skriva in admin
från en annan databas. Detta skapar ett alias som heter admin
, så vi kan köra kommandon med det istället.
Om operationen lyckas får du ett meddelande om att användaren har lagts till.
Successfully added user: {
"user" : "YOUR_USER",
"roles" : [
{
"role" : "userAdminAnyDatabase",
"db" : "admin"
}
]
}
Vid det här laget har vi bara en administratör för alla servrar, men att ha en replikuppsättning tvingar oss att ha en användare med clusterAdmin
rollen. Vi kommer att skapa en annan användare med bara den rollen för att skilja problem.
Vi har nått gränsen för localhost exception
, vilket är anledningen till att vi måste ändra autentiseringen till användaren som skapats ett steg innan.
Du kan ändra användare inuti mongo shell
med följande.
db.getSiblingDB("admin").auth("YOUR_ADMIN", "YOUR_PASSWORD" )
Om du inte redan har anslutit till mongo shell
kommandot använd detta kommando istället.
mongo -u "YOUR_ADMIN" -p "YOUR_PASSWORD" --authenticationDatabase "admin"
Du kommer att meddelas om bytet av en användare och du kan gå till nästa steg.
Den clusterAdmin
roll ger användaren full kontroll över Replica set. Att skapa det är lika enkelt som att skapa en adminanvändare.
db.getSiblingDB("admin").createUser(
{
"user" : "YOUR_USER",
"pwd" : "YOUR_PASSWORD",
roles: [ { "role" : "clusterAdmin", "db" : "admin" } ]
}
)
Observera att denna gång ändras rollen tillclusterAdmin
.
För närvarande har vi 2 administratörsanvändare: en som har total kontroll över servern och en annan som har åtkomst till administrativa uppgifter på replikuppsättningsnivån. Vi saknar dock en användare som har tillgång att "använda" en databas, så vi kommer att skapa den användaren nu.
admin = db.getSiblingDB("admin")
admin.createUser(
{
user: "YOUR_USER",
pwd: "YOUR_PASSWORD",
roles: [ { role: "userAdminAnyDatabase", db: "cars" } ]
}
)
Observera att den här gången ändrar vi db
delen, där lägger vi databasen tillgänglig för användaren, i det här fallet använder vi en databas som heter cars
.
Databasen är inte skapad ännu. För att göra det måste du skriva några kommandon för att implicit skapa det. Byt till cars
databasen.
use cars
Du får ett meddelande: switched to db cars
.
Databasen har fortfarande inte skapats, för att göra det måste du skriva något till den. Vi använder följande exempel.
db.models.insert({ make: "Dodge", model: "Viper", year: 2010 })
Den här gången kommer du att meddelas med WriteResult({ "nInserted" : 1 })
.
Om du vill kan du hämta alla objekt i databasen, med find()
metoden:
db.models.find()
{ "_id" : ObjectId("59acd8b55334882863541ff4"), "make" : "Dodge", "model" : "Viper", "year" : 2010 }
Observera att det _id
kommer att vara annorlunda i din utdata, men de andra uppgifterna bör vara desamma. Med tillräckligt med tid kommer denna data att replikeras till de andra medlemmarna.
Att skapa ett replikset kan vara utmanande till en början eftersom det finns mycket information att förstå, men när du väl har fått idén bakom det kan du distribuera det på ett enkelt sätt, så ge inte upp om du inte kan förstå den första gången. Tänk på att Replica-set är viktigt i MongoDB-administration eftersom det öppnar möjligheten att lägga till avancerade funktioner som lastbalansering.
Inledning InfluxDB är en öppen källkod, distribuerad, tidsseriedatabas utan externa beroenden. Ja, du läser paragrafen för inga externa beroenden
Använder du ett annat system? Apache Cassandra är ett gratis NoSQL-databashanteringssystem med öppen källkod som är designat för att ge skalbarhet, hög
Använder du ett annat system? Apache Cassandra är ett gratis NoSQL-databashanteringssystem med öppen källkod som är designat för att ge skalbarhet, hög
Använder du ett annat system? Inledning ArangoDB är en NoSQL-databas med öppen källkod med en flexibel datamodell för dokument, grafer och nyckel-värden. Det är
Laravel GitScrum, eller GitScrum är ett produktivitetsverktyg med öppen källkod designat för att hjälpa utvecklingsteam att implementera Scrum-metoden på ett liknande sätt
Inledning I den här artikeln, gå igenom hur man säkerhetskopierar flera MySQL- eller MariaDB-databaser som sitter på samma maskin med hjälp av ett anpassat bash-skript
OrientDB är en nästa generations multi-modell öppen källkod NoSQL DBMS. Med stöd för flera datamodeller kan OrientDB ge mer funktionalitet och flexibilitet i
MongoDB är inte säkert som standard. Om du installerar MongoDB och startar den utan att konfigurera den för autentisering, kommer du att ha en dålig tid
MySQL är den mest populära programvaran i världen som används för databaser. Att se till att du har säkerhetskopior av din databas är mycket viktigt. Denna praxis tillåter
Introduktion PostgreSQL är ett gratis och öppen källkod för databashanteringssystem som kan användas för att lagra information relaterad till webbplatser. Det är också känt a
Förutsättningar En Vultr-server som kör uppdaterad Arch Linux (se den här artikeln.) Sudo-åtkomst. Kommandon som krävs för att köras som root har prefixet # och ett
Sedan starten 2009 har MongoDB lett NoSQL-branschen. Ett av kärnkoncepten i MongoDB är Replica Set, så innan du arbetar med i
MongoDB är en snabb och kraftfull NoSQL-databas. Debians arkiv uppdateras dock långsamt och innehåller ofta mycket gamla versioner av paket. Denna handledning
Barnyard2 är ett sätt att lagra och bearbeta de binära utdata från Snort till en MySQL-databas. Innan vi börjar Observera att om du inte har snor
Använder du ett annat system? Apache Cassandra är ett gratis NoSQL-databashanteringssystem med öppen källkod som är designat för att ge skalbarhet, hög
RockMongo är ett webbaserat MongoDB Management-verktyg som liknar MySQL Management-verktyget: phpMyAdmin. Denna handledning kommer att täcka installationsprocessen
Introduktion InfluxDB är en tidsseriebaserad databas skriven i Go. InfluxDB har många praktiska användningsområden, varav en är att lagra övervakningsdata på servrar. jag
MariaDB är en gratis databas med öppen källkod och är den mest använda drop-in-ersättningen för MySQL. Den är gjord av utvecklarna av MySQL och avsedd att vara kvar
phpRedisAdmin är en webbapplikation som hanterar Redis-databaser med ett intuitivt grafiskt användargränssnitt. Denna handledning kommer att förklara hur man installerar
Använder du ett annat system? Inledning ArangoDB är en NoSQL-databas med öppen källkod med en flexibel datamodell för dokument, grafer och nyckel-värden. Det är
Artificiell intelligens är inte i framtiden, det är här i nuet I den här bloggen Läs hur Artificiell intelligens-applikationer har påverkat olika sektorer.
Är du också ett offer för DDOS-attacker och förvirrad över de förebyggande metoderna? Läs den här artikeln för att lösa dina frågor.
Du kanske har hört att hackare tjänar mycket pengar, men har du någonsin undrat hur de tjänar den typen av pengar? låt oss diskutera.
Vill du se revolutionerande uppfinningar av Google och hur dessa uppfinningar förändrade livet för varje människa idag? Läs sedan till bloggen för att se uppfinningar av Google.
Konceptet med att självkörande bilar ska ut på vägarna med hjälp av artificiell intelligens är en dröm vi har ett tag nu. Men trots flera löften finns de ingenstans att se. Läs den här bloggen för att lära dig mer...
När vetenskapen utvecklas i snabb takt och tar över en hel del av våra ansträngningar, ökar också riskerna för att utsätta oss för en oförklarlig singularitet. Läs, vad singularitet kan betyda för oss.
Lagringsmetoderna för data har utvecklats kan vara sedan födelsen av data. Den här bloggen tar upp utvecklingen av datalagring på basis av en infografik.
Läs bloggen för att känna till olika lager i Big Data Architecture och deras funktionaliteter på enklaste sätt.
I denna digitala värld har smarta hemenheter blivit en avgörande del av livet. Här är några fantastiska fördelar med smarta hemenheter om hur de gör vårt liv värt att leva och enklare.
Nyligen släppte Apple macOS Catalina 10.15.4, en tilläggsuppdatering för att åtgärda problem, men det verkar som om uppdateringen orsakar fler problem som leder till att mac-datorer blir murade. Läs den här artikeln för att lära dig mer