En aquest tema, aprendrem com realitzar còpies de seguretat i restaurar bases de dades en PostgreSQL. Aquestes operacions són essencials per garantir la integritat i la disponibilitat de les dades en cas de fallades del sistema, errors humans o altres incidents imprevistos.
Continguts
Introducció a les còpies de seguretat i restauració
Les còpies de seguretat són essencials per protegir les dades contra pèrdues. PostgreSQL ofereix diverses eines i mètodes per realitzar còpies de seguretat i restaurar-les. Els dos mètodes principals són:
- pg_dump: Utilitzat per fer còpies de seguretat lògiques.
- pg_basebackup: Utilitzat per fer còpies de seguretat físiques.
Tipus de còpies de seguretat
Còpies de seguretat lògiques
Les còpies de seguretat lògiques exporten les dades en un format que pot ser interpretat per PostgreSQL. Aquestes còpies es poden realitzar a nivell de taula, esquema o base de dades completa.
-
Avantatges:
- Portabilitat: Les còpies de seguretat es poden restaurar en qualsevol instància de PostgreSQL.
- Flexibilitat: Permet seleccionar taules o esquemes específics.
-
Desavantatges:
- Pot ser més lent per a bases de dades grans.
- No inclou configuracions del sistema ni extensions.
Còpies de seguretat físiques
Les còpies de seguretat físiques copien els fitxers de dades directament del sistema de fitxers.
-
Avantatges:
- Ràpid per a bases de dades grans.
- Inclou totes les configuracions del sistema i extensions.
-
Desavantatges:
- No és tan portable com les còpies de seguretat lògiques.
- Requereix que la base de dades estigui en un estat consistent.
Realitzant una còpia de seguretat
Utilitzant pg_dump
pg_dump
és una eina de línia de comandes que permet fer còpies de seguretat lògiques de bases de dades PostgreSQL.
Exemple de còpia de seguretat d'una base de dades completa
-U
: Especifica l'usuari de PostgreSQL.-W
: Demana la contrasenya.-F c
: Especifica el format de la còpia de seguretat (c per a format personalitzat).-b
: Inclou grans objectes.-v
: Mode verbós.-f
: Especifica el fitxer de sortida.
Utilitzant pg_basebackup
pg_basebackup
és una eina de línia de comandes per fer còpies de seguretat físiques.
Exemple de còpia de seguretat física
-D
: Especifica el directori de destinació.-Ft
: Especifica el format tar.-z
: Comprimeix la còpia de seguretat.-P
: Mostra el progrés.-U
: Especifica l'usuari de PostgreSQL.
Restauració d'una còpia de seguretat
Utilitzant pg_restore
pg_restore
és una eina de línia de comandes per restaurar còpies de seguretat fetes amb pg_dump
.
Exemple de restauració d'una còpia de seguretat
-U
: Especifica l'usuari de PostgreSQL.-d
: Especifica la base de dades de destinació.-v
: Mode verbós.
Restauració d'una còpia de seguretat física
Per restaurar una còpia de seguretat física, cal aturar el servidor PostgreSQL, reemplaçar els fitxers de dades amb la còpia de seguretat i reiniciar el servidor.
Exemple de restauració física
# Atura el servidor PostgreSQL pg_ctl stop -D /ruta/a/la/base_de_dades # Reemplaça els fitxers de dades amb la còpia de seguretat rm -rf /ruta/a/la/base_de_dades/* tar -xvf /ruta/a/la/copia_de_seguretat.tar -C /ruta/a/la/base_de_dades # Reinicia el servidor PostgreSQL pg_ctl start -D /ruta/a/la/base_de_dades
Errors comuns i consells
- Error: "pg_dump: error: connection to database failed": Assegura't que el servidor PostgreSQL està en funcionament i que les credencials són correctes.
- Error: "pg_restore: error: could not execute query": Verifica que la base de dades de destinació existeix i que l'usuari té els permisos necessaris.
- Consell: Realitza còpies de seguretat regulars i emmagatzema-les en ubicacions segures i redundants.
Exercicis pràctics
-
Còpia de seguretat lògica:
- Realitza una còpia de seguretat lògica de la base de dades
empresa
utilitzantpg_dump
. - Restaura la còpia de seguretat en una nova base de dades anomenada
empresa_backup
.
- Realitza una còpia de seguretat lògica de la base de dades
-
Còpia de seguretat física:
- Realitza una còpia de seguretat física de la base de dades
empresa
utilitzantpg_basebackup
. - Restaura la còpia de seguretat física en una nova ubicació i reinicia el servidor PostgreSQL.
- Realitza una còpia de seguretat física de la base de dades
Solucions
-
Còpia de seguretat lògica:
# Realitza la còpia de seguretat pg_dump -U usuari -W -F c -b -v -f /ruta/a/empresa.backup empresa # Crea la nova base de dades createdb -U usuari empresa_backup # Restaura la còpia de seguretat pg_restore -U usuari -d empresa_backup -v /ruta/a/empresa.backup
-
Còpia de seguretat física:
# Realitza la còpia de seguretat pg_basebackup -D /ruta/a/empresa_backup -Ft -z -P -U usuari # Atura el servidor PostgreSQL pg_ctl stop -D /ruta/a/la/base_de_dades # Reemplaça els fitxers de dades amb la còpia de seguretat rm -rf /ruta/a/la/base_de_dades/* tar -xvf /ruta/a/empresa_backup.tar -C /ruta/a/la/base_de_dades # Reinicia el servidor PostgreSQL pg_ctl start -D /ruta/a/la/base_de_dades
Conclusió
En aquesta secció, hem après com realitzar còpies de seguretat i restaurar bases de dades en PostgreSQL utilitzant pg_dump
i pg_basebackup
. Hem explorat els avantatges i desavantatges de les còpies de seguretat lògiques i físiques, i hem practicat amb exemples concrets. Aquestes habilitats són crucials per garantir la seguretat i la disponibilitat de les dades en qualsevol entorn de producció.
Curs de PostgreSQL
Mòdul 1: Introducció a PostgreSQL
Mòdul 2: Operacions bàsiques de SQL
Mòdul 3: Consultes SQL avançades
Mòdul 4: Disseny de bases de dades i normalització
Mòdul 5: Funcionalitats avançades de PostgreSQL
Mòdul 6: Optimització i millora del rendiment
- Optimització de consultes
- Estratègies d'indexació
- Analitzant el rendiment de les consultes
- Vacuuming i manteniment
Mòdul 7: Seguretat i gestió d'usuaris
- Rols d'usuari i permisos
- Mètodes d'autenticació
- Encriptació de dades
- Còpia de seguretat i restauració
Mòdul 8: Treballant amb JSON i funcionalitats NoSQL
Mòdul 9: Extensions i eines avançades
- PostGIS per a dades geoespacials
- Cerca de text complet
- Wrappers de dades externes
- PL/pgSQL i altres llenguatges procedimentals