Tworzenie kopii zapasowych baz danych PostgreSQL/MySQL w chmurze | INTROSERV
EUR
european

EUR

usa

USD

Poland Pl
Ex. VAT Ex. VAT 0%

Tworzenie kopii zapasowych baz danych PostgreSQL/MySQL w chmurze

Wprowadzenie

Tworzenie kopii zapasowych baz danych jest jedną z najważniejszych procedur zapewniających bezpieczeństwo i niezawodność stron internetowych oraz aplikacji. Utrata danych może wynikać z wielu przyczyn: awarii serwera, błędu administratora, problemów z aktualizacją, złośliwego oprogramowania lub po prostu ludzkiego błędu. Regularne tworzenie kopii zapasowych pozwala na szybkie przywrócenie projektu bez utraty danych.

W niniejszym przewodniku wyjaśniono, jak wykonać kopię zapasową baz danych PostgreSQL i MySQL, jak przechowywać kopie zapasowe na zdalnym serwerze z systemem Linux przy użyciu rsync lub scp oraz jak przesłać je do magazynu w chmurze za pomocą rclone.

Kopia zapasowa PostgreSQL

PostgreSQL udostępnia standardowe narzędzie pg_dump, które pozwala utworzyć pełną kopię bazy danych w postaci pliku SQL.

Przykład tworzenia kopii zapasowej:

pg_dump -U myuser -h localhost mydatabase > /backup/mydatabase_$(date +%F).sql

Objaśnienie parametrów:

  • -U myuser — nazwa użytkownika bazy danych
  • -h localhost — adres serwera (można pominąć, jeśli jest to serwer lokalny)
  • mydatabase — nazwa bazy danych
  • /backup/... — ścieżka docelowa
  • $(date +%F) — dodaje bieżącą datę do nazwy pliku

Aby zaoszczędzić miejsce, należy natychmiast skompresować kopię zapasową:

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

Aby wykonać kopię zapasową wszystkich baz danych na serwerze:

pg_dumpall -U myuser | gzip > /backup/postgres_all_$(date +%F).sql.gz

Kopia zapasowa MySQL

W przypadku MySQL i MariaDB należy użyć narzędzia mysqldump.

Przykład tworzenia kopii zapasowej pojedynczej bazy danych:

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

Po uruchomieniu tego polecenia system poprosi o podanie hasła użytkownika.

Aby wykonać kopię zapasową wszystkich baz danych:

mysqldump -u myuser -p --all-databases | gzip > /backup/mysql_all_$(date +%F).sql.gz

Aby uwzględnić procedury przechowywane i wyzwalacze, dodaj opcje --routines --triggers.

Kopia zapasowa w CloudBox

CloudBox firmy INTROSERV to rozwiązanie do przechowywania danych w chmurze obsługujące wiele protokołów połączeń (w tym rsync, scp, rsync przez SSH, WebDAV). Łatwość obsługi CloudBox znacznie upraszcza zadania związane z przesyłaniem, zarządzaniem i pobieraniem danych.

Można z niego korzystać jako zdalnej lokalizacji do przechowywania kopii zapasowych baz danych. Poniżej znajdują się szczegóły konfiguracji oraz przykłady skryptów.

Krok 1. Uzyskanie dostępu do CloudBox

Zamów jeden z dostępnych planów CloudBox na naszej stronie internetowej — introserv.com

Po dokonaniu płatności usługa staje się dostępna w ciągu kilku minut. Po aktywacji usługi otrzymasz dane połączeniowe:

  • adres serwera (box#####.introserv.cloud)
  • nazwa użytkownika (box#####) i hasło

Krok 2. Połączenie i synchronizacja za pomocą rsync lub scp

Korzystanie z rsync (zalecane):

rsync -avz -e "ssh -p 22" /backup/ user@cloudbox-server:/path_to_cloudbackups/

Gdzie:

  • user — nazwa użytkownika CloudBox
  • cloudbox-server — adres połączenia
  • /path_to_cloudbackups/ — ścieżka w CloudBox

W celu zautomatyzowania operacji zaleca się skonfigurowanie kluczy SSH:

  1. Wygeneruj klucz publiczny:

    ssh-keygen -t rsa

  2. Skopiuj zawartość utworzonego pliku klucza publicznego, np. /root/.ssh/id_rsa.pub, do schowka.
  3. Przejdź do sekcji „Profil” (najedź kursorem na ikonę użytkownika w prawym górnym rogu), dodaj zawartość klucza do pola „Klucze publiczne” i zapisz ustawienia.

Po wykonaniu tych czynności program rsync będzie działał bez monitów o hasło, co jest wygodne w przypadku zadań cron.

Alternatywa — scp:

scp /backup/mysql_mydatabase.sql.gz user@cloudbox-server:/path_to_cloudbackups/

Krok 3. Połączenie i synchronizacja za pomocą rclone

Jeśli chcesz używać rclone do komunikacji z CloudBox, skonfiguruj go w następujący sposób:

  1. Zainstaluj rclone:

    sudo apt install rclone

  2. Rozpocznij konfigurację:

    rclone config

Podczas konfiguracji wybierz:

  • n — aby utworzyć nową nazwę zdalną
  • nazwę, np. cloudbox
  • typ przechowywania — wybierz sftp lub ssh
  • wprowadź adres serwera w formacie box#####.introserv.cloud, nazwę użytkownika w formacie box#####, port (w tym przypadku port SSH — domyślnie 22) oraz ścieżkę do katalogu
  • przeprowadź autoryzację (jeśli jest wymagana)

Sprawdź połączenie:

rclone ls cloudbox:/path_to_cloudbackups/

Skopiuj dane kopii zapasowej:

rclone copy /backup/ cloudbox:/db-backups/ --progress

Zsynchronizuj z usunięciem plików, których brakuje lokalnie:

rclone sync /backup/ cloudbox:/db-backups/ --progress

W razie potrzeby — zaszyfruj pliki przed przesłaniem:

rclone copy /backup/ cloudbox:/db-backups/ --progress --crypt

Krok 4. Przykład skryptu automatyzującego z wykorzystaniem CloudBox

Utwórz skrypt /usr/local/bin/db_backup_cloudbox.sh, na przykład:

#!/bin/bash DATE=$(date +%F) BACKUP_DIR="/backup/$DATE" mkdir -p $BACKUP_DIR # PostgreSQL pg_dump -U myuser mydatabase | gzip > $BACKUP_DIR/postgres_mydatabase.sql.gz # MySQL mysqldump -u myuser -p mydatabase | gzip > $BACKUP_DIR/mysql_mydatabase.sql.gz # Upload to CloudBox rsync -avz -e "ssh -p 22" $BACKUP_DIR/ user@cloudbox-server:/path_to_cloudbackups/$DATE/ # Upload to CloudBox (rclone option, uncomment if used) # rclone copy $BACKUP_DIR/ cloudbox:/db-backups/$DATE/ --progress # Remove backups older than 7 days find /backup/ -type f -mtime +7 -delete

Następnie dodaj zadanie cron (w przykładzie skrypt uruchamia się codziennie o 2:00 w nocy):

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

Ważne uwagi:

  • Upewnij się, że połączenie z CloudBox jest stabilne, a przepustowość wystarczająca.
  • Skonfiguruj monitorowanie: sprawdź, czy pliki są faktycznie kopiowane.
  • Okresowo testuj przywracanie danych z kopii zapasowych CloudBox.
  • W przypadku korzystania z danych poufnych — rozważ szyfrowanie kopii zapasowych.

Kopiowanie na zdalny serwer Linux za pośrednictwem SSH

Jeśli chcesz przechowywać kopie zapasowe nie tylko lokalnie, ale także na innym serwerze, użyj rsync lub scp.

Korzystanie z rsync (zalecane, ponieważ kopiuje tylko zmiany):

rsync -avz -e "ssh -p 22" /backup/ [email protected]:/remote_backups/

Objaśnienie parametrów:

  • user — nazwa użytkownika na serwerze zdalnym
  • remote.server — adres IP lub nazwa domeny serwera zdalnego
  • /remote_backups/ — ścieżka do przechowywania kopii zapasowych

Aby program działał bez konieczności wprowadzania hasła, skonfiguruj klucze SSH:

# Generate SSH keys: ssh-keygen -t rsa # Copy key to remote server: ssh-copy-id [email protected]

Po wykonaniu tej czynności rsync będzie działać bez monitów o hasło, co jest wygodne w przypadku zadań cron.

Alternatywa dla programu rsync — użycie programu scp:

scp /backup/mysql_mydb.sql.gz [email protected]:/remote_backups/

Kopiowanie do pamięci w chmurze za pomocą rclone

Jeśli chcesz przechowywać kopie zapasowe w chmurze (Google Drive, Dropbox, Amazon S3 itp.), użyj rclone — uniwersalnego narzędzia do synchronizacji danych z różnymi usługami chmurowymi.

Instalacja:

sudo apt install rclone

Konfiguracja:

rclone config

Postępuj zgodnie z interaktywnymi instrukcjami konfiguracji:

  • Wybierz n, aby utworzyć nowe połączenie
  • Wprowadź nazwę, np. „remote”
  • Wybierz typ pamięci (np. s3, drive, dropbox)
  • Wprowadź klucze dostępu lub autoryzuj się za pomocą przeglądarki

Sprawdź połączenie:

rclone ls remote:path

Przykład przesyłania kopii zapasowych do chmury:

rclone copy /backup/ remote:db-backups/ --progress

Polecenie synchronizacji (usuwa pliki, których brakuje lokalnie):

rclone sync /backup/ remote:db-backups/ --progress

Przed przesłaniem plików można je również zaszyfrować:

rclone copy /backup/ remote:db-backups/ --progress --crypt

Bezpieczeństwo i kontrola

  • Przechowuj kopie zapasowe w co najmniej dwóch lokalizacjach — lokalnie i zdalnie.
  • Regularnie sprawdzaj, czy kopie zapasowe są tworzone i przesyłane pomyślnie.
  • Przynajmniej raz w miesiącu przeprowadzaj testowe przywracanie danych.
  • Jeśli korzystasz z chmur publicznych, szyfruj pliki zawierające dane wrażliwe:

    gpg -c /backup/mysql_mydatabase.sql.gz

  • Upewnij się, że uprawnienia do katalogu /backup są prawidłowe, oraz zabezpiecz dane logowania do bazy danych.

Przywracanie z kopii zapasowej

PostgreSQL:

gunzip < backup.sql.gz | psql -U myuser -d mydatabase

MySQL:

gunzip < backup.sql.gz | mysql -u myuser -p mydatabase

Podsumowanie

Tworzenie kopii zapasowych baz danych PostgreSQL i MySQL to prosta, ale niezwykle ważna procedura. Nawet najbardziej niezawodna infrastruktura nie ochroni Cię przed błędami ludzkimi ani awariami technicznymi. Najlepszą strategią jest regularne, zautomatyzowane tworzenie kopii zapasowych przechowywanych na co najmniej jednym serwerze zewnętrznym oraz w chmurze, połączone z okresowymi testami przywracania danych.

Korzystając z kombinacji narzędzi pg_dump, mysqldump, rsync, rclone i cron, można zbudować niezawodny, w pełni zautomatyzowany system tworzenia kopii zapasowych bez konieczności korzystania z płatnego oprogramowania innych firm. To podejście jest łatwe do wdrożenia i nadaje się do wszystkich systemów Linux.

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