Wie einrichten synchrone streaming-Replikation bei postgres?
Ich versuche, synchrone Replikation mit PostgreSQL-9.1, aber ich kann nicht ankommen es zu wirken. Ich war in der Lage zu konfigurieren, streaming-Replikation, aber nicht synchron.
Ich hoffe, ich habe nichts verpasst, offensichtlich. Ich habe sorgfältig Lesen vielen Abschnitten ch 17, 18, 14, 25, 26 und 29 in der admin-guide.
Bin ich unter ubuntu 12.04 mein master postgresql.conf hat diesen, unter all den anderen standard-Einstellungen:
listen_addresses = '*' # what IP address(es) to listen on;
wal_level = archive # minimal, archive, or hot_standby
archive_mode = on # allows archiving to be done
archive_command = 'test ! -f /data/pgWalArchive/%f && cp %p /data/pgWalArchive/%f'
wal_keep_segments = 100 # in logfile segments, 16MB each; 0 disables ??? What should this be ????
max_wal_senders = 3 # max number of walsender processes
Meine pg_hba.conf hat diese, zusätzlich zu den standard-Sachen:
host all all XX.6.35.0/24 md5
host replication postgres XX.6.35.0/24 md5
Mein master db hat nur eine Sequenz, so ist es winzig. Ich habe erfolgreich ein backup erstellt von der master-in die primäre und restauriert:
sudo -u postgres pg_basebackup -D ~/backup -F tar -x -z -l ~/backup/base1 -v -h XX.6.35.51 -U postgres
Ich auch kopiert den WAL-Archiv-Dateien auf den standby-Modus. Meine standby-recovery.conf Datei diese:
restore_command = '/usr/lib/postgresql/9.1/bin/pg_standby /data/pgWalArchive %f %p %r'
archive_cleanup_command = '/usr/lib/postgresql/9.1/bin/pg_archivecleanup /data/pgWalArchive %r'
standby_mode = on
primary_conninfo = 'host=XX.6.35.51 port=5432' # e.g. 'host=masterIpAddressOrName port=5432'
Beide Server starten ohne Probleme und die logs scheinen ok. Meine standby hat:
2012-06-08 10:23:51 MDT LOG: shutting down
2012-06-08 10:23:51 MDT LOG: database system is shut down
2012-06-08 10:23:53 MDT LOG: database system was shut down in recovery at 2012-06-08 10:23:51 MDT
2012-06-08 10:23:53 MDT LOG: entering standby mode
2012-06-08 10:23:53 MDT LOG: consistent recovery state reached at 0/1D000078
2012-06-08 10:23:53 MDT LOG: record with zero length at 0/1D000078
2012-06-08 10:23:53 MDT LOG: streaming replication successfully connected to primary
2012-06-08 10:23:53 MDT LOG: incomplete startup packet
2012-06-08 10:23:54 MDT FATAL: the database system is starting up
2012-06-08 10:23:54 MDT FATAL: the database system is starting up
2012-06-08 10:23:55 MDT FATAL: the database system is starting up
2012-06-08 10:23:55 MDT FATAL: the database system is starting up
2012-06-08 10:23:56 MDT FATAL: the database system is starting up
2012-06-08 10:23:56 MDT FATAL: the database system is starting up
2012-06-08 10:23:57 MDT FATAL: the database system is starting up
2012-06-08 10:23:57 MDT FATAL: the database system is starting up
2012-06-08 10:23:58 MDT FATAL: the database system is starting up
2012-06-08 10:23:58 MDT FATAL: the database system is starting up
2012-06-08 10:23:59 MDT FATAL: the database system is starting up
2012-06-08 10:23:59 MDT LOG: incomplete startup packet
2012-06-08 10:24:40 MDT LOG: redo starts at 0/1D000078
Das problem ist, wenn ich Frage Aussagen gegen den Meister, der Sie immer hängen. Bin ich etwas fehlt?
InformationsquelleAutor Julio Garcia | 2012-06-11
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich war die erste person, stellen Streaming-Replikation (AKA "Binary Replikation") in der Produktion bei der 9.0 kam vor zwei Jahren, aber übersprungen, 9.1, da Postgres' replication feature war in einem Zustand des Flusses. Jetzt, ab etwa der zweiten Woche im September oder so ungefähr, 9.2 out - Sie WOLLEN es wissen!
Mit 9.2, die Replikation wurde vereinfacht und STARK verbessert!
Nun können Sie die Replikation Kaskade! Sie hatten früher haben die Meister dienen alle slaves direkt. Jetzt können Sie off-laden Sie die master-streaming, um nur EIN Sklave, und dann, dass der slave-Strom, um so viele wie Sie möchten! Diese können Sie Ihre first-level-slave-als potentielle hot-stand-by-system, das übernimmt in dem Fall, dass Ihr master ausfällt.
Die gesamte Strategie für die Konfiguration dieser wurde überarbeitet und ich fand Ihre Frage, denn ich selbst war auf der Suche nach einem quick-setup-guide Art der Sache, weil ich schon alle wissen, die Grundlagen. Sie können jedoch erste Schritte mit der neuen 9.2 Sachen hier:
Postgres 9.2 High Availability, Load Balancing und Replikation
Inzwischen mindestens ein Verkäufer hat kommen mit etwas zu helfen, die sterblichen, die gut zu nutzen: Science-Tools angekündigt, "Dual-Mode" wurde Hinzugefügt, um Ihre PolyglotSQL Produkt. PolyglotSQL können Sie eine Anwendung betreiben, die gegen die meisten SQL-Datenbanken und ignorieren Dialekt-Unterschiede. Ebenso die "dual mode" - Funktion können Sie eine nur-lese-Verbindung und einer anderen Verbindung für schreibt, ohne neu zu schreiben Ihre Anwendung (!!), so können Sie die Vorteile von Postgres-Synchrone Replikation, da die Meister der alles schreibt, und setzen Sie die Last auf, was Leser, die Sie konfiguriert haben.
Empfehle ich Sie bewegen, um Postgres v 9.2.
InformationsquelleAutor Richard T
Zu spät zu Antworten, aber Hier ist eine tolle video-Anleitung umfasst Schritt-Schritt-Prozess zu tun stream-Replikation für postgresql. Das war wirklich hilfreich.
InformationsquelleAutor Ajeet Khan
Ich nicht sehen, etwas über synchronous_standby_names - müssen Sie mitteilen, welche Server es wird der Meister warten.
http://www.postgresql.org/docs/9.1/static/warm-standby.html#SYNCHRONOUS-REPLICATION
http://www.postgresql.org/docs/9.1/static/runtime-config-replication.html#GUC-SYNCHRONOUS-STANDBY-NAMES
Oh - vergessen Sie nicht, zu optimieren Ihrer
wal_level
Einstellung, wenn Sie möchten, führen Sie Abfragen auf den slave-server.InformationsquelleAutor Richard Huxton
Ich hatte ähnliche Probleme -- für Postgres 9.3, die ich hatte, um
hot_standby = on
zu meinem Standby-Datenbank-server istpostgresql.conf
- Datei, bevor meine standby-server übernehmen könnte, Lesen/Abfragen /Kunden.InformationsquelleAutor depthfirstdesigner