Hola Lista,

Estoy probando a montar una réplica sencilla entre mi ordenador (Ubuntu
18.04) y un ordenador que tengo para pruebas (CentOS7).
El CentOS es el servidor maestro y el Ubuntu el esclavo. Ambos con PG
9.6.23 instalado. Uno está en la IP 192.168.1.65:5433 (maestro) y el otro
en la 60 (esclavo). Como veis, el maestro está ejecutándose en otro puerto
que no es el de por defecto.

El maestro está configurado así (postgresql.conf):
wal_level = replica
archive_mode = on
archive_command = 'cp %p /var/lib/pgsql/9.6/wal_archive/%f'
max_wal_senders = 2
wal_keep_segments = 8
synchronous_standby_names = 'pgslave001'
hot_standby = on

Y las conexiones están configuradas así (pg_hba.conf):
# TYPE  DATABASE        USER            ADDRESS                 METHOD
# "local" is for Unix domain socket connections only
local   all             all                                     trust
# IPv4 local connections:
host   all   all 0.0.0.0/0 trust
# IPv6 local connections:
host    all             all             ::1/128                 trust
# Allow replication connections from localhost, by a user with the
# replication privilege.
host replication all 192.168.1.0/24 trust

Utilizo esta configuración porque quiero asegurarme de que no tengo
problemas de conexión. El firewall de CentOS está abierto:
[root@test-eka data]# sestatus
SELinux status:                 disabled
[root@test-eka data]# firewall-cmd --list-services
dhcpv6-client http postgresql ssh
[root@test-eka data]# firewall-cmd --service=postgresql --add-port=5433/tcp
--permanent
Warning: ALREADY_ENABLED: '5433:tcp'
success

Desde el servidor esclavo puedo conectarme sin problemas al maestro:
$ /usr/lib/postgresql/9.6/bin/psql -h 192.168.1.65 -p 5433 -U postgres
psql (9.6.23)
Digite «help» para obtener ayuda.
postgres=#  \q

Con esto así, hago el backup inicial:
sudo -u postgres /usr/lib/postgresql/9.6/bin/pg_basebackup -h 192.168.1.65
-p 5433 -U replicador -D /var/lib/postgresql/9.6/main --verbose --progress
--xlog

Creo el archivo recovery.conf
restore_command = 'scp 192.168.1.65:/var/lib/pgsql/9.6/wal_archive/%f %p'
standby_mode = on
primary_conninfo = 'host=192.168.1.65 port=5433 user=replicador
password=replicador application_name=pgslave001'

Y arranco el esclavo:
ekaterina@ekaterina-ubuntu:$ sudo systemctl start
postgresql@9.6-main.service
ekaterina@ekaterina-ubuntu:$ sudo systemctl status
postgresql@9.6-main.service
● postgresql@9.6-main.service - PostgreSQL Cluster 9.6-main
   Loaded: loaded (/lib/systemd/system/postgresql@.service; indirect;
vendor preset: enabled)
   Active: active (running) since Mon 2021-09-20 16:41:52 CEST; 4s ago
  Process: 9783 ExecStop=/usr/bin/pg_ctlcluster --skip-systemctl-redirect
-m fast 9.6-main stop (code=exited, status=0/SUCCESS)
  Process: 10060 ExecStart=/usr/bin/pg_ctlcluster --skip-systemctl-redirect
9.6-main start (code=exited, status=0/SUCCESS)
 Main PID: 10065 (postgres)
    Tasks: 5 (limit: 4915)
   CGroup: /system.slice/system-postgresql.slice/postgresql@9.6-main.service
           ├─10065 /usr/lib/postgresql/9.6/bin/postgres -D
/var/lib/postgresql/9.6/main -c
config_file=/etc/postgresql/9.6/main/postgresql.conf
           ├─10066 postgres: 9.6/main: startup process   recovering
00000001000000000000001A
           ├─10070 postgres: 9.6/main: checkpointer process
           ├─10071 postgres: 9.6/main: writer process
           └─10072 postgres: 9.6/main: wal receiver process   streaming
0/1A01D7B8

sep 20 16:41:46 ekaterina-ubuntu systemd[1]: Starting PostgreSQL Cluster
9.6-main...
sep 20 16:41:52 ekaterina-ubuntu postgresql@9.6-main[10060]: Warning:
connection to the database failed, disabling startup checks:
sep 20 16:41:52 ekaterina-ubuntu postgresql@9.6-main[10060]: psql: FATAL:
 el sistema de base de datos está iniciándose
sep 20 16:41:52 ekaterina-ubuntu systemd[1]: Started PostgreSQL Cluster
9.6-main.

Me da igual arrancarlo con pg_ctl que con systemctl. El esclavo parece
arrancado (la última línea dice Started) pero cuando intento conectar con
la bd esclava me da error:
ekaterina@ekaterina-ubuntu:$ /usr/lib/postgresql/9.6/bin/psql  -U postgres
psql: FATAL:  el sistema de base de datos está iniciándose

Sin embargo, algo está arrancado porque cuando lanzo de nuevo sudo
systemctl status postgresql@9.6-main.service veo que en "wal receiver
process" va avanzando y encaja con lo que se puede ver en el maestro:
postgres=# select * from  pg_stat_replication ;
-[ RECORD 1 ]----+------------------------------
pid              | 3556
usesysid         | 16404
usename          | replicador
application_name | pgslave001
client_addr      | 192.168.1.60
client_hostname  |
client_port      | 52418
backend_start    | 2021-09-20 16:41:46.648487+02
backend_xmin     |
state            | streaming
sent_location    | 0/1A01D898
write_location   | 0/1A01D898
flush_location   | 0/1A01D898
replay_location  | 0/1A01D898
sync_priority    | 1
sync_state       | sync

¿Qué es lo que estoy haciendo mal? Aviso por adelantado de que mis
conocimientos de Linux son limitados.

Muchas gracias,
Ekaterina

Reply via email to