Debian na serwerze baz danych: Konfiguracja replikacji i backupu baz danych (PostgreSQL, MySQL/MariaDB)
Debian na serwerze baz danych: Konfiguracja replikacji i backupu baz danych (PostgreSQL, MySQL/MariaDB)
Debian jest jednym z najczęściej wykorzystywanych systemów operacyjnych w środowiskach serwerowych. Jego stabilność, bezpieczeństwo i otwartość sprawiają, że jest idealnym wyborem do hostowania serwerów baz danych. W tym artykule przedstawimy, jak skonfigurować i zarządzać replikacją oraz backupem baz danych w systemie Debian dla popularnych systemów zarządzania bazami danych: PostgreSQL oraz MySQL/MariaDB. Odpowiednia konfiguracja replikacji i backupu jest kluczowa dla zapewnienia integralności danych, dostępności systemu oraz wydajności.
Dlaczego replikacja i backup są kluczowe?
Zarządzanie bazami danych w dużych środowiskach produkcyjnych wymaga zapewnienia ciągłej dostępności, ochrony danych oraz wysokiej wydajności. Replikacja i backup są niezbędne do osiągnięcia tych celów:
- Replikacja: Dzięki replikacji danych, można tworzyć kopie baz danych na innych serwerach. W przypadku awarii jednego z serwerów, druga kopia bazy danych może przejąć obciążenie, zapewniając ciągłość działania aplikacji.
- Backup: Regularne kopie zapasowe pozwalają na szybkie przywrócenie danych po awarii, błędach użytkownika, usunięciu danych lub atakach cybernetycznych.

Konfiguracja replikacji w PostgreSQL na Debianie
1. Instalacja PostgreSQL
Aby rozpocząć konfigurację replikacji, należy najpierw zainstalować PostgreSQL na serwerze Debian. Można to zrobić za pomocą menedżera pakietów apt.
sudo apt update
sudo apt install postgresql postgresql-contrib
2. Konfiguracja serwera master
Replikacja w PostgreSQL polega na synchronizacji danych z serwera głównego (master) na serwery podrzędne (standby). Pierwszym krokiem jest skonfigurowanie serwera master:
- Otwórz plik konfiguracyjny PostgreSQL:
sudo nano /etc/postgresql/12/main/postgresql.conf - Włącz replikację, zmieniając następujące ustawienia:
listen_addresses = '*' wal_level = replica max_wal_senders = 3 wal_keep_segments = 64 hot_standby = on - Zezwól na połączenia z serwera replikacyjnego, edytując plik
pg_hba.conf:sudo nano /etc/postgresql/12/main/pg_hba.conf - Dodaj poniższą linię, aby zezwolić na połączenia replikacyjne:
host replication all 192.168.0.2/32 md5Zamień
192.168.0.2na adres IP serwera replikacyjnego. - Zrestartuj serwis PostgreSQL:
sudo systemctl restart postgresql
3. Przygotowanie serwera podrzędnego
Na serwerze podrzędnym zainstaluj PostgreSQL, a następnie skonfiguruj go do synchronizacji z serwerem master.
- Zatrzymaj serwis PostgreSQL:
sudo systemctl stop postgresql - Zrób kopię bazy danych z serwera master:
sudo -u postgres pg_basebackup -h 192.168.0.1 -D /var/lib/postgresql/12/main -U repl_user -P --wal-method=streamZamień
192.168.0.1na adres IP serwera master. Użytkownikrepl_userto użytkownik replikacji na serwerze master. - Skonfiguruj plik
recovery.conf:sudo nano /var/lib/postgresql/12/main/recovery.conf - Dodaj następujące linie:
standby_mode = on primary_conninfo = 'host=192.168.0.1 port=5432 user=repl_user password=repl_password' trigger_file = '/tmp/postgresql.trigger.5432' - Uruchom serwis PostgreSQL na serwerze podrzędnym:
sudo systemctl start postgresql
Replikacja powinna teraz działać. Możesz sprawdzić status replikacji na serwerze master:
sudo -u postgres psql -c "SELECT * FROM pg_stat_replication;"
Konfiguracja replikacji w MySQL/MariaDB na Debianie
1. Instalacja MySQL/MariaDB
Replikacja w MySQL/MariaDB działa w sposób podobny do PostgreSQL, ale z innymi mechanizmami. Na początku należy zainstalować MySQL lub MariaDB:
sudo apt update
sudo apt install mysql-server
2. Konfiguracja serwera master
- Edytuj plik konfiguracyjny MySQL:
sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf - W sekcji
[mysqld]dodaj następujące linie:server-id = 1 log_bin = /var/log/mysql/mysql-bin.log bind-address = 0.0.0.0 - Zrestartuj MySQL:
sudo systemctl restart mysql - Utwórz użytkownika replikacji:
sudo mysql -u root -pW konsoli MySQL wykonaj:
CREATE USER 'repl_user'@'%' IDENTIFIED BY 'repl_password'; GRANT REPLICATION SLAVE ON *.* TO 'repl_user'@'%'; FLUSH PRIVILEGES;
3. Przygotowanie serwera podrzędnego
Na serwerze podrzędnym wykonaj podobne kroki jak w przypadku PostgreSQL:
- Zainstaluj MySQL/MariaDB.
- Zatrzymaj serwis MySQL:
sudo systemctl stop mysql - Zrób kopię danych z serwera master:
sudo mysqldump -u root -p --all-databases --master-data > all_databases.sql - Skopiuj plik dumpa na serwer podrzędny i załaduj go:
sudo mysql -u root -p < all_databases.sql - Skonfiguruj replikację:
Na serwerze podrzędnym uruchom MySQL i wykonaj poniższe polecenia:
CHANGE MASTER TO MASTER_HOST='192.168.0.1', MASTER_USER='repl_user', MASTER_PASSWORD='repl_password', MASTER_LOG_FILE='mysql-bin.000001', MASTER_LOG_POS=154; START SLAVE;
Backup baz danych
1. Backup w PostgreSQL
PostgreSQL oferuje kilka metod wykonywania kopii zapasowych:
- pg_dump – dla pojedynczych baz danych:
sudo -u postgres pg_dump db_name > backup.sql - pg_basebackup – do tworzenia pełnych kopii zapasowych serwera:
sudo -u postgres pg_basebackup -D /path/to/backup -Ft -z -P
2. Backup w MySQL/MariaDB
Dla MySQL i MariaDB używa się narzędzia mysqldump do wykonywania kopii zapasowych:
- Kopia zapasowa wszystkich baz danych:
sudo mysqldump -u root -p --all-databases > all_databases.sql - Kopia zapasowa jednej bazy danych:
sudo mysqldump -u root -p db_name > db_name_backup.sql
3. Backup z użyciem narzędzi do automatyzacji
Aby zautomatyzować proces backupu, warto używać narzędzi takich jak cron, które umożliwiają harmonogramowanie regularnych kopii zapasowych.
Podsumowanie
Konfiguracja replikacji i backupu baz danych w systemie Debian jest kluczowym elementem utrzymania dostępności i bezpieczeństwa danych. Zarówno w przypadku PostgreSQL, jak i MySQL/MariaDB, poprawna konfiguracja replikacji zapewnia redundancję i wysoką dostępność, a regularne tworzenie kopii zapasowych daje pewność, że dane będą bezpieczne w razie awarii. Pamiętaj, aby testować procesy replikacji i backupu, aby mieć pewność, że będą one działały w sytuacjach kryzysowych.






