Kuinka varmuuskopioida ja palauttaa PostgreSQL-tietokanta


Tuotantoympäristössä olipa PostgreSQL-tietokanta kuinka suuri tai pieni tahansa, säännöllinen varmuuskopiointi on olennainen osa tietokannan hallintaa. Tässä artikkelissa opit varmuuskopioimaan ja palauttamaan PostgreSQL-tietokannan.

Oletamme, että sinulla on jo toimiva PostgreSQL-tietokantajärjestelmän asennus. Jos ei, lue seuraavat artikkelimme asentaaksesi PostgreSQL Linux-jakeluusi.

Aloitetaan…

Varmuuskopioi yksi PostgreSQL-tietokanta

PostgreSQL tarjoaa pg_dump-apuohjelman, joka auttaa sinua varmuuskopioimaan tietokannat. Se luo tietokantatiedoston SQL-komennoilla muodossa, joka voidaan helposti palauttaa tulevaisuudessa.

Varmuuskopioi PostgreSQL-tietokanta kirjautumalla ensin tietokantapalvelimellesi, siirtymällä sitten Postgres-käyttäjätiliin ja suorittamalla pg_dump seuraavasti. (korvaa tecmintdb sen tietokannan nimellä, jonka haluat varmuuskopioida). Tulostusmuoto on oletusarvoisesti pelkkää tekstiä sisältävä SQL-skriptitiedosto.

pg_dump tecmintdb > tecmintdb.sql

pg_dump tukee myös muita tulostusmuotoja. Voit määrittää tulostusmuodon -F-vaihtoehdolla, jossa c tarkoittaa mukautetun muotoista arkistotiedostoa, d tarkoittaa hakemistomuotoista arkistoa ja >t tarkoittaa tar-muotoista arkistotiedostoa: kaikki muodot soveltuvat syötettäväksi pg_restore-tiedostoon.

Esimerkiksi:

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

Jos haluat tyhjentää tulosteen hakemiston tulostusmuodossa, käytä -f-lippua (jota käytetään tulostiedoston määrittämiseen) määrittääksesi kohdehakemiston tiedoston sijaan. Hakemistoa, jonka pg_dump luo, ei saa olla olemassa.

pg_dump -F d tecmintdb -f tecmintdumpdir	

Varmuuskopioi kaikki PostgreSQL-tietokannat pg_dumpall-työkalulla kuvan mukaisesti.

pg_dumpall > all_pg_dbs.sql

Voit palauttaa vedoksen käyttämällä psql -ohjelmaa kuvan mukaisesti.

psql -f all_pg_dbs.sql postgres

PostgreSQL-tietokannan palauttaminen

Voit palauttaa PostgreSQL-tietokannan psql- tai pg_restore-apuohjelmilla. psql:ää käytetään palauttamaan pg_dump:n luomia tekstitiedostoja, kun taas pg_restore käytetään PostgreSQL-tietokannan palauttamiseen pg_dump< luomasta arkistosta. jossakin muussa kuin pelkässä tekstimuodossa (mukautettu, tar tai hakemisto).

Tässä on esimerkki pelkän tekstin tiedostovedosten palauttamisesta:

psql tecmintdb < tecmintdb.sql

Kuten edellä mainittiin, mukautetun muotoinen vedos ei ole psql-skripti, joten se on palautettava komennolla pg_restore kuvan mukaisesti.

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

Pakattu PostgreSQL-tietokannan varmuuskopio

Jos varmuuskopioitava tietokanta on suuri ja haluat luoda melko pienemmän tulostiedoston, voit suorittaa pakatun vedostiedoston, jossa sinun on suodatettava pg_dump-tulostus pakkaustyökalulla, kuten gzip. tai mikä tahansa suosikkisi:

pg_dump tecmintdb | gzip > tecmintdb.gz

Jos tietokanta on erittäin suuri, voit vedota samanaikaisesti poistamalla töiden_määrä-taulukot samanaikaisesti käyttämällä -j-lippua kuvan mukaisesti.

pg_dump -F d -j 5 -f tecmintdumpdir

On tärkeää huomata, että rinnakkaisvedosvaihtoehto lyhentää dumpin aikaa, mutta toisaalta se lisää myös tietokantapalvelimen kuormitusta.

Varmuuskopioi PostgreSQL-etätietokannat

pg_dump on tavallinen PostgreSQL-asiakastyökalu, joka tukee toimintoja etätietokantapalvelimissa. Jos haluat määrittää etätietokantapalvelimen pg_dump:n tulee ottaa yhteyttä, käytä komentorivin valintoja -h määrittääksesi etäisäntä ja -p määrittää etäpalvelimen. portti, jota tietokantapalvelin kuuntelee. Lisäksi käytä -U-lippua määrittääksesi tietokannan roolin nimi, jolla yhteys muodostetaan.

Muista korvata 10.10.20.10 ja 5432 ja tecmintdb etäisännän IP-osoitteella tai isäntänimellä, tietokantaportilla ja tietokannan nimellä.

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

Varmista, että etäyhteyden muodostavalla käyttäjällä on tarvittavat oikeudet käyttää tietokantaa ja että tietokantapalvelimessa on määritetty asianmukainen tietokannan todennusmenetelmä, muuten saat seuraavan kuvakaappauksen kaltaisen virheilmoituksen.

On myös mahdollista kopioida tietokanta suoraan palvelimelta toiselle käyttämällä pg_dump- ja psql-apuohjelmia kuvan mukaisesti.

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

PostgreSQL-tietokannan automaattinen varmuuskopiointi Cron-työn avulla

Voit tehdä varmuuskopioita säännöllisin väliajoin cron-töiden avulla. Cron-työt ovat yleisesti käytetty tapa ajoittaa erilaisia tehtäviä suoritettavaksi palvelimella.

Voit määrittää cron-työn automatisoimaan PostgreSQL-tietokannan varmuuskopioinnin seuraavasti. Huomaa, että sinun on suoritettava seuraavat komennot PostgreSQL-pääkäyttäjänä:

mkdir -p /srv/backups/databases

Suorita seuraavaksi seuraava komento muokataksesi crontabia lisätäksesi uuden cron-työn.

crontab -e

Kopioi ja liitä seuraava rivi crontabin loppuun. Voit käyttää mitä tahansa yllä kuvatuista vedosmuodoista.

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

Tallenna tiedosto ja poistu.

Cron-palvelu aloittaa automaattisesti tämän uuden työn suorittamisen ilman uudelleenkäynnistystä. Ja tämä cron-työ suoritetaan joka päivä keskiyöllä, se on vähimmäisratkaisu varmuuskopiointitehtävään.

Lisätietoja cron-töiden ajoittamisesta on kohdassa Cron-töiden luominen ja hallinta Linuxissa

Siinä se toistaiseksi! On hyvä idea tehdä tietojen varmuuskopioinnista osa tietokannan hallintarutiiniasi. Voit ottaa meihin yhteyttä, jos sinulla on kysyttävää tai kommentteja, käytä alla olevaa palautelomaketta. Lisätietoja on pg_dump- ja pg_restore-viitesivuilla.