|
|
|||
PostgreSQL ReplikationReplikation bei Datenbanken ist ein ziemlich umfangreiches Thema. PostgreSQL bietet in der Distribution leider keine mitgelieferte Möglichkeit Datenbanken in einem Master-Slave Setup zu replizieren. Da ist man auf Tools wie Slony-I oder die Skytools angewiesen. Da Slony-I sehr umfangreich und nicht gerade einfach zu konfigurieren ist, habe ich mir die Skytools bzw. londiste näher angeschaut, und muss sagen, dass es wirklich hervorragend funktioniert. Die Skytools sind von Skype, und können auf der PgFoundry Seite gefunden werden. Als Beispiel nehmen wir eine einfache Datenbank mit nur einer Tabelle… CREATE sequence test_seq start WITH 1; CREATE TABLE test ( id int4 PRIMARY KEY, txt text ); Jetzt brauchen wir noch ein paar Datensätze… INSERT INTO test VALUES ((SELECT NEXTVAL('test_seq')), 'bla'); INSERT INTO test VALUES ((SELECT NEXTVAL('test_seq')), 'blub'); INSERT INTO test VALUES ((SELECT NEXTVAL('test_seq')), 'test text'); Nachdem alle Tabelle angelegt ist, sollte die Datenbank auf dem Slave Server erstellt werden. Danach können die Inhalte mit einem Dump initial übernommen werden… $ pg_dump -U postgres -s test | psql -h <IP-VON-SLAVE> -U postgres test Damit londiste laufen kann, brauchen wir einen Ticker, dieser muss auf dem Master-Server laufen. Die Konfiguration kann wie folgt aussehen (hier die Datei /etc/ticker.ini): [pgqadm] job_name = ticker db = dbname=test maint_delay_min = 1 loop_delay = 0.5 logfile = /tmp/log.%(job_name)s pidfile = /tmp/pid.%(job_name)s use_skylog = 0 connection_lifetime = 21 queue_refresh_period = 10 Danach kann der Ticker gestartet werden… $ pgqadm.py -d /etc/ticker.ini ticker Als nächstes brauchen wir noch für londiste ebenfalls eine Konfigurationsdatei (hier /etc/londiste.ini): [londiste] job_name = test_to_subcriber provider_db = dbname=test port=5432 host=<IP-VON-MASTER> subscriber_db = dbname=test port=5432 host=<IP-VON-SLAVE> pgq_queue_name = londiste.replika logfile = /tmp/%(job_name)s.log pidfile = /tmp/%(job_name)s.pid Die londiste Konfigurationsdatei muss auf beiden Server sein, damit die Replikation funktioniert. Auf dem Slave-System kann londiste nun installiert werden $ londiste.py /etc/londiste.ini provider install $ londiste.py /etc/londiste.ini subscriber install $ londiste.py /etc/londiste.ini provider add test $ londiste.py /etc/londiste.ini subscriber add test $ londiste.py -d /etc/londiste.ini replay Londiste läuft nun im Hintergrund als Daemon und sollte alle neuen Daten sofort auf den Slave replizieren. |
|||
Copyright © 2009 treibsand.com. All Rights Reserved |
|||
Kommentar hinzufügen