Kā dublēt un atjaunot PostgreSQL datu bāzi


Ražošanas vidē neatkarīgi no tā, cik liela vai maza ir jūsu PostgreSQL datu bāze, regulāra aizmugure ir būtisks datu bāzes pārvaldības aspekts. Šajā rakstā jūs uzzināsiet, kā dublēt un atjaunot PostgreSQL datu bāzi.

Mēs pieņemam, ka jums jau darbojas PostgreSQL datu bāzes sistēmas instalācija. Ja nē, izlasiet mūsu tālāk minētos rakstus, lai instalētu PostgreSQL savā Linux izplatīšanā.

  • Kā instalēt PostgreSQL un pgAdmin4 Ubuntu 20.04
  • Kā instalēt PostgreSQL un pgAdmin CentOS 8
  • Kā instalēt PostgreSQL un pgAdmin RHEL 8

Sāksim…

Dublējiet vienu PostgreSQL datu bāzi

PostgreSQL nodrošina utilītu pg_dump, kas palīdzēs jums dublēt datu bāzes. Tas ģenerē datu bāzes failu ar SQL komandām tādā formātā, kuru nākotnē var viegli atjaunot.

Lai dublētu PostgreSQL datu bāzi, vispirms piesakieties savā datu bāzes serverī, pēc tam pārslēdzieties uz Postgres lietotāja kontu un palaidiet pg_dump šādi (aizstājiet tecmintdb ar tās datu bāzes nosaukumu, kuru vēlaties dublēt). . Pēc noklusējuma izvades formāts ir vienkārša teksta SQL skripta fails.

$ pg_dump tecmintdb > tecmintdb.sql

Pg_dump atbalsta arī citus izvades formātus. Izvades formātu var norādīt, izmantojot opciju -F , kur c nozīmē pielāgota formāta arhīva failu, d nozīmē direktorija formāta arhīvu un t nozīmē darvas formāta arhīva failu: visi formāti ir piemēroti ievadīšanai pg_restore.

Piemēram:

$ pg_dump -F c tecmintdb > tecmintdb.dump
OR
$ pg_dump -F t tecmintdb > tecmintdb.tar

Lai izvadītu direktoriju izejas formātā, izmantojiet karodziņu -f (ko izmanto izvades faila noteikšanai), lai faila vietā norādītu mērķa direktoriju. Direktorija, kuru izveidos pg_dump, nedrīkst būt.

$ pg_dump -F d tecmintdb -f tecmintdumpdir	

Lai dublētu visas PostgreSQL datu bāzes, izmantojiet rīku pg_dumpall, kā parādīts.

$ pg_dumpall > all_pg_dbs.sql

Izgāztuvi var atjaunot, izmantojot psql, kā parādīts.

$ pgsql -f all_pg_dbs.sql postgres

PostgreSQL datu bāzes atjaunošana

Lai atjaunotu PostgreSQL datu bāzi, varat izmantot utilītus psql vai pg_restore. psql tiek izmantots, lai atjaunotu pg_dump izveidotos teksta failus, savukārt pg_restore tiek izmantots, lai atjaunotu PostgreSQL datu bāzi no pg_dump izveidota arhīva vienā no teksta formātiem (pielāgots, darva vai direktorijs).

Šeit ir piemērs, kā atjaunot vienkārša teksta faila izgāztuvi:

$ psql tecmintdb < tecmintdb.sql

Kā minēts iepriekš, pielāgota formāta dump nav pgsql skripts, tāpēc tas ir jāatjauno ar pg_restore, kā parādīts.

$ pg_restore -d tecmintdb tecmintdb.dump
OR
$ pg_restore -d tecmintdb tecmintdb.tar
OR
$ pg_restore -d tecmintdb tecmintdumpdir	

Dublēt lielas PostgreSQL datu bāzes

Ja datu bāze, kuru dublējat, ir liela un vēlaties izveidot diezgan mazāku izvades failu, varat palaist saspiestu izgāztuvi, kur jāfiltrē pg_dump izvade, izmantojot saspiešanas rīku, piemēram, gzip vai jebkuru no jūsu iecienītākajām:

$ pg_dump tecmintdb | gzip > tecmintdb.gz

Ja datu bāze ir ārkārtīgi liela, varat vienlaikus veikt izgāšanu, vienlaikus izmetot tabulas number_of_jobs, izmantojot karodziņu -j , kā parādīts.

$ pg_dump -F d -j 5 -f tecmintdumpdir

Ir svarīgi atzīmēt, ka paralēlās dump iespējas samazina izgāztuves laiku, bet, no otras puses, tas palielina arī datu bāzes servera slodzi.

Dublēt attālās PostgreSQL datu bāzes

pg_dump ir parasts PostgreSQL klienta rīks, tas atbalsta darbības attālās datu bāzes serveros. Lai norādītu attālās datu bāzes serveri, kuram jāsazinās ar pg_dump, izmantojiet komandrindas opcijas -h , lai norādītu attālo resursdatoru, un -p norāda attālo portu, kuru datu bāzes serveris klausās. . Turklāt izmantojiet karodziņu -U , lai norādītu datu bāzes lomas nosaukumu, ar kuru izveidot savienojumu.

Neaizmirstiet aizstāt 10.10.20.10 un 5432 un tecmintdb ar attālās resursdatora IP adresi vai resursdatora nosaukumu, attiecīgi datu bāzes portu un datu bāzes nosaukumu.

$ pg_dump -U tecmint -h 10.10.20.10 -p 5432 tecmintdb > tecmintdb.sql

Pārliecinieties, vai lietotājam, kurš savieno attālināti, ir nepieciešamās privilēģijas, lai piekļūtu datu bāzei, un datu bāzes serverī ir konfigurēta atbilstoša datu bāzes autentifikācijas metode, pretējā gadījumā jūs saņemsit kļūdu, piemēram, tādu, kas parādīta nākamajā ekrānuzņēmumā.

Ir iespējams arī izmest datubāzi tieši no viena servera uz citu, izmantot utilītprogrammas pg_dump un psql, kā parādīts.

$ pg_dump -U tecmint -h 10.10.20.10 tecmintdb | pqsl -U tecmint -h 10.10.20.30 tecmintdb

Automātiskā dublēšana PostgreSQL datu bāze, izmantojot Cron darbu

Izmantojot cron darbus, regulāri var veikt dublēšanu. Cron uzdevumi ir bieži izmantots līdzeklis, lai ieplānotu dažāda veida uzdevumus darbam serverī.

Cron darbu, lai automatizētu PostgreSQL datu bāzes dublēšanu, varat konfigurēt šādi. Ņemiet vērā, ka jums ir jāizpilda šādas komandas kā PostgreSQL superlietotājam:

$ mkdir -p /srv/backups/databases

Pēc tam palaidiet šo komandu, lai rediģētu crontab, lai pievienotu jaunu cron darbu.

$ crontab -e

Nokopējiet un ielīmējiet nākamo rindiņu crontab beigās. Varat izmantot jebkuru no iepriekš paskaidrotajiem izgāšanas formātiem.

0 0 * * *  pg_dump  -U postgres tecmintdb > /srv/backups/postgres/tecmintdb.sql

Saglabājiet failu un izejiet.

Cron serviss automātiski sāks palaist šo jauno darbu bez restartēšanas. Un šis cron darbs darbosies katru dienu pusnaktī, tas ir minimālais rezerves uzdevuma risinājums.

Lai iegūtu papildinformāciju par cron darbu plānošanu, skatiet: Kā izveidot un pārvaldīt Cron Jobs operētājsistēmā Linux

Pagaidām tas ir viss! Ir ieteicams datu dublēšanu padarīt par daļu no datu bāzes pārvaldības rutīnas. Lai sazinātos ar mums par jautājumiem vai komentāriem, izmantojiet tālāk sniegto atsauksmju veidlapu. Lai iegūtu papildinformāciju, skatiet pg_restore atsauces lapas.