GNU/Linux >> Tutoriales Linux >  >> Cent OS

Cómo instalar y configurar la replicación maestro-esclavo con PostgreSQL 9.6 en CentOS 7

PostgreSQL o Postgres es un sistema de gestión de base de datos relacional de objetos (ORDBMS) de código abierto con más de 15 años de desarrollo activo. Es un poderoso servidor de base de datos que puede manejar grandes cargas de trabajo. PostgreSQL se puede utilizar en servidores Linux, Unix, BSD y Windows.

La replicación de la base de datos maestra/esclava es un proceso de copia (sincronización) de datos de una base de datos en un servidor (el maestro) a una base de datos en otro servidor (el esclavo). El principal beneficio de este proceso es distribuir bases de datos a varias máquinas, de modo que cuando el servidor maestro tiene un problema, hay una máquina de respaldo con los mismos datos disponibles para manejar las solicitudes sin interrupción.

PostgreSQL proporciona varias formas de replicar una base de datos. Se puede utilizar con fines de copia de seguridad y para proporcionar un servidor de base de datos de alta disponibilidad. En este tutorial, le mostraremos cómo instalar y configurar la replicación maestro-esclavo de PostgreSQL 9.6 en un servidor CentOS 7. Usaremos el modo de espera activo, y es un muy buen punto de partida para aprender PostgreSQL en profundidad.

Lo que haremos

  1. Instalar PostgreSQL 9.6
  2. Iniciar y configurar PostgreSQL 9.6
  3. Configurar cortafuegos
  4. Configurar servidor maestro
  5. Configurar servidor esclavo
  6. Pruebas

Requisito previo

    • 1 servidor CentOS 7
      • Maestro - Permiso de lectura y escritura - IP:10.0.15.10
    • 1 servidor CentOS 7
      • Esclavo - Solo permiso de lectura - IP:10.0.15.11
    • Privilegios de raíz

    Paso 1:instalar PostgreSQL 9.6

    En este tutorial, discutiremos cómo instalar la última versión de PostgreSQL 9.6 en el servidor CentOS 7. De forma predeterminada, el repositorio oficial de CentOS ofrece una versión anterior, por lo que debemos instalar PostgreSQL desde el repositorio oficial.

    Agregue un nuevo repositorio de PostgreSQL 9.6 al sistema.

    yum -y install https://yum.postgresql.org/9.6/redhat/rhel-7-x86_64/pgdg-centos96-9.6-3.noarch.rpm

    Ahora instale PostgreSQL 9.6 usando el siguiente comando yum.

    yum -y install postgresql96-server postgresql96-contrib

    De esta manera, puede instalar PostgreSQL 9.6.

    Paso 2:iniciar y configurar PostgreSQL 9.6

    Antes de iniciar el servicio de postgres, debemos inicializar la base de datos. Para esto, vaya a '/usr/pgsql-9.6/bin ' e inicialice la base de datos con la configuración de postgres 'postgresql96-setup '.

    cd /usr/pgsql-9.6/bin
    ./postgresql96-setup initdb

    A continuación, inicie el servicio postgres y habilítelo para que se inicie automáticamente al iniciar el sistema.

    systemctl start postgresql-9.6
    systemctl enable postgresql-9.6

    De forma predeterminada, postgres se ejecuta en el puerto 5432. Así que asegúrese de que el estado del puerto 5432 sea 'ESCUCHAR ' ejecutando el comando netstat de la siguiente manera.

    netstat -plntu

    Si no tiene un comando netstat, instale net-tools. Es parte de las herramientas de red.

    yum -y install net-tools

    Entonces se ha iniciado PostgreSQL 9.6. Pero aún necesitamos configurar la contraseña para el usuario de postgres. Inicie sesión como usuario 'postgres' y luego acceda al shell 'psql' de postgres.

    su - postgres
    psql

    Dar el 'postgres ' usuario nueva contraseña con la consulta a continuación.

    \password postgres
    Enter new password:

    Entonces se inició PostgreSQL 9.6 y se configuró una nueva contraseña para el usuario de postgres.

    Paso 3:configurar el cortafuegos

    Firewalld es una herramienta de administración de firewall predeterminada en CentOS 7. Iniciaremos este servicio y abriremos el puerto para la conexión de PostgreSQL.

    Inicie firewalld y permita que se inicie automáticamente en el arranque del sistema usando los siguientes comandos:

    systemctl start firewalld
    systemctl enable firewalld

    A continuación, agregue un nuevo servicio de postgres a firewalld con los siguientes comandos.

    firewall-cmd --add-service=postgresql --permanent
    firewall-cmd --reload

    Ahora compruebe el puerto abierto del servicio.

    firewall-cmd --list-all

    Y verá que el servicio PostgreSQL se ha agregado al firewalld.

    NOTA: Ejecute los pasos 1, 2 y 3 en todos los maestros y esclavos.

    Paso 4:configurar el servidor maestro

    En este paso, configuraremos un servidor maestro para la replicación. Este es el servidor principal, que permite el proceso de lectura y escritura de las aplicaciones que se ejecutan en él. PostgreSQL en el maestro se ejecuta solo en la dirección IP '10.0.15.10' y realiza la replicación de transmisión al servidor esclavo.

    Vaya al directorio de datos de pgsql '/var/lib/pgsql/9.6/data ' y edite el archivo de configuración 'postgresql.conf '.

    cd /var/lib/pgsql/9.6/data
    vim postgresql.conf

    Descomente la línea 'listen_addresses' y cambie el valor de la dirección IP del servidor a '10.0.15.10'.

    listen_addresses = '10.0.15.10'

    Descomente la línea 'wal_level' y cambie el valor a 'hot_standby '.

    wal_level = hot_standby

    Para el nivel de sincronización, usaremos la sincronización local. Descomente y cambie la línea de valor como se muestra a continuación.

    synchronous_commit = local

    Habilite el modo de archivo y asigne a la variable archive_command un comando como valor.

    archive_mode = on
    archive_command = 'cp %p /var/lib/pgsql/9.6/archive/%f'

    Para la configuración de 'Replicación', elimine el comentario de la línea 'wal_sender' y cambie el valor a 2 (en este tutorial, usamos solo 2 servidores maestro y esclavo), y para 'wal_keep_segments' el valor es 10.

    max_wal_senders = 2
    wal_keep_segments = 10

    Para el nombre de la aplicación, elimine el comentario de la línea 'synchronous_standby_names' y cambie el valor a 'pgslave01 '.

    synchronous_standby_names = 'pgslave01'

    Eso es todo. Guarde estos cambios y salga del editor.

    Continuando, en el archivo postgresql.conf, el modo de archivo está habilitado, por lo que debemos crear un nuevo directorio para fines de archivo.

    Cree un nuevo directorio, cambie su permiso y cambie el propietario al usuario de postgres.

    mkdir -p /var/lib/pgsql/9.6/archive/
    chmod 700 /var/lib/pgsql/9.6/archive/
    chown -R postgres:postgres /var/lib/pgsql/9.6/archive/

    Ahora edite el archivo pg_hba.conf.

    vim pg_hba.conf

    Pegue la configuración a continuación al final de la línea.

    # Localhost
    host    replication     replica          127.0.0.1/32            md5

    # PostgreSQL Master IP address
    host    replication     replica          10.0.15.10/32            md5

    # PostgreSQL SLave IP address
    host    replication     replica          10.0.15.11/32            md5

    Guardar y Salir. Toda la configuración está completa. Ahora, reinicie PostgreSQL 9.6 usando el siguiente comando.

    systemctl restart postgresql-9.6

    A continuación, debemos crear un nuevo usuario con privilegios de replicación. Crearemos un nuevo usuario llamado 'réplica '.

    Inicie sesión como usuario de postgres y cree una nueva 'réplica ' usuario con contraseña '[email protected] '.

    su - postgres
    createuser --replication -P replica
    Enter New Password:

    Entonces, con esto, la configuración maestra de PostgreSQL 9.6 se completó y se creó el usuario para la replicación.

    Paso 5:configurar el servidor esclavo

    En este paso, configuraremos el servidor Esclavo. Queremos reemplazar el directorio de datos de postgres en el servidor esclavo con los datos de postgres del servidor maestro, y luego configurar el servidor esclavo para que se ejecute bajo la dirección IP '10.0.15.11', y finalmente habilitar hot_standby para permitir solo leer sin escribir.

    Antes de comenzar a configurar el servidor esclavo, detenga el servicio de postgres usando el siguiente comando systemctl.

    systemctl stop postgresql-9.6

    Luego vaya al directorio de postgres y al directorio de datos de copia de seguridad.

    cd /var/lib/pgsql/9.6/
    mv data data-backup

    Cree un nuevo directorio de datos y cambie los permisos de propiedad del directorio al usuario de postgres.

    mkdir -p data/
    chmod 700 data/
    chown -R postgres:postgres data/

    A continuación, inicie sesión como usuario de postgres y copie todo el directorio de datos del 'Maestro ' servidor al 'Esclavo ' servidor como usuario réplica.

    su - postgres
    pg_basebackup -h 10.0.15.10 -U replica -D /var/lib/pgsql/9.6/data -P --xlog
    Password:

    Escriba su contraseña y espere la transferencia de datos del servidor maestro al esclavo.

    Una vez completada la transferencia, vaya al directorio de datos de postgres y edite el archivo postgresql.conf en el servidor esclavo.

    cd /var/lib/pgsql/9.6/data/
    vim postgresql.conf

    Cambie el valor de 'listen_addresses' a la dirección IP del servidor esclavo '10.0.15.11'.

    listen_addresses = '10.0.15.11'

    Habilitar 'hot_standby ' en el servidor esclavo descomentando la siguiente línea y cambiando el valor a 'on '.

    hot_standby = on

    Eso es todo. Guarde los cambios y salga del editor.

    Luego crea un nuevo 'recovery.conf ' archivo con vim.

    vim recovery.conf

    Pegue la siguiente configuración en él.

    standby_mode = 'on'
    primary_conninfo = 'host=10.0.15.10 port=5432 user=replica [email protected] application_name=pgslave01'
    trigger_file = '/tmp/postgresql.trigger.5432'

    Guarde los cambios y salga del archivo.

    Nota: En primary_conninfo , ingrese los detalles de su propio servidor.

    Cambie los permisos de propiedad del archivo recovery.conf a los del usuario 'postgres'.

    chmod 600 recovery.conf
    chown postgres:postgres recovery.conf

    E inicie PostgreSQL 9.6 en el servidor esclavo.

    systemctl start postgresql-9.6

    La configuración del servidor esclavo se ha completado.

    Ahora, cuando verifique el servidor Esclavo, verá que PostgreSQL 9.6 se está ejecutando en el servidor con la dirección IP '10.0.15.11 '.

    netstat -plntu

    Paso 6 - Prueba

    La instalación y la configuración para la replicación maestro-esclavo de PostgreSQL 9.6 están completas. Para probar la configuración, verifique el flujo de estado de la replicación y pruebe la replicación de datos del Maestro al Esclavo.

    Inicie sesión en el servidor maestro y cambie al usuario de postgres.

    su - postgres

    A continuación, verifique la replicación del estado de transmisión de PostgreSQL con los siguientes comandos.

    psql -c "select application_name, state, sync_priority, sync_state from pg_stat_replication;"
    psql -x -c "select * from pg_stat_replication;"

    Debería ver que el valor del estado es 'streaming ', y sync_state es 'sync '.

    A continuación, pruebe insertando datos del maestro y luego verifique todos los datos en el servidor esclavo.

    Inicie sesión como usuario de postgres y acceda al shell de PostgreSQL en el 'MASTER ' servidor.

    su - postgres
    psql

    Crear nueva tabla 'replica_test ' e inserte algunos datos con las siguientes consultas de inserción.

    CREATE TABLE replica_test (test varchar(100));
    INSERT INTO replica_test VALUES ('howtoforge.com');
    INSERT INTO replica_test VALUES ('This is from Master');
    INSERT INTO replica_test VALUES ('pg replication by hakase-labs');

    Y ahora inicie sesión en el 'ESCLAVO ' servidor similar a la forma en que lo hizo en el maestro.

    su - postgres
    psql

    Verifique todos los datos de la tabla 'replica_test' utilizando la consulta a continuación.

    select * from replica_test;

    Así verás que todos los datos están replicados del 'MAESTRO ' servidor al 'ESCLAVO ' servidor.

    Prueba adicional

    Prueba para realizar la acción 'WRITE' desde el servidor 'SLAVE'.

    INSERT INTO replica_test VALUES ('this is SLAVE');

    Y el resultado debería ser 'No se puede ejecutar INSERT '.

    Entonces, la instalación y configuración de PostgreSQL 9.6 Master-Slave Replication en CentOS 7 es exitosa.

    Referencias

    • https://www.postgresql.org/download/linux/redhat/
    • https://www.server-world.info/en/note?os=CentOS_7

    Cent OS
    1. Cómo instalar y configurar Nginx en CentOS 7

    2. Cómo instalar y configurar Postgres 13 Ubuntu 20.04

    3. Cómo instalar y configurar Postgres 13 en Centos 8

    4. Cómo instalar y configurar Postgres 14 Ubuntu 20.04

    5. Cómo instalar y configurar Postgres 14 en Debian 11

    Cómo instalar y configurar GitLab CE en CentOS 7

    Cómo instalar y configurar Zabbix en CentOS 7

    Cómo instalar OwnCloud 8 con Nginx y MariaDB en CentOS 7

    Cómo instalar y configurar OpenLiteSpeed ​​con PHP 7 en CentOS 7

    Cómo instalar y usar Ruby on Rails con PostgreSQL en CentOS 7

    Cómo instalar PostgreSQL con pgAdmin en CentOS 8