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.