Kopia zapasowa i przywracanie bazy danych PostgreSQL i MySQL | INTROSERV
EUR
european

EUR

usa

USD

Poland Pl
Ex. VAT Ex. VAT 0%

Kopia zapasowa i przywracanie bazy danych PostgreSQL i MySQL

Kopia zapasowa jest jednym z kluczowych procedur zapewniających bezpieczeństwo danych. Nawet przy niezawodnym hostingu mogą wystąpić błędy aplikacji, nieprawidłowe aktualizacje lub przypadkowe usunięcie danych.

W tym przewodniku pokażemy, jak tworzyć i przywracać kopie zapasowe baz danych PostgreSQL i MySQL za pomocą standardowych narzędzi wiersza poleceń — pg_dump i mysqldump.

1. Kopia zapasowa PostgreSQL

1.1. Co to jest pg_dump

pg_dump to standardowe narzędzie PostgreSQL do tworzenia logicznej kopii zapasowej bazy danych. Zapisuje zarówno strukturę (DDL), jak i dane (DML) do pliku tekstowego SQL, który można później użyć do przywracania.

1.2. Składnia polecenia

pg_dump -U <user> -h <host> -p <port> -d <database> -F p -f <path_to_file.sql>

1.3. Przykład kopii zapasowej

pg_dump -U myuser -h localhost -d mydatabase -F p -f /backups/mydatabase_$(date +%F).sql

Wyjaśnienie parametrów:

  • -U myuser — nazwa użytkownika PostgreSQL;
  • -h localhost — host serwera (można podać IP);
  • -d mydatabase — nazwa bazy danych;
  • -F p — format wyjściowy (plain — zwykły SQL);
  • -f — ścieżka do pliku, w którym zostanie zapisana kopia zapasowa;
  • $(date +%F) — dodaje bieżącą datę do nazwy pliku (np. 2025-11-03).

1.4. Skompresowana kopia zapasowa

Aby zmniejszyć rozmiar pliku, można użyć kompresji gzip:

pg_dump -U myuser mydatabase | gzip > /backups/mydatabase_$(date +%F).sql.gz

2. Przywracanie bazy danych PostgreSQL

2.1. Użycie psql

Aby przywrócić bazę danych z kopii zapasowej tekstowej, użyj:

psql -U myuser -d mydatabase -f /backups/mydatabase_2025-11-03.sql

Jeśli kopia zapasowa jest skompresowana:

gunzip -c /backups/mydatabase_2025-11-03.sql.gz | psql -U myuser -d mydatabase

2.2. Jeśli baza danych nie istnieje

Najpierw utwórz nową bazę danych:

createdb -U myuser newdatabase

psql -U myuser -d newdatabase -f /backups/mydatabase_2025-11-03.sql

3. Kopia zapasowa MySQL

3.1. Co to jest mysqldump

mysqldump to standardowe narzędzie do tworzenia zrzutów MySQL. Zapisuje polecenia SQL potrzebne do odtworzenia tabel i wstawienia danych.

3.2. Składnia polecenia

mysqldump -u <user> -p -h <host> <database> > <path_to_file.sql>

3.3. Przykład kopii zapasowej

mysqldump -u myuser -p mydatabase > /backups/mydatabase_$(date +%F).sql

Wyjaśnienie parametrów:

  • -u myuser — nazwa użytkownika MySQL;
  • -p — prosi o hasło;
  • mydatabase — nazwa bazy danych;
  • > — przekierowuje wyjście do pliku.

3.4. Skompresowany zrzut

mysqldump -u myuser -p mydatabase | gzip > /backups/mydatabase_$(date +%F).sql.gz

4. Przywracanie bazy danych MySQL

4.1. Przywracanie z pliku SQL

mysql -u myuser -p mydatabase < /backups/mydatabase_2025-11-03.sql

4.2. Jeśli baza danych nie istnieje

Utwórz nową bazę danych przed przywróceniem:

mysql -u myuser -p -e "CREATE DATABASE newdatabase;"

mysql -u myuser -p newdatabase < /backups/mydatabase_2025-11-03.sql

4.3. Przywracanie ze skompresowanego zrzutu

gunzip -c /backups/mydatabase_2025-11-03.sql.gz | mysql -u myuser -p mydatabase

5. Automatyzacja i zalecenia dotyczące bezpieczeństwa

5.1. Automatyczne kopie zapasowe z Cron

Aby regularnie wykonywać kopie zapasowe bez interwencji manualnej, skonfiguruj automatyzację za pomocą cron.

Podstawowa konfiguracja cron:

# Otwórz edytor cron crontab -e

Dodaj linię, na przykład:

0 2 * * * /usr/local/bin/db_backup.sh

To polecenie uruchomi skrypt codziennie o 2:00 rano.

Zaawansowane podejście z użyciem skryptu. Utwórz /usr/local/bin/db_backup.sh:

#!/bin/bash DATE=$(date +%F) BACKUP_DIR="/backup/$DATE" mkdir -p $BACKUP_DIR # Kopia zapasowa PostgreSQL pg_dump -U myuser mydatabase | gzip > $BACKUP_DIR/postgres_mydatabase.sql.gz # Kopia zapasowa MySQL mysqldump -u myuser -p mydatabase | gzip > $BACKUP_DIR/mysql_mydatabase.sql.gz # Usuń kopie zapasowe starsze niż 7 dni find /backup/ -type f -mtime +7 -delete

Uczyń skrypt wykonywalnym:

chmod +x /usr/local/bin/db_backup.sh

I dodaj do cron:

0 2 * * * /usr/local/bin/db_backup.sh

5.2. Zalecenia dotyczące bezpieczeństwa i przechowywania

  • Przechowywanie poza serwerem: przechowuj kopie zapasowe w chmurze (AWS S3, Google Cloud) lub na zewnętrznych dyskach.
  • Kontrola dostępu: ogranicz dostęp do folderu /backups, ponieważ pliki mogą zawierać poufne dane.

chmod 700 /backup

chmod 600 /backup/*.sql.gz

  • Weryfikacja integralności: przeprowadzaj testowe przywracanie co miesiąc, aby zweryfikować funkcjonalność kopii zapasowej.
  • Poufność: pliki kopii zapasowych zawierają zawartość bazy danych — traktuj je jako poufne informacje.

Podsumowanie

Użycie pg_dump i mysqldump to łatwy, niezawodny i uniwersalny sposób na tworzenie kopii zapasowych baz danych PostgreSQL i MySQL. Narzędzia te nadają się zarówno do ręcznych kopii zapasowych, jak i zautomatyzowanych procesów przy minimalnym wysiłku.

Regularne kopie zapasowe są kluczem do stabilności projektu i bezpieczeństwa danych.

VAT

  • Other

    Ex. VAT

    0%
  • austria

    Austria

    20%
  • Belgium

    Belgium

    21%
  • Bulgaria

    Bulgaria

    20%
  • Croatia

    Croatia

    25%
  • Cyprus

    Cyprus

    19%
  • Czech Republic

    Czech Republic

    21%
  • Denmark

    Denmark

    25%
  • Estonia

    Estonia

    22%
  • France

    France

    20%
  • Finland

    Finland

    24%
  • Germany

    Germany

    19%
  • Greece

    Greece

    24%
  • Hungary

    Hungary

    27%
  • Ireland

    Ireland

    23%
  • Italy

    Italy

    22%
  • Latvia

    Latvia

    21%
  • Lithuania

    Lithuania

    21%
  • Luxembourg

    Luxembourg

    17%
  • Malta

    Malta

    18%
  • Netherlands

    Netherlands

    21%
  • Poland

    Poland

    23%
  • Portugal

    Portugal

    23%
  • Romania

    Romania

    19%
  • Slovakia

    Slovakia

    20%
  • Slovenia

    Slovenia

    22%
  • Spain

    Spain

    21%
  • Sweden

    Sweden

    25%
  • USA

    USA

    0%
european
states
  • germany
  • Español
  • Italiano
  • Poland
  • Русский
  • Slovenski
  • Türkçe
  • ukraine
  • kingdom
  • French
  • Hrvatska
  • Other
  • Austria
  • Belgium
  • Bulgaria
  • Croatia
  • Cyprus
  • Czech Republic
  • Denmark
  • Estonia
  • Finland
  • France
  • Germany
  • Greece
  • Hungary
  • Ireland
  • Italy
  • Latvia
  • Lithuania
  • Luxembourg
  • Malta
  • Netherlands
  • Poland
  • Portugal
  • Romania
  • Slovakia
  • Slovenia
  • Spain
  • Sweden
  • USA