Cómo instalar PostgreSQL 10 usando código fuente en Linux


PostgreSQL, también llamado Postgres, es un sistema de base de datos relacional de objetos poderoso y de código abierto. Es una base de datos de nivel empresarial que tiene características como registro de escritura anticipada para tolerancia a fallas, replicación asincrónica, control de concurrencia de múltiples versiones (MVCC), copias de seguridad en línea/en caliente, recuperación puntual en el tiempo, planificador/optimizador de consultas, espacios de tabla, transacciones anidadas (puntos de guardado) ) etc.

Postgres tiene su última versión 10 lanzada el 5 de octubre de 2017 por el grupo de desarrollo global de postgres.

Las características de la nueva versión son las siguientes:

  • Replicación lógica: esta función permite la replicación de objetos de base de datos individuales (ya sean filas, tablas o bases de datos selectivas) en servidores en espera. Proporciona más control sobre la replicación de datos. Implementado mediante el modelo de editor-suscriptor.
  • Confirmación de quórum para replicación síncrona: en esta función, dba ahora puede especificar la cantidad de espera que reconozca que se han realizado los cambios en la base de datos, de modo que los datos se puedan considerar escritos de manera segura.
  • Autenticación SCRAM-SHA-256: seguridad mejorada que la autenticación y el almacenamiento de contraseña basados en MD5 existentes.
  • Mejora de la ejecución de consultas en paralelo.
  • Particionamiento de tablas declarativas.
  • Soporte de búsqueda de texto completo para JSON y JSONB.

En este artículo, explicaremos cómo instalar PostgreSQL 10 usando la instalación de código fuente en sistemas Linux. Aquellos que buscan una instalación fácil desde el administrador de paquetes de distribución pueden seguir estas guías a continuación.

  1. Cómo instalar PostgreSQL 10 en CentOS/RHEL y Fedora
  2. Cómo instalar PostgreSQL 10 en Debian y Ubuntu

Instalar PostgreSQL usando código fuente

Como postgres es una base de datos de código abierto, se puede construir a partir del código fuente de acuerdo con las necesidades/requisitos de cada uno. podemos personalizar el proceso de construcción e instalación proporcionando una o más opciones de línea de comando para varias funciones adicionales.

La principal ventaja de utilizar la instalación del código fuente es que se puede personalizar mucho durante la instalación.

1. Primero instale los prerrequisitos requeridos como gcc, readline-devel y zlib-devel usando el administrador de paquetes como se muestra.

# yum install gcc zlib-devel readline-devel     [On RHEL/CentOS]
# apt install gcc zlib1g-dev libreadline6-dev   [On Debian/Ubuntu]

2. Descargue el archivo tar del código fuente desde el comando oficial wget directamente en el sistema.

# wget https://ftp.postgresql.org/pub/source/v10.0/postgresql-10.0.tar.bz2

3. Utilice el comando tar para extraer el archivo tarball descargado. Se creará un nuevo directorio llamado postgresql-10.0.

# tar -xvf postgresql-10.0.tar.bz2
# ll
total 19236
-rw-------. 1 root root      933 Mar 18  2015 anaconda-ks.cfg
-rw-r--r--. 1 root root     8823 Mar 18  2015 install.log
-rw-r--r--. 1 root root     3384 Mar 18  2015 install.log.syslog
drwxrwxrwx  6 1107 1107     4096 Oct  3  2017 postgresql-10.0
-rw-r--r--  1 root root 19639147 Oct  3  2017 postgresql-10.0.tar.bz2

4. El siguiente paso del procedimiento de instalación es configurar el código fuente descargado eligiendo las opciones según sus necesidades.

# cd postgresql-10.0

use ./configure --help para obtener ayuda sobre varias opciones.

# ./configure --help

Defaults for the options are specified in brackets.
Configuration:
  -h, --help              display this help and exit
      --help=short        display options specific to this package
      --help=recursive    display the short help of all the included packages
  -V, --version           display version information and exit
  -q, --quiet, --silent   do not print `checking ...' messages
      --cache-file=FILE   cache test results in FILE [disabled]
  -C, --config-cache      alias for `--cache-file=config.cache'
  -n, --no-create         do not create output files
      --srcdir=DIR        find the sources in DIR [configure dir or `..']

Installation directories:
  --prefix=PREFIX         install architecture-independent files in PREFIX
                          [/usr/local/pgsql]
  --exec-prefix=EPREFIX   install architecture-dependent files in EPREFIX
                          [PREFIX]

5. Ahora cree un directorio donde desee instalar los archivos de postgres y use la opción de prefijo con configure.

# mkdir /opt/PostgreSQL-10/
# ./configure --prefix=/opt/PostgreSQL-10
checking build system type... x86_64-pc-linux-gnu
checking host system type... x86_64-pc-linux-gnu
checking which template to use... linux
checking whether NLS is wanted... no
checking for default port number... 5432
checking for block size... 8kB
checking for segment size... 1GB
checking for WAL block size... 8kB
checking for WAL segment size... 16MB
checking for gcc... gcc
checking whether the C compiler works... yes
checking for C compiler default output file name... a.out
checking for suffix of executables... 
checking whether we are cross compiling... no
checking for suffix of object files... o
checking whether we are using the GNU C compiler... yes
checking whether gcc accepts -g... yes
checking for gcc option to accept ISO C89... none needed
checking whether gcc supports -Wdeclaration-after-statement... yes
checking whether gcc supports -Wendif-labels... yes
checking whether gcc supports -Wmissing-format-attribute... yes
checking whether gcc supports -Wformat-security... yes
checking whether gcc supports -fno-strict-aliasing... yes
checking whether gcc supports -fwrapv... yes
checking whether gcc supports -fexcess-precision=standard... no
....

6. Después de la configuración, a continuación, comenzaremos a construir postgreSQL usando el siguiente comando make.

# make

Una vez que finalice el proceso de compilación, ahora instale postgresql usando el siguiente comando.

# make install

Postgresql 10 se ha instalado en el directorio/opt/PostgreSQL-10.

7. Ahora cree un usuario y un directorio de postgres que se utilizarán como directorio de datos para inicializar el clúster de la base de datos. El propietario de este directorio de datos debe ser el usuario de postgres y los permisos deben ser 700 y también establecer la ruta para los binarios de postgresql para nuestra facilidad.

# useradd postgres
# passwd postgres
# mkdir /pgdatabase/data
# chown -R postgres. /pgdatabase/data
# echo 'export PATH=$PATH:/opt/PostgreSQL-10/bin' > /etc/profile.d/postgres.sh

8. Ahora inicialice la base de datos usando el siguiente comando como usuario de postgres antes de usar cualquier comando de postgres.

# su postgres
$ initdb -D /pgdatabase/data/ -U postgres -W

Donde -D es la ubicación para este clúster de base de datos o podemos decir que es el directorio de datos donde queremos inicializar el clúster de base de datos, -U para el nombre de superusuario de la base de datos y - W para solicitar la contraseña del superusuario de db.

Para obtener más información y opciones, podemos consultar initdb –help.

9. Después de inicializar la base de datos, inicie el clúster de la base de datos o si necesita cambiar el puerto o escuchar la dirección del servidor, edite el archivo postgresql.conf en el directorio de datos del servidor de la base de datos.

$ pg_ctl -D /pgdatabase/data/ -l /pglog/db_logs/start.log start

10. Después de iniciar la base de datos, verifique el estado del proceso del servidor de Postgres usando los siguientes comandos.

$ ps -ef |grep -i postgres
$ netstat -apn |grep -i 51751

Podemos ver que el clúster de la base de datos está funcionando bien y los registros de inicio se pueden encontrar en la ubicación especificada con la opción -l mientras se inicia el clúster de la base de datos.

11. Ahora conéctese al clúster de la base de datos y cree la base de datos usando los siguientes comandos.

$ psql -p 51751
postgres=# create database test;
postgres=# \l to list all databases in cluster
postgres=# \q to quit form postgres console

¡Eso es! En nuestros próximos artículos, cubriré la configuración, la instalación de la replicación y la instalación de la herramienta pgAdmin, hasta entonces, estad atentos a Tecmint.