Den Slave initialisieren
Danach erstellt er auf dem Master einen Abzug der Datenbanken und synchronisiert diesen per Rsync auf einen Slave:
psql -c "SELECT pg_start_backup('master-backup')"
rsync -HPSav --exclude postmaster.pid --exclude postmaster.log data/* root@10.1.1.2:`pwd`/data/
psql -c "SELECT pg_stop_backup()"
Auf dem Slave steht dagegen in »/var/lib/pgsql/data/postgresql.conf«
:
hot_standby = on archive_mode = off archive_command = ''
Und in »/var/lib/pgsql/data/recovery.conf«
:
standby_mode = on restore_command = 'rsync -a /var/lib/pgsql/data/pg_xlog_archive/%f %p' primary_conninfo = 'host=10.1.1.1 port=5432user=postgres' trigger_file = '/tmp/pgsql-replication.trigger'
Nach erfolgreicher Inbetriebnahme findet der Admin folgende Log-Einträge: Auf dem Master taucht der Slave bereits mit seiner IP auf und meldet »LOG: replication connection authorized: user=postgres host=10.1.1.2 port=55723«
. In ähnlicher Weise meldet auch der Slave den Vollzug mit »LOG: streaming replication successfully connected to primary«
. In der Prozessliste durch »ps -ef«
schlägt sich das funktionierende Setup ebenfalls nieder (Abbildung 2).
Ab diesem Moment repliziert PostgreSQL alle Daten vom Master an den oder die Slaves. Von denen kann jetzt bereits jeder im schlimmsten Fall zu einem Master werden. Der Kasten "Best Practices bei DB-Replikation" gibt grundsätzliche Tipps nicht nur für solche Setups.
Best Practices bei DB-Replikation
Die Natur der Datenreplikation ist durchaus komplex, man denke nur an Themen wie ACID- oder AKID-Konformität. Doch einige Vorgaben haben sich als elementarer Grundstock für den erfolgreichen Betrieb herauskristallisiert. Der Admin sollte Folgendes beachten:
- Generell UTC verwenden und auf Zeitzonen mit Sommerzeit (DST, Daylight Savings Time) verzichten.
- Seine Uhren mit NTP und mehreren Zeitservern synchronisieren.
- Möglichst identische Systeme mit der gleichen Systemkonfiguration verwenden.
- Klare Namen an die Systeme vergeben. Bezeichner wie »
master« und »slave« sind denkbar ungeeignet und erzeugen schon bei einem Switch der Datenbanken-Rollen Konfusion. - Die Replikationsstände regelmäßig überwachen. Auseinanderdriftende Datenbestände verursachen unvorhersehbare Probleme.
Beim letzten Punkt ist es für den Datenbank-Admin sinnvoll, auf dem Master mit »SELECT pg_current_xlog_location();«
den aktuellen Datenbestand (anhand der aktuellen Position im Log) abzufragen. Den vergleicht er mit der letzten empfangenen Log-Position auf dem Slave (»SELECT pg_last_xlog_receive_location();«
) und dessen aktueller Log-Position (»SELECT pg_last_xlog_replay_location();«
, dieser Stand ist wirklich auf der Platte).
In-Place Upgrades
Wo früher Admins für ein Datenbank-Upgrade noch »pg_dump«
und »pg_restore«
oder im besten Falle den Pg-Migrator [3] verwenden mussten, kommt heute »pg_upgrade«
zum Einsatz und verkürzt die Wartungsfenster für große Datenbanken bei einem sicheren Upgrade beträchtlich. Selbst nach einem empfohlenen »vacuumdb --all --analyze«
sind auch größere Datenbestände eher in Minuten als Stunden auf den aktuellen Stand gebracht.
Diesen Artikel als PDF kaufen
Express-Kauf als PDF
Umfang: 3 Heftseiten
Preis € 0,99
(inkl. 19% MwSt.)
Als digitales Abo
Weitere Produkte im Medialinx Shop »
Versandartikel
Onlineartikel
Alle Rezensionen aus dem Linux-Magazin
- Buecher/07 Bücher über 3-D-Programmierung sowie die Sprache Dart
- Buecher/06 Bücher über Map-Reduce und über die Sprache Erlang
- Buecher/05 Bücher über Scala und über Suchmaschinen-Optimierung
- Buecher/04 Bücher über Metasploit sowie über Erlang/OTP
- Buecher/03 Bücher über die LPI-Level-2-Zertifizierung
- Buecher/02 Bücher über Node.js und über nebenläufige Programmierung
- Buecher/01 Bücher über Linux-HA sowie über PHP-Webprogrammierung
- Buecher/12 Bücher über HTML-5-Apps sowie Computer Vision mit Python
- Buecher/11 Bücher über Statistik sowie über C++-Metaprogrammierung
- Buecher/10 Bücher zu PHP-Webbots sowie zur Emacs-Programmierung
Insecurity Bulletin
Im Insecurity Bulletin widmet sich Mark Vogelsberger aktuellen Sicherheitslücken sowie Hintergründen und Security-Grundlagen. mehr...





