Con la replicación de transmisión, se configura un servidor de base de datos en espera (esclavo de replicación) para conectarse al servidor maestro/principal, que transmite WAL registros al modo de espera a medida que se generan, sin esperar el WAL archivo a llenar.
De forma predeterminada, la replicación de transmisión es asíncrona, donde los datos se escriben en los servidores en espera después de que se haya confirmado una transacción en el servidor principal. Esto significa que hay un pequeño retraso entre la confirmación de una transacción en el servidor maestro y los cambios que se hacen visibles en el servidor de reserva. Una desventaja de este enfoque es que, en caso de que el servidor maestro falle, es posible que las transacciones no confirmadas no se repliquen y esto puede provocar la pérdida de datos.
Esta guía muestra cómo configurar un Postgresql 12 replicación de transmisión maestra en espera en CentOS 8 . Usaremos “ranuras de replicación ” para el modo de espera como una solución para evitar que el servidor maestro recicle WAL antiguos segmentos antes de que el standby los haya recibido.
Tenga en cuenta que, en comparación con otros métodos, las ranuras de replicación conservan solo la cantidad de segmentos que se sabe que se necesitan.
Entorno de prueba:
Esta guía asume que usted se conectó a sus servidores de base de datos maestro y en espera como raíz a través de SSH (usa Sudo comando cuando sea necesario si está conectado como un usuario normal con derechos administrativos):
Postgresql master database server: 10.20.20.9 Postgresql standby database server: 10.20.20.8
Ambos servidores de base de datos deben tener Postgresql 12 instalado, de lo contrario, consulte:Cómo instalar PostgreSQL y pgAdmin en CentOS 8.
Nota :
Paso 1:Configuración del servidor de base de datos maestro/principal de PostgreSQL
En este caso, usaremos *
es decir todo.
# su - postgres $ psql -c "ALTER SYSTEM SET listen_addresses TO '*';"
El CONJUNTO ALTER SYSTEM El comando SQL es una característica poderosa para cambiar los parámetros de configuración de un servidor, directamente con una consulta SQL. Las configuraciones se guardan en el postgresql.conf.auto archivo ubicado en la raíz de la carpeta de datos (por ejemplo, /var/lib/pgsql/12/data/ ) y leer además de los almacenados en postgresql.conf . Pero las configuraciones en el primero tienen prioridad sobre las del último y otros archivos relacionados.

Configurar direcciones IP en PostgreSQL Master
-P
la bandera solicita una contraseña para el nuevo rol y -e
hace eco de los comandos que genera createuser y envía al servidor de la base de datos.
# su – postgres $ createuser --replication -P -e replicator $ exit

Crear usuario de replicación en Pgmaster
host replication replicator 10.20.20.8/24 md5

Configurar autenticación de replicación
# systemctl restart postgresql-12.service
# firewall-cmd --add-service=postgresql --permanent # firewall-cmd --reload
Paso 2:Realización de una copia de seguridad básica para iniciar el servidor en espera
# systemctl stop postgresql-12.service # su - postgres $ cp -R /var/lib/pgsql/12/data /var/lib/pgsql/12/data_orig $ rm -rf /var/lib/pgsql/12/data/*
En el siguiente comando, la opción:
-h
– especifica el host que es el servidor maestro.-D
– especifica el directorio de datos.-U
– especifica el usuario de la conexión.-P
– activa los informes de progreso.-v
– habilita el modo detallado.-R
– habilita la creación de la configuración de recuperación:Crea una standby.signal archivar y agregar configuraciones de conexión a postgresql.auto.conf en el directorio de datos.-X
– se utiliza para incluir los archivos de registro de escritura anticipada necesarios (archivos WAL) en la copia de seguridad. Un valor de stream significa transmitir el WAL mientras se crea la copia de seguridad.-C
– habilita la creación de una ranura de replicación nombrada por la opción -S antes de iniciar la copia de seguridad.-S
– especifica el nombre de la ranura de replicación.
$ pg_basebackup -h 10.20.20.5 -D /var/lib/pgsql/12/data -U replicator -P -v -R -X stream -C -S pgstandby1 $ exit

Copia de seguridad base del servidor maestro
# ls -l /var/lib/pgsql/12/data/

Verificar directorio de datos de copia de seguridad
Un esclavo de replicación se ejecutará en “Hot Standby ” si el hot_standby el parámetro está activado (el valor predeterminado) en postgresql.conf y hay una señal de espera archivo presente en el directorio de datos.
# su - postgres $ psql -c "SELECT * FROM pg_replication_slots;" $ exit

Crear ranura de replicación
# cat /var/lib/pgsql/12/data/postgresql.auto.conf

Ver configuración de conexión
# systemctl start postgresql-12
Paso 3:probar la replicación de transmisión de PostgreSQL
$ psql -c "\x" -c "SELECT * FROM pg_stat_wal_receiver;"

Comprobar el proceso del receptor WAL
y un WAL correspondiente proceso del remitente en el servidor maestro/principal con un estado de transmisión y un sync_state de asíncrono, puede consultar esta vista pg_stat_replication pg_stat_replication.
$ psql -c "\x" -c "SELECT * FROM pg_stat_replication;"

Comprobar el proceso del remitente WAL en maestro
De la captura de pantalla anterior, la replicación de transmisión es asíncrona. En la siguiente sección, demostraremos cómo habilitar opcionalmente la replicación síncrona.
[maestro]postgres=# CREAR BASE DE DATOS tecmint;
[espera]postgres=# \l

Probar replicación de transmisión
Opcional:habilitar la replicación síncrona
Para habilitar la replicación síncrona, synchronous_commit también debe estar activado (que es el valor predeterminado, por lo que no es necesario realizar ningún cambio) y también debe configurar synchronous_standby_names parámetro a un valor no vacío. Para esta guía, lo configuraremos para todos.
$ psql -c "ALTER SYSTEM SET synchronous_standby_names TO '*';"

Establecer sincronización de nombres en espera en maestro
# systemctl reload postgresql-12.service
$ psql -c "\x" -c "SELECT * FROM pg_stat_replication;"

Comprobar el proceso de remitente WAL en maestro
Hemos llegado al final de esta guía. Hemos mostrado cómo configurar PostgreSQL 12 replicación de transmisión de base de datos master-standby en CentOS 8 . También cubrimos cómo habilitar la replicación síncrona en un clúster de base de datos de PostgreSQL.
Hay muchos usos de la replicación y siempre puede elegir una solución que cumpla con su entorno de TI y/o los requisitos específicos de la aplicación. Para obtener más detalles, vaya a Servidores en espera de envío de registros en la documentación de PostgreSQL 12.
Compartir es cuidar…Compartir en FacebookCompartir en TwitterCompartir en LinkedinCompartir en Reddit