¡Hola de nuevo! Retomamos la guía que comenzamos hace unos días para aprender a realizar una replicación en PostgreSql 9.3 para Linux Centos.
- Replicación en PostgreSQL (I)
- Replicación en PostgreSQL (II)
- Replicación en PostgreSQL (III)
En esta ocasión, procederemos a iniciar la base de datos PostgreSQL 9.3, donde debes usar el comando que se muestra a continuación:
Igualmente, si quieres iniciar, reiniciar o detener PostgreSQL, emplea estos comandos:
- Para iniciar: service postgresql-9.3 start;
- Para reiniciar: service postgresql-9.3 restart;
- Para detener: service postgresql-9.3 stop.
Si aún no tienes configurada una IP estática, en CentOS debes ir al archivo de configuración con el comando nano /etc/sysconfig/network-scripts/ifcfg-eth0 y asignar los parámetros que se muestran en esta imagen:
Pasamos a explicarte la configuración que se muestra en la imagen para que así entiendas mejor que parámetros estamos definiendo en este momento:
- DEVICE hace referencia al nombre del adaptador de red. Aparece por defecto y sólo se modifica en el caso de algún error.
- HWADDR. Es la dirección MAC de nuestro equipo. Viene por defecto.
- TYPE. Tipo de conexión a Internet, Ethernet, con cable o WIFI. No debemos modificar este campo.
- UUID tiene que ver con identificador único de la tarjeta de red que disponemos. También nos lo da por defecto.
- ONBOOT. Debemos escoger entre que la configuración cargue automáticamente al reiniciar el equipo o bien que solo dure hasta que reiniciemos.
- NM_CONTROLLED. Por defecto nos aparece ‘yes’, de modo que la configuración es gestionada por Network Manager.
- BOOTPRO. Tipo de configuración de red, esto es, estática o dinámica (static o DHCP).
- IPADDR. Dirección IP que le asignamos.
- NETMASK. Máscara de red.
- GATEWAY. Puerta de enlace
Acto seguido, y mediante el comando service network restart, reiniciamos el servicio para que los cambios surjan efecto. Para que funcione correctamente la conexión entre el servidor maestro (activo) y el servidor esclavo (standby), debes permitir las conexiones a través del puerto 5432 que es el que utiliza PostgreSQL. Así, utiliza el comando nano/etc/sysconfig/iptables y, a continuación, reinicia el servicio con el comando service iptables restart.
Recuerda que puedes usar el editor que más te guste, bien nano, vi, gedit o cualquier otro. Te adjuntamos la captura para que sepas como deben quedar los ficheros iptables:
Paso importante. Ahora debes configurar CentOS-Maestro, para lo cual utiliza el comando nano /var/lib/pgsql/9.3/data/postgresql.conf, que contiene casi toda la configuración responsable de realizar Streaming Replication.
En primer lugar, modificamos listen_addresses (define las IP’s que podrán conectarse a PostgreSQL), donde por defecto aparece localhost y si nuestra base de datos está en red conviene escribir la IP del servidor de la base de datos. En nuestro caso sólo tenemos dos servidores y, por lo tanto, colocaremos un asterisco.
El parámetro wal_level determina cuanta información contienen los ficheros WAL. En nuestro caso es hot_standby, lo que permitirá la replicación en el servidor standby. Este parámetro puede tener los valores minimal, archive y hot_standby
En la pantalla anterior, checkpoint_segments asigna el número de archivos de logs, de 16 MB cada uno (a no ser que se haya cambiado). Asimismo, activamos el modo archivado (archive_mode) que irá almacenando los cambios realizados de un servidor al otro. Así, el servidor ejecutará un comando definido por nosotros para copiar los ficheros logs de un servidor al otro.
El comando que hemos utilizado para enviar un fichero desde el servidor maestro hasta el servidor esclavo es el siguiente: sudo –u postgres /usr/bin/scp /var/lib/pgsql/9.3/data/%p postgres@192.168.1.11:/var/lib/pgsql/9.3/archive/%f
La parte postgres@192.168.1.11:/var/lib/pgsql/9.3/archive/%f conecta el servidor standby con el usuario postgres para copiar los datos del servidor maestro en una carpeta asignada, en este caso archive. Esta última se crea en el servidor standby con el comando mkdir archive, con todos los permisos para que el servidor maestro pueda escribir en ella chmod 777 archive. Hay que tener en cuenta que en nuestro sistema hemos dado permisos al usuario postgres para que pueda conectarse con el servidor esclavo sin utilizar contraseñas por el comando scp. Esto también podría haberse realizado compartiendo una carpeta entre ambos servidores, realizando un ftp o cualquier medio que se nos ocurra.
Finalmente, archive_timeout define la duración máxima para el archivado con el fin de evitar que se colapse nuestro servidor.
En la siguiente captura, max_wal_sender define el máximo de procesos permitidos para la tarea de replicación.
El siguiente paso será modificar el fichero pg_hba.conf en el servidor maestro permitiendo todas las conexiones entrantes, de modo que el fichero quede como se muestra en la imagen:
¿Todo claro hasta ahora? Si es así, debes saber que tan solo nos resta un post más para completar nuestra particular guía. ¡Te esperamos!