Kopia zapasowa bazy danych: PostgreSQL, MySQL, rsync, rclone, CloudBox | INTROSERV
EUR
european

EUR

usa

USD

Poland Pl
Ex. VAT Ex. VAT 0%

Kopia zapasowa bazy danych: PostgreSQL, MySQL, rsync, rclone, CloudBox

Kopia zapasowa bazy danych jest jednym z najważniejszych procedur zapewniających bezpieczeństwo i niezawodność stron internetowych oraz aplikacji. Utrata danych może nastąpić z wielu powodów: awaria serwera, błąd administratora, problemy z aktualizacją, złośliwe oprogramowanie lub po prostu błąd ludzki. Regularne kopie zapasowe pozwalają szybko przywrócić projekt bez utraty danych.

Ten przewodnik wyjaśnia, jak tworzyć kopie zapasowe baz danych PostgreSQL i MySQL, jak przechowywać kopie zapasowe na zdalnym serwerze Linux za pomocą rsync lub scp oraz jak przesyłać je do chmury za pomocą rclone.

Kopia zapasowa PostgreSQL

PostgreSQL udostępnia standardowe narzędzie pg_dump, które pozwala na utworzenie pełnej kopii bazy danych jako pliku SQL.

Przykład tworzenia kopii zapasowej:

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

Wyjaśnienie parametrów:

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

Aby zaoszczędzić miejsce, skompresuj kopię zapasową natychmiast:

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

Dla MySQL i MariaDB użyj narzędzia mysqldump.

Przykład kopii zapasowej pojedynczej bazy danych:

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

Po uruchomieniu tego polecenia system poprosi o hasło 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 składowane i wyzwalacze, dodaj opcje --routines --triggers.

Kopia zapasowa do CloudBox

CloudBox od INTROSERV to rozwiązanie do przechowywania 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 przesyłania, zarządzania i odzyskiwania danych.

Możesz używać go jako zdalnej lokalizacji do przechowywania kopii zapasowych bazy danych. Poniżej znajdują się szczegóły konfiguracji i przykłady skryptów.

Krok 1. Uzyskanie dostępu do CloudBox

Zamów jeden z dostępnych planów CloudBox na naszej stronie — https://introserv.com/solutions/cloudbox/

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

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

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

Używając 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 na CloudBox.

Dla zautomatyzowanej pracy 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ź na ikonę użytkownika w prawym górnym rogu), dodaj zawartość klucza do pola "Klucze publiczne" i zapisz ustawienia.

Ustawienia profilu CloudBox
Pole kluczy publicznych CloudBox

Po tym rsync będzie działać bez monitów o hasło, co jest wygodne dla 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 interakcji 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ć nowe zdalne połączenie;
  • nazwa, np. cloudbox;
  • typ przechowywania — wybierz sftp lub ssh;
  • wprowadź adres serwera w formacie box$$$$$.introserv.cloud, nazwę użytkownika w formacie box$$$$$, port (SSH — domyślnie 22), ścieżkę katalogu;
  • przeprowadź autoryzację (jeśli wymagana).

Przetestuj połączenie:

rclone ls cloudbox:/path_to_cloudbackups/

Skopiuj dane kopii zapasowej:

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

Synchronizuj z usunięciem plików brakujących lokalnie:

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

Jeśli potrzebne — zaszyfruj pliki przed przesłaniem:

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

Krok 4. Przykład skryptu automatyzacji z CloudBox

Utwórz skrypt /usr/local/bin/db_backup_cloudbox.sh:

#!/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 (skrypt uruchamia się codziennie o 2:00):

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

Ważne uwagi:

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

Kopiowanie na zdalny serwer Linux przez SSH

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

Używając rsync (zalecane, ponieważ kopiuje tylko zmiany):

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

Wyjaśnienie parametrów:

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

Aby działać bez wprowadzania hasła, skonfiguruj klucze SSH.

Wygeneruj klucze SSH:

ssh-keygen -t rsa

Skopiuj klucz na zdalny serwer:

ssh-copy-id [email protected]

Po tym rsync będzie działać bez monitów o hasło, co jest wygodne dla zadań cron.

Alternatywa — użycie scp:

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

Kopiowanie do chmury za pomocą rclone

Jeśli potrzebujesz 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 krokami konfiguracji:

  1. Wybierz n aby utworzyć nowe połączenie;
  2. Wprowadź nazwę, np. remote;
  3. Wybierz typ przechowywania (np. s3, drive, dropbox);
  4. Wprowadź klucze dostępu lub autoryzuj przez przeglądarkę.

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 brakujące lokalnie):

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

Możesz także zaszyfrować pliki przed przesłaniem:

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.
  • Przeprowadzaj testowe przywracanie co najmniej raz w miesiącu.
  • Szyfruj pliki zawierające poufne dane, jeśli używasz publicznych chmur:

gpg -c /backup/mysql_mydatabase.sql.gz

  • Zapewnij odpowiednie uprawnienia do plików dla /backup i zabezpiecz swoje dane uwierzytelniające 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łędem ludzkim lub awarią techniczną. Najlepszą strategią są regularne, zautomatyzowane kopie zapasowe przechowywane na co najmniej jednym zewnętrznym serwerze i w chmurze, z okresowym testowaniem przywracania.

Używając kombinacji pg_dump, mysqldump, rsync, rclone i cron, możesz zbudować niezawodny, w pełni zautomatyzowany system kopii zapasowych bez żadnego płatnego oprogramowania firm trzecich. To podejście jest łatwe do wdrożenia i odpowiednie dla 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