Indeks dnevnikaDockup / bilješka s terena
Note / managed-postgresql-guide

Upravljani PostgreSQL na platformi Dockup: potpuni vodič

Upravljani PostgreSQL na platformi Dockup: izradite bazu podataka, sigurno povežite servis, provjerite veličinu i logove, izradite sigurnosnu kopiju podataka, sigurno vratite podatke i dodajte korisnike samo za čitanje.

Upravljani PostgreSQL aplikaciji pruža provisioned bazu podataka čije su operacije životnog ciklusa odvojene od spremnika servisa. Dockup podržava izradu, pokretanje i zaustavljanje, logove, provjeru veličine, sigurnosne kopije, vraćanje podataka putem platforme, korisnike samo za čitanje, migraciju čvora i privatno umrežavanje.

Ključno operativno načelo jest razdvajanje: image aplikacije može se odbaciti, podaci PostgreSQL-a trajni su, vjerodajnice su secrets, a oporavak baze podataka mora se testirati neovisno o vraćanju prethodne verzije aplikacije.

Kako izraditi upravljanu PostgreSQL bazu podataka?

Odaberite željeni workspace, a zatim izradite bazu podataka:

dockup db create \
  --name main-db \
  --type postgresql \
  --json

Navedite baze podataka kako biste potvrdili točan slug i status:

dockup db list --json

Operacije nad bazama podataka koriste ciljeve u obliku project/db:

dockup db size production/main-db --json

Pričekajte da provisioning završi prije povezivanja aplikacije. Nemojte nagađati hostname, port, korisničko ime ili lozinku na temelju naziva baze podataka.

Free plan omogućuje tri baze podataka u jednom workspaceu i uključuje početni kredit od 10 USD. Plaćeni planovi — Hobby za 5 USD, Pro za 20 USD mjesečno — omogućuju neograničen broj baza podataka, workspaceova i deploymenta. Potrošnja CPU-a, RAM-a i diska mjeri se po minuti u odnosu na uključeni saldo korištenja.

Kako sigurno povezati aplikaciju?

Preuzmite podatke za povezivanje s bazom podataka iz Dockupova sučelja za baze podataka i s connection stringom postupajte kao sa secretom. Nemojte ga zalijepiti u repository ili transcript agenta.

Postavite ga na servis:

dockup env set DATABASE_URL="$DATABASE_URL" \
  --secret \
  -s production/api \
  --json

dockup deploy production/api --wait --json

Redeploy je potreban jer je pokrenuti proces svoje environment varijable primio pri pokretanju. Spremljena vrijednost maskira se pri čitanju konfiguracije environmenta.

Pažljivo konfigurirajte connection pooling aplikacije. Prevelik broj application workera s velikim poolovima može iscrpiti veze s bazom podataka čak i kada CPU i memorija izgledaju dostupno. Veličinu poola odredite prema opterećenju i kapacitetu baze podataka, a ne prema najvećem broju koji framework prihvaća.

Nakon deploymenta testirajte novu vezu. Health endpoint može potvrditi da je HTTP proces živ, ali ne i da se može uspostaviti nova sesija s bazom podataka.

Vodič environment varijable i secrets opisuje rotaciju vjerodajnica i maskirani izlaz.

Kako privatno umrežavanje štiti PostgreSQL promet?

Omogućite privatnu mrežu projekta:

dockup network enable production --json

Servisi i upravljane baze podataka u tom projektu dobivaju stabilne hostnameove u obliku <slug>.internal. Ponovno deployajte aplikaciju kako bi primila injected interne connection varijable.

Da biste uklonili javni listener baze podataka i omogućili samo privatni pristup:

dockup db private production/main-db --json

Kada je potrebno, vratite javni i privatni pristup:

dockup db private production/main-db --off --json

Postavljanje baze podataka na samo privatni pristup ponovno izrađuje njezin container, ali čuva podatke. Tu promjenu planirajte i provjerite kao operaciju nad bazom podataka, a ne kao bezazlenu DNS izmjenu.

Privatno umrežavanje određuje putanju, dok PostgreSQL vjerodajnice određuju identitet i autorizaciju. Koristite oboje. Odvojeni projekti ne mogu međusobno komunicirati jer svaki projekt ima vlastitu mrežu.

Članak privatno umrežavanje i interne domene opisuje cjelokupnu topologiju.

Kako funkcioniraju sigurnosne kopije i vraćanje PostgreSQL-a?

Navedite postojeće sigurnosne kopije:

dockup db backups production/main-db --json

Pokrenite sigurnosnu kopiju na strani servera:

dockup db backup production/main-db --json

Naredba za izradu sigurnosne kopije stvara backup prilagođen bazi podataka, a ne hot kopiju neobrađenog volumea. Zabilježite ID sigurnosne kopije, vrijeme izrade, verziju baze podataka i razlog.

Dockup podržava vraćanje sigurnosnih kopija upravljanih baza podataka putem platforme. Trenutačna CLI referenca ne dokumentira naredbu dockup db restore, pa je ovaj vodič ne izmišlja. Vraćanje provedite putem podržanog Dockupova sučelja, odaberite točnu sigurnosnu kopiju, pribavite odobrenje za produkciju i provjerite rezultat.

Plan vraćanja trebao bi sadržavati:

  1. Točku oporavka i očekivani vremenski prozor izgubljenih upisa.
  2. Zamrzavanje upisa aplikacije ili ponašanje tijekom održavanja.
  3. Kompatibilnost baze podataka i ekstenzija.
  4. Novu sigurnosnu kopiju trenutačnog stanja kada je korisna.
  5. Vlasnika vraćanja i odobrenje.
  6. Ponovno povezivanje aplikacije i smoke test.
  7. Zapis revizije i incidenta.

Sigurnosne kopije nisu provjerene dok uspješno ne provedete vježbu vraćanja. Koristite neprodukcijsku bazu podataka ili odobreno okruženje za oporavak kako biste testirali postupak.

Sigurnosne kopije zadržavajte u skladu s odobrenim pravilima. Zastarjele točke oporavka uklanjajte samo putem podržanog sučelja baze podataka, nakon što provjerite da o njima više ne ovisi nijedan zahtjev za oporavak ili usklađenost.

Kako funkcioniraju PostgreSQL korisnici samo za čitanje?

Dodatni korisnici samo za čitanje korisni su za analytics, istrage podrške, preview deploymente i alate koji moraju izvršavati upite bez pisanja.

Navedite korisnike:

dockup db users production/main-db --json

Izradite korisnika s oznakom:

dockup db user-add production/main-db \
  --label analytics \
  --json

Sigurno preuzmite generirane vjerodajnice tijekom izrade i nemojte ih reproducirati u odgovoru agenta. Dodatnog korisnika opozovite putem podržanog sučelja za upravljanje korisnicima baze podataka kada njegova svrha prestane.

Pristup samo za čitanje na razini dozvola baze podataka snažniji je od poruke alatu za upite „nemoj pisati”. I dalje omogućuje pristup čitljivim produkcijskim podacima, pa se primjenjuju pravila privatnosti i najmanjih privilegija.

Dockup automatski izrađuje korisnika baze podataka samo za čitanje za PR ili branch preview u projektu s privatnim umrežavanjem. Preview može pristupiti istoj produkcijskoj bazi podataka na adresi <slug>.internal i čitati podatke bez dozvole za pisanje.

Kako pratiti veličinu, logove i smještaj?

Provjerite veličinu na disku:

dockup db size production/main-db --json

Pregledajte runtime logove aplikacije zbog neuspješnih povezivanja, bez izlaganja lozinki ili potpunih connection stringova:

dockup logs production/api --json

Održavanje baze podataka može učiniti ovisne servise nedostupnima. Operacije koje mijenjaju stanje planirajte unaprijed, zahtijevajte izričito operativno odobrenje i prije izvođenja komunicirajte utjecaj.

Premjestite bazu podataka između čvorova pomoću ID-ja ciljnog čvora:

dockup db migrate production/main-db \
  --node <nodeId> \
  --json

Migracija je stateful operacija. Potvrdite status sigurnosne kopije, očekivanja u vezi s održavanjem, veze privatne mreže i provjere aplikacije nakon premještanja.

Kontrolni popis za produkciju upravljanog PostgreSQL-a

Potpuni runbook bilježi:

PodručjeObavezni dokaz
IdentitetTočan cilj project/db
PovezivostSecret connection string i testirana nova sesija
MrežaPravilo za javni, privatni ili samo privatni pristup
PristupUloga aplikacije i označeni korisnici samo za čitanje
KapacitetTrenutačna veličina i pregled rasta
Sigurnosne kopijeNedavni ID-jevi sigurnosnih kopija i zadržavanje
OporavakUspješna vježba vraćanja
OperacijeOdobrenje za pokretanje, zaustavljanje, ponovno pokretanje i migraciju
RevizijaPromjene baze podataka sljedive su do izvršitelja

Rollback deploymenta aplikacije ne vraća PostgreSQL. Vraćanje baze podataka ne vraća automatski kod aplikacije na prethodnu verziju. Uskladite ih samo kada to zahtijeva kompatibilnost sheme.

Za šire odluke o skaliranju pročitajte strategije skaliranja baza podataka. Za točne naredbe koristite Dockup CLI referencu.

Dizajnirajte migracije sheme za deploy i rollback

Deployment aplikacije i promjena sheme baze podataka odvijaju se u različitim vremenskim okvirima. Sigurna migracija obično je backward compatible najmanje tijekom jednog release windowa: najprije dodajte nullable stupac, zatim deployajte kod koji može raditi s obje sheme, provedite backfill kontroliranim postupkom i kasnije uklonite staru strukturu.

Nemojte dopustiti da health check izvršava dugotrajnu migraciju. Ako aplikacija pokreće nekoliko replika, osigurajte da samo jedan migration runner može preuzeti promjenu. PRO container exec naredba može pokrenuti jednokratnu naredbu i proslijediti njezin stvarni exit code:

dockup exec "npm run migrate" \
  -s production/api \
  --json

Koristite je samo kada je naredba za migraciju pregledana i servis radi na podržanom glavnom serveru. Zabilježite stdout, stderr i exit code. Uspješan deployment aplikacije ne znači da se neuspjela migracija može zanemariti.

Rotirajte vjerodajnice baze podataka bez prekida rada

Izradite novu vjerodajnicu ili korisnika samo za čitanje, ažurirajte secret servisa koji ga koristi, ponovno deployajte i provjerite novu vezu prije opoziva stare vjerodajnice. Postojeći connection poolovi mogu prikriti neispravnu novu lozinku sve dok se ponovno ne povežu.

Za primarnu vjerodajnicu aplikacije koristite podržano Dockupovo sučelje i pravila baze podataka. Za dodatnog analitičkog korisnika izradite označeni račun samo za čitanje i distribuirajte ga samo odobrenom potrošaču.

Zapis o rotaciji treba sadržavati oznaku korisnika, servise koji ga koriste, ID-jeve deploymenta, verifikacijski upit, vrijeme opoziva i događaj revizije — nikada lozinku.

Pratite rast prije skaliranja

Veličina baze podataka jedan je od signala:

dockup db size production/main-db --json

Kombinirajte je s latencijom upita aplikacije, brojem veza, ponašanjem cachea, trajanjem sigurnosne kopije i rastom prostora za pohranu. Veća dodjela CPU-a ili memorije možda neće riješiti nedostatak indexa ili neograničene upite.

Prije premještanja čvorova ili povećanja resursa pregledajte strategije skaliranja baza podataka. Upravljani PostgreSQL smanjuje količinu posla potrebnu za provisioning, ali dizajn sheme i upita i dalje je odgovornost aplikacije.

Odvojite dostupnost od ispravnosti

Pokrenuti database container dokazuje da je PostgreSQL dostupan, ali ne i da su upiti aplikacije ispravni. U provjeru nakon deploymenta uključite sigurnu novu vezu i reprezentativno čitanje. Za test pisanja koristite namjensku transakciju ili testni zapis koji se može sigurno ukloniti.

Runbook za upravljani PostgreSQL također treba navesti stvaraju li replike, analitički korisnici, previewi ili background workeri dodatno opterećenje veza.

Redovito pregledavajte PostgreSQL pristup

Navedite dodatne korisnike, potvrdite da svaka oznaka ima aktivnog vlasnika i uklonite zastarjele račune. Ovaj jednostavan pregled sprječava gomilanje pristupa upravljanom PostgreSQL-u samo za čitanje nakon završetka previewa, analitičkih projekata ili istraga podrške.

Započnite deploymentom koji se može provjeriti

Izradite neprodukcijsku PostgreSQL bazu podataka, povežite testni servis putem maskiranog secreta, izradite sigurnosnu kopiju i dovršite vježbu vraćanja prije prebacivanja u produkciju.

Započnite besplatno na adresi app.dockup.ai. Free plan iznosi 0 USD mjesečno, uključuje početni kredit od 10 USD te podržava jedan workspace, tri baze podataka i tri deploymenta.

Česta pitanja

Koje vrste upravljanih baza podataka Dockup podržava?

Dockup podržava upravljane baze podataka PostgreSQL, MySQL, MongoDB i Redis.

Kako aplikacija treba primiti connection string za PostgreSQL?

S connection stringom postupajte kao s tajnom environment varijablom, postavite ga na točan servis i ponovno deployajte kako bi ga novi container primio.

Može li Dockup izraditi PostgreSQL korisnika samo za čitanje?

Da. Naredba user-add baze podataka izrađuje dodatnog korisnika samo za čitanje i vraća njegovu lozinku jednom, pri izradi.

Postoji li dokumentirana CLI naredba dockup db restore?

Trenutačna CLI referenca ne dokumentira takvu naredbu. Dockup podržava vraćanje sigurnosnih kopija putem sučelja platforme, stoga koristite taj podržani postupak umjesto izmišljanja zastavice ili naredbe.

Vraća li rollback aplikacije PostgreSQL bazu podataka?

Ne. Povijest deploymenta aplikacije i povijest sigurnosnih kopija baze podataka odvojeni su sustavi oporavka te ih treba uskladiti kada promjene sheme zahtijevaju oboje.