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

pg_dump -U usuari -W -F c -b -v -f /ruta/a/la/copia_de_seguretat.backup nom_de_la_base_de_dades
  • -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

pg_basebackup -D /ruta/a/la/copia_de_seguretat -Ft -z -P -U usuari
  • -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

pg_restore -U usuari -d nom_de_la_base_de_dades -v /ruta/a/la/copia_de_seguretat.backup
  • -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

  1. Còpia de seguretat lògica:

    • Realitza una còpia de seguretat lògica de la base de dades empresa utilitzant pg_dump.
    • Restaura la còpia de seguretat en una nova base de dades anomenada empresa_backup.
  2. Còpia de seguretat física:

    • Realitza una còpia de seguretat física de la base de dades empresa utilitzant pg_basebackup.
    • Restaura la còpia de seguretat física en una nova ubicació i reinicia el servidor PostgreSQL.

Solucions

  1. 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
    
  2. 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

Mòdul 7: Seguretat i gestió d'usuaris

Mòdul 8: Treballant amb JSON i funcionalitats NoSQL

Mòdul 9: Extensions i eines avançades

Mòdul 10: Estudis de cas i aplicacions del món real

© Copyright 2024. Tots els drets reservats