Kā dublēt lietotnes datubāzi (un patiešām atjaunot to)
Lai dublētu lietotnes datubāzi, eksportējiet to failā pēc grafika (Postgres gadījumā standarta rīks ir pg_dump), glabājiet kopijas atsevišķi no datubāzes un regulāri atjaunojiet vienu no tām tukšā datubāzē, lai pierādītu, ka tā darbojas. Pirms katras riskantas izmaiņas izveidojiet papildu dublējumu. Jūsu koda dublējums, vai tas būtu GitHub repozitorijs vai eksports, nesatur jūsu datus.
Šis ceļvedis ir paredzēts cilvēkiem, kas vada mazu lietotni un vēlas pārtraukt raizes par tās zaudēšanu. Piemēriem tiek izmantots Postgres, jo lielākā daļa AI veidotu lietotņu to izmanto, bet principi attiecas uz jebkuru datubāzi.
Ko dublējumam jāaptver
Lietotne ir vairāk nekā datubāze. Zināt, kuru daļu katrs dublējums aizsargā.
| Kas | Kur tas atrodas | Kā to dublēt |
|---|---|---|
| Kods | Projekta faili, Git | GitHub sinhronizācija vai projekta eksports |
| Dati (lietotāji, ieraksti) | Datubāze | Datubāzes dublējums pēc grafika |
| Augšupielādētie faili | Objektu glabātuve | Kopēt grozu vai glabāt oriģinālus citur |
| Noslēpumi un iestatījumi | Projekta iestatījumi, pakalpojumu sniedzēju paneļi | Paroļu pārvaldnieks, kas tiek atjaunināts |
Dati ir tā daļa, ko nevar atjaunot. Kodu var pārrakstīt, iestatījumus var ievadīt atkal; jūsu klientu pasūtījumus — nē.
1. solis: izlemiet, cik daudz varat zaudēt
Divi jautājumi nosaka jūsu dublēšanas plānu:
- Cik daudz nesenu datu varat atļauties zaudēt? Ja dublējat reizi dienā un datubāze avarē vakarā, zaudējat tās dienas izmaiņas. Hobija lietotnei tas ir labi. Lietotnei, kas pieņem pasūtījumus, varbūt ne.
- Cik ilgi lietotne var būt nepieejama atjaunošanas laikā? Maza datubāze atjaunojas minūtēs. Liela var aizņemt daudz ilgāk, un jūs to gribat zināt, pirms to vajag.
Vairumam mazu lietotņu sākumam pietiek ar ikdienas automātisku dublējumu plus manuālu pirms riskantām izmaiņām. Lietotnēm, kurās iesaistīta nauda vai veselības dati, vajag biežākus dublējumus vai pārvaldītu datubāzi ar punkta-laika atjaunošanu (iespēju atjaunot uz jebkuru brīdi, nevis tikai uz pēdējo dublējumu).
2. solis: pārbaudiet, ko jau dara jūsu hostings
Daudzi pārvaldītie datubāzu pakalpojumu sniedzēji veic automātiskus dublējumus. Noskaidrojiet:
- Vai dublēšana ir ieslēgta jūsu plānam un cik bieži tā notiek?
- Cik ilgi tie tiek glabāti?
- Vai varat atjaunot uz konkrētu brīdi vai tikai uz ikdienas momentuzņēmumu?
- Vai varat lejupielādēt dublējumu vai varat to atjaunot tikai viņu sistēmā?
Pakalpojumu sniedzēja dublējumi ir noderīgi, bet tie dala vienu kopīgu kļūmes punktu ar jūsu datubāzi: kontu. Ja konts tiek slēgts, apturēts vai projekts izdzēsts, dublējumi var pazust kopā ar to. Tāpēc jums vajag arī savu kopiju.
3. solis: izveidojiet dublējumu ar pg_dump
pg_dump eksportē Postgres datubāzi failā. Tas nolasa konsekventu momentuzņēmumu, tāpēc lietotne var turpināt darboties, kamēr tas strādā.
Tipiska komanda, izmantojot savienojuma virkni, ko jūsu lietotnei jau ir vides mainīgajā:
pg_dump "$DATABASE_URL" --format=custom --no-owner --file=backup-2026-09-29.dump
Ko dara opcijas:
--format=customraksta saspiestu failu, kopg_restorevar nolasīt, un ļauj vēlāk atjaunot atsevišķas tabulas. Izmantojiet--format=plain, ja vēlaties lasāmu.sqlfailu.--no-ownerizlaiž īpašnieka komandas, kas atvieglo atjaunošanu citā datubāzē.- Datums faila nosaukumā uztur dublējumus atsevišķus.
pg_dump versijai jābūt tādai pašai vai jaunākai par jūsu datubāzes Postgres versiju. Vecāka pg_dump var atteikties darboties.
Ja veidojat ar AI un nevēlaties strādāt ar komandrindu, varat lūgt:
Izveido lietotnes datubāzes dublējumu, izmantojot pg_dump pielāgotā formātā, ar šodienas datumu faila nosaukumā. Neizdrukā savienojuma virkni vai nekādu noslēpumu. Pasaki man faila nosaukumu un tā izmēru, kad tas būs gatavs.
4. solis: automatizējiet to
Manuālie dublējumi tiek aizmirsti. Automatizējiet tos ar to, ko atbalsta jūsu iestatījums:
- Jūsu datubāzes pakalpojumu sniedzēja plānotie dublējumi, ja tas piedāvā.
- Plānots uzdevums serverī vai CI pakalpojumā, kas palaiž
pg_dumpun augšupielādē failu glabātuvē. - Hostēts dublēšanas pakalpojums, kas savienojas ar jūsu datubāzi.
Kā arī izvēlaties, pārliecinieties, ka tas jums paziņo, kad dublēšana neizdodas. Dublēšanas uzdevums, kas klusi nedarbojas trīs mēnešus, ir klasiska šausmu stāsta tēma.
5. solis: glabājiet kopijas citur
Vienkārši noteikumi bieži tiek saukti par 3-2-1: trīs datu kopijas, divos dažādos glabāšanas veidos, viena ārpus vietas. Maza lietotnes praktiska versija ir:
- Aktīvā datubāze
- Pakalpojumu sniedzēja pašu automātiskie dublējumi
- Jūsu pašu dublējumi atsevišķā glabātuvē, piemēram, objektu glabātuves groziņā citā kontā
Tāpat:
- Ierobežojiet piekļuvi. Dublējumā ir katra lietotāja dati. Izturieties pret to kā pret aktīvo datubāzi.
- Turiet saglabāšanas politiku. Piemēram, ikdienas dublējumi divas nedēļas un ikmēneša — gadu. Dzēsiet vecos apzināti, un atcerieties, ka privātuma likumi var prasīt dzēst personas datus pēc pieprasījuma.
- Nekad neiekļaujiet dublējumus Git. Dublējums repozitorijā ir datu noplūde, kas gaida notikumu.
6. solis: pārbaudiet atjaunošanu
Dublējums ir tikpat labs, cik jūsu pēdējā veiksmīgā atjaunošana. Vismaz ik pa dažiem mēnešiem un pēc jebkuras dublēšanas procesa izmaiņas:
- Izveidojiet jaunu, tukšu datubāzi. Nekad neatjaunojiet pār aktīvo, lai testētu.
- Atjaunojiet jaunāko dublējumu tajā:
pg_restore --no-owner --dbname="$TEST_DATABASE_URL" backup-2026-09-29.dump
Vienkāršam .sql failam izmantojiet psql "$TEST_DATABASE_URL" -f backup.sql.
- Pārbaudiet, vai katra tabula eksistē, salīdziniet rindu skaitus ar aktīvo datubāzi un paskatieties dažus pēdējos ierakstus.
- Palaidiet lietotnes kopiju ar to un pierakstieties, ja varat.
- Pierakstiet, cik ilgi atjaunošana prasīja. Tas ir jūsu īstais atjaunošanas laiks.
7. solis: dublējiet pirms riskantām izmaiņām
Veiciet jaunu dublējumu tieši pirms:
- Datubāzes migrācijas, kas dzēš vai pārdēvē kolonnas
- Lielapjoma datu importa
- Ļaut AI aģentam veikt lielas izmaiņas datu modelī
- Veco ierakstu dzēšanas
AI veidotā lietotnē aģents var mainīt tabulu struktūru kā daļu no funkcijas. Kontrolpunkti un versiju kontrole atgriež jūsu kodu, bet tie neatceļ rindu dzēšanu. Trīsdesmit sekunžu dublējums pirms lielām izmaiņām ir lēta apdrošināšana.
Biežākās kļūdas
- Pieņemt, ka Git vai koda eksports ir dublējums. Tajā ir kods, nevis dati.
- Nekad netestēt atjaunošanu. Daudzi dublējumi izrādās tukši, daļēji vai nelasāmi tieši tad, kad tie vajadzīgi.
- Dublējumu glabāšana tajā pašā kontā, kur datubāze. Viens apdraudēts vai slēgts konts zaudē abus.
- Aizmirst augšupielādētos failus. Datubāze glabā faila ceļu; pats attēls atrodas glabātuvē.
- Noslēpumu atstāšana dublēšanas skriptos. Lasiet savienojuma virkni no vides mainīgā, nekad no skripta teksta. Skatiet kā sargāt API atslēgas.
Dublēšana un Mythex
Mythex projektiem var būt atsevišķa Postgres datubāze, un tās savienojuma dati tiek ievietoti darbtelpā un publicētajā lietotnē. Mythex dokumentācijā nav aprakstīta datubāzes dublēšanas vai atjaunošanas funkcija, tāpēc plānojiet savu: lūdziet aģentam izveidot dumpu, lejupielādējiet to un glabājiet drošā vietā, it īpaši pirms lielām izmaiņām. Projekta eksports (Pro) satur jūsu kodu bez noslēpumiem un node_modules; tajā nav datubāzes ierakstu. Skatiet Datubāze un Datu īpašumtiesības dokumentācijā. Vairāk par pašu datubāzi lasiet kas ir Postgres.
Dublēšanas kontrolsaraksts
- Noteikts, cik daudz datu varat atļauties zaudēt un cik ilgi varat būt nepieejams
- Pārbaudīts, ko datubāzes hostings nodrošina automātiski
- Jūsu pašu dublējums darbojas pēc grafika, un neveiksmes jūs brīdina
- Kopijas glabājas atsevišķi no datubāzes, ar ierobežotu piekļuvi
- Saglabāšanas politika ir uzrakstīta
- Augšupielādētie faili ir dublēti kopā ar datubāzi
- Atjaunošana ir pārbaudīta tukšā datubāzē, un rindu skaiti ir pārbaudīti
- Dublējums veikts pirms katras riskantas izmaiņas
Jautājumi
Cik bieži man vajadzētu dublēt lietotnes datubāzi?
Saskaņojiet to ar to, cik daudz datu varat atļauties zaudēt. Vairumam mazu lietotņu saprātīgs minimums ir ikdienas automātiska dublēšana un papildus manuāla dublēšana pirms riskantām izmaiņām, piemēram, migrācijas, importa vai lielas jaunas funkcijas.
Vai lietotnes koda eksportēšana ir tas pats, kas datu dublēšana?
Nē. Koda eksports vai GitHub repozitorijs satur lietotnes failus, nevis rindas jūsu datubāzē. Jūsu lietotāji, pasūtījumi un ieraksti dzīvo datubāzē, un tiem vajag atsevišķu dublējumu.
Kas ir pg_dump?
pg_dump ir standarta komandrindas rīks, kas nāk kopā ar Postgres datubāzes eksportēšanai failā. Tas var rakstīt vienkāršu SQL vai saspiestu pielāgotu formātu, un atbilstošie atjaunošanas rīki ir psql SQL failiem un pg_restore pielāgotajam formātam.
Kā es zinu, ka mans dublējums darbojas?
Atjaunojiet to. Ielādējiet dublējumu atsevišķā, tukšā datubāzē un pārbaudiet, vai tabulas eksistē un rindu skaiti un daži pēdējie ieraksti sakrīt ar aktīvajiem datiem. Dublējums, ko nekad neesat atjaunojis, ir minējums.
Kur man vajadzētu glabāt datubāzes dublējumus?
Atsevišķi no pašas datubāzes, ideālā gadījumā pie cita pakalpojumu sniedzēja vai konta, un piekļuve ir ierobežota tikai jums. Dublējumos ir visi jūsu lietotāju dati, tāpēc tos jāapstrādā tikpat rūpīgi kā aktīvo datubāzi.