|
|
|||
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.
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