Estoy tratando de configurar la replicación sincrónica con Postgres 9.1, pero no puedo hacer que funcione. Pude configurar la replicación de transmisión, pero no sincrónica. Espero no haberme perdido nada obvio. He leído detenidamente muchas secciones de los capítulos 17, 18, 14, 25, 26 y 29 en la guía de administración.¿Cómo configurar la replicación de transmisión síncrona en postgres?
estoy usando Ubuntu 12.04 y mi postgresql.conf principal tiene éstos, entre todos los demás ajustes estándar:
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
Mi pg_hba.conf tiene esta, además de las cosas estándar:
host all all XX.6.35.0/24 md5
host replication postgres XX.6.35.0/24 md5
Mi db maestro tiene una sola secuencia, por lo que es muy pequeña. He creado con éxito una copia de seguridad del maestro en la primaria y la restituyó:
sudo -u postgres pg_basebackup -D ~/backup -F tar -x -z -l ~/backup/base1 -v -h XX.6.35.51 -U postgres
También he copiado los ficheros de archivo WAL a la espera. Mi archivo recovery.conf de espera tiene esta:
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'
Ambos servidores puesta en marcha sin problemas y los registros parecen estar bien. Mi standby tiene esto:
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
El problema es que cuando emito declaraciones contra el maestro, cuelgan para siempre. ¿Me estoy perdiendo de algo?
sí, por supuesto. Eché de menos estas líneas que tengo en la configuración. Para postgresql.sql tengo esto:. También puse la dirección IP sin suerte. En el modo de espera, tengo –