Sistemas Gestores de Bases de Datos

PostgreSQL

images/postgresql-logo.png

Instalación

Los siguientes pasos son ejecutados como usuario root.

  1. Instala el servidor y las utilidades (clientes) de PostgreSQL:

     root@servidor:~ $ zypper install postgresql96-server postgresql96
    

    Para determinar la versión de PostgreSQL que será (o ya está) instalada ejecuta el comando zypper info postgresql96-server.

    openSUSE ofrece varios paquetes relacionados a PostgreSQL, ejecuta el comando zypper search postgresql para obtener una lista de dichos paquetes.

Instancia

Es posible crear una instancia personal o instancia local de PostgreSQL al usuario alumno en su directorio personal.

Los siguientes pasos son ejecutados como usuario alumno.

  1. Crea un directorio donde mantendrás los archivos propios de la instancia de PostgreSQL, por ejemplo $HOME/.local/var/pgsql/instancia01/data:

     alumno@servidor:~ $ mkdir -p $HOME/.local/var/pgsql/instancia01/data
     alumno@servidor:~ $ initdb --locale=es_MX.UTF-8 --auth=md5 -U alumno -W -D $HOME/.local/var/pgsql/instancia01/data
     The files belonging to this database system will be owned by user "antonio".
     This user must also own the server process.
     The database cluster will be initialized with locale "es_MX.UTF-8".
     The default database encoding has accordingly been set to "UTF8".
     The default text search configuration will be set to "spanish".
     Data page checksums are disabled.
    
     Enter new superuser password:
     Enter it again:
    

    En este punto se te solicitará una contraseña para asignarla a la cuenta de usuario que será el administrador de esta instancia.

     creating directory data ... ok
     creating subdirectories ... ok
     selecting default max_connections ... 100
     selecting default shared_buffers ... 128MB
     selecting dynamic shared memory implementation ... posix
     creating configuration files ... ok
     running bootstrap script ... ok
     performing post-bootstrap initialization ... ok
     syncing data to disk ... ok
     Success. You can now start the database server using:
         pg_ctl -D /home/alumno/.local/var/pgsql/instancia01/data -l logfile start
    

    NOTAS:

    • La instancia (o proceso) de PostgreSQL le pertenecerá al usuario alumno (sistema operativo) por lo tanto es el único quien puede iniciarla.
    • Las opciones --auth=md5 -U alumno -W dadas a initdb le indican que el modo de autenticación es mediante una contraseña (en MD5), que el administrador de esta instancia de PostgreSQL será alumno y que solicite una nueva contraseña para dicha cuenta de usuario.
  2. Inicia la instancia recien creada de PostgreSQL:

     alumno@servidor:~ $ cd $HOME/.local/var/pgsql/instancia01
     alumno@servidor:~/.local/var/pgsql/instancia01 $ pg_ctl -D data --log postgresql.log start
    
  3. Verifica la ejecución de PostgreSQL:

     alumno@servidor:~/.local/var/pgsql/instancia01 $ ss -plutn | grep postgres
     tcp  LISTEN  0  128  127.0.0.1:5432  *:*   users:(("postgres",pid=2493,fd=4))
     tcp  LISTEN  0  128  ::1:5432        :::*  users:(("postgres",pid=2493,fd=3))
    

Cambio de puerto TCP

Para cambiar el puerto TCP de PostgreSQL se edita el archivo de configuración de la instancia, en este caso $HOME/.local/var/pgsql/instancia01/data/postgresql.conf.

Suponiendo que se desea usar el puerto TCP 9696, la línea a editar es #port = 5432 (línea 63 aprox.), se descomenta (se borra el # al inicio) y se indica el puerto: port = 9696.

Al hacer esta modificación en el archivo de configuración de la instancia es necesario reiniciarla.

alumno@servidor:~/.local/var/pgsql/instancia01 $ pg_ctl -D data stop
alumno@servidor:~/.local/var/pgsql/instancia01 $ pg_ctl -D data --log postgresql.log start

Verifica la ejecución de PostgreSQL:

  • Con el comando ss:

     alumno@servidor:~/.local/var/pgsql/instancia01 $ ss -plutn | grep postgres
     tcp  LISTEN  0  128  127.0.0.1:9696  *:*   users:(("postgres",pid=2493,fd=4))
     tcp  LISTEN  0  128  ::1:9696        :::*  users:(("postgres",pid=2493,fd=3))
    
  • Con el comando ps:

     alumno@servidor:~/.local/var/pgsql/instancia01 $ ps aux | grep -i postgres
     alumno   2347  0.0  0.5 213396 19348 ?        S    22:00   0:00 /usr/lib/postgresql96/bin/postgres -D data
     alumno   2351  0.0  0.0  68540  3104 ?        Ss   22:00   0:00 postgres: logger process
     alumno   2353  0.0  0.0 213396  3084 ?        Ss   22:00   0:00 postgres: checkpointer process
     alumno   2354  0.0  0.1 213396  5580 ?        Ss   22:00   0:00 postgres: writer process
     alumno   2355  0.0  0.0 213396  3084 ?        Ss   22:00   0:00 postgres: wal writer process
     alumno   2356  0.0  0.1 213804  6464 ?        Ss   22:00   0:00 postgres: autovacuum launcher process
     alumno   2357  0.0  0.1  68676  4316 ?        Ss   22:00   0:00 postgres: stats collector process
    

Inicio de la instancia

Los siguientes pasos son para crear un script de shell que mediante el parámetro start o stop inicie la instancia personal de PostgreSQL: postgresql-instancia01.

  1. Crea el script de shell (archivo) $HOME/.local/bin/postgresql-instancia01 con el siguiente contenido: postgresql-instancia01.txt

  2. Asigna permisos de ejecución al script de shell creado:

     alumno@servidor: $ chmod +x $HOME/.local/bin/postgresql-instancia01
    

OBSERVACIÓN: el script de shell postgresql-instancia01 puede aceptar los siguientes parámetros para administrar a la instancia-proceso de PostgreSQL:

  • start: para iniciar la instancia.
  • stop: para detener la instancia.
  • restart: para reiniciar la instancia.
  • reload: para recargar el archivo de configuración sin reiniciar a esta.
  • status: para determinar si está en ejecución o detenida la instancia.
  • config: para obtener algunos parámetros de configuración del archivo de configuración de la instancia.

pgAdmin

Para la instalación de pgAdmin, como usuario root ejecuta el comando zypper install pgadmin3.

En caso de error

Si durante el inicio de la instancia de PostgreSQL se obtiene algún mensaje de error o el proceso no es detectado mediante el comando postgresql-instancia01 status es posible encontrar el motivo por la cual la instancia no puede ser iniciada en el archivo $HOME/.local/var/pgsql/instancia01/postgresql.log.

En el directorio $HOME/.local/var/pgsql/instancia01/data/pg_log es posible encontrar varios archivos de registros, cada uno con un nombre del tipo postgresql-AÑO-MES-DÍA_HORA.log que corresponde a registros por parte de PostgreSQL durante su tiempo de ejecución

Borrando y recreando la instancia de PostgreSQL

Si por alguna razón se desea borrar la instancia, perdiendo la configuración y datos existentes en ella, se detiene la instancia (comando postgresql-instancia01 stop), se borra el directorio $HOME/.local/var/pgsql/instancia01 y los pasos indicados en el apartado Instancia se vuelven a llevar a cabo.

MariaDB

images/mariadb-logo.png

Instalación

MariaDB posiblemente ya se encuentre instalado, puedes de cualquier forma ejecutar lo siguiente para confirmar su instalación:

root@servidor:~ $ zypper search -i 'mariadb*'
Loading repository data...
Reading installed packages...
S | Name                  | Summary                                                       | Type
--+-----------------------+---------------------------------------------------------------+--------
i | mariadb               | Server part of MariaDB                                        | package
i | mariadb-client        | Client for MariaDB                                            | package
i | mariadb-errormessages | MySQL Community Server development header files and libraries | package

La columna S (status) indica que ya se encuentra instalado.

De no encontrarse instalado, ejecuta como root el comando zypper install mariadb mariadb-client para instalar el servidor y los clientes (utilidades) de MariaDB.

Para determinar la versión de MariaDB disponible ejecuta el comando zypper info mariadb.

Aún cuando MariaDB surgió a partir de MySQL, MySQL Workbench solo contempla su uso con MySQL por lo que se tienen los siguientes clientes gráficos alternativos para MariaDB:

MySQL

images/mysql-logo.png

MySQL se encuentra disponible de igual forma, puedes ejecutar zypper search 'mysql*'. La versión disponible de MySQL la puedes determinar con el comando zypper info mysql-community-server

RECOMENDACIÓN: lee lo siguiente:

Apache Cassandra

images/apache-cassandra-logo.png

Los siguientes pasos serán llevados a cabo como usuario alumno.

  1. Verifica la instalación de JAVA (JRE/JDK): which java, java -version y javac -version.

  2. Accede a http://cassandra.apache.org/download/ y descarga la última versión disponible de Apache Cassandra.

    En este caso se ha descargado el archivo apache-cassandra-3.5-bin.tar.gz en el directorio $HOME/Downloads.

  3. Crea el directorio $HOME/.local/opt/apache-cassandra y en él descomprime el archivo descargado en formato tar.gz de Apache Cassandra:

     alumno@servidor:~ $ mkdir -p $HOME/.local/opt/apache-cassandra
     alumno@servidor:~ $ cd $HOME/.local/opt/apache-cassandra
     alumno@servidor:~/.local/opt/apache-cassandra $ tar xf $HOME/Downloads/apache-cassandra-3.5-bin.tar.gz
    

    Al terminar obtendrás el directorio apache-cassandra-3.5.

  4. Ingresa al directorio apache-cassandra-3.5 e inicia a Apache Cassandra:

     alumno@servidor:~/.local/opt/apache-cassandra/apache-cassandra-3.5 $ ./bin/cassandra -p cassandra.pid
    

    Durante su ejecución Apache Cassandra estará en segundo plano.

    Puedes observar la ejecución de Apache Cassandra con:

     alumno@servidor:~/.local/opt/apache-cassandra/apache-cassandra-3.5 $ ss -plutn | grep java
      tcp        0      0 127.0.0.1:7000          0.0.0.0:*               LISTEN      9270/java
      tcp        0      0 127.0.0.1:7199          0.0.0.0:*               LISTEN      9270/java
      tcp        0      0 127.0.0.1:41735         0.0.0.0:*               LISTEN      9270/java
      tcp        0      0 127.0.0.1:9042          :::*                    LISTEN      9270/java
    

    Los puertos TCP usados por Apache Cassandra pueden ser alterados en el archivo de configuración de Apache Cassandra: conf/cassandra.yaml. Para encontrarlos:

     alumno@servidor:~/.local/opt/apache-cassandra/apache-cassandra-3.5 $ grep _port conf/cassandra.yaml | grep -v '#'
     storage_port: 7000
     ssl_storage_port: 7001
     native_transport_port: 9042
     rpc_port: 9160
    
  5. Mientras se encuentre en ejecución puedes hacer uso de su cliente: cqlsh

     alumno@servidor:~/.local/opt/apache-cassandra/apache-cassandra-3.5 $ ./bin/cqlsh
     Connected to Test Cluster at 127.0.0.1:9042.
     [cqlsh 5.0.1 | Cassandra 3.5 | CQL spec 3.4.0 | Native protocol v4]
     Use HELP for help.
     cqlsh>
     cqlsh> exit
    

Para detener a Apache Cassandra ejecuta el comando kill -9 $(cat cassandra.pid) estando dentro del directorio $HOME/.local/opt/apache-cassandra/apache-cassandra-3.5. Al archivo cassandra.pid mantiene el PID de la instancia en ejecución.

Redis

images/redis-logo.png

The suggested way of installing Redis is compiling it from sources as Redis has no dependencies other than a working GCC compiler and libc. Installing it using the package manager of your Linux distribution is somewhat discouraged as usually the available version is not the latest. - Installing Redis

Los siguientes pasos serán llevados a cabo como usuario alumno.

NOTA: Redis será compilado e instalado desde su código fuente por lo que es importante que ya se hayan instalado los paquetes de build-essentials.

  1. Crea el directorio $HOME/.local/opt/redis y accede a él:

     alumno@servidor:~ $ mkdir -p $HOME/.local/opt/redis
     alumno@servidor:~ $ cd $HOME/.local/opt/redis
    
  2. Accede a http://redis.io/download y descarga la versión estable ofrecida de Redis, en este caso ha sido la versión 3.2.0.

     alumno@servidor:~/.local/opt/redis $ wget http://download.redis.io/releases/redis-3.2.0.tar.gz
     alumno@servidor:~/.local/opt/redis $ tar xf redis-3.2.0.tar.gz
    

    Al finalizar obtendrás el directorio redis-3.2.0.

  3. Ingresa al directorio redis-3.2.0 e inicia su compilación con el comando make:

     alumno@servidor:~/.local/opt/redis $ cd redis-3.2.0
     alumno@servidor:~/.local/opt/redis/redis-3.2.0 $ make PREFIX=$(pwd)/local clean install
    

    Al terminar, Redis estará instalado en $HOME/.local/opt/redis/redis-3.2.0/local.

  4. Crea el directorio local/etc y en él copia los archivos de configuración de Redis:

     alumno@servidor:~/.local/opt/redis/redis-3.2.0 $ mkdir -p local/etc
     alumno@servidor:~/.local/opt/redis/redis-3.2.0 $ cp *.conf local/etc/
    

    Al terminar contarás con la siguiente estructura en $HOME/.local/opt/redis/redis-3.2.0/local:

     alumno@servidor:~/.local/opt/redis/redis-3.2.0 $ tree local
     local/
     ├── bin
     │   ├── redis-benchmark
     │   ├── redis-check-aof
     │   ├── redis-check-rdb
     │   ├── redis-cli
     │   ├── redis-sentinel -> redis-server
     │   └── redis-server
     └── etc
         ├── redis.conf
         └── sentinel.conf
     2 directories, 8 files
    
  5. Ingresa al directorio local/bin e inicia a Redis:

     alumno@servidor:~/.local/opt/redis/redis-3.2.0 $ cd local/bin
     alumno@servidor:~/.local/opt/redis/redis-3.2.0/local/bin $ ./redis-server ../etc/redis.conf --loglevel verbose
                     _._
                _.-``__ ''-._
           _.-``    `.  `_.  ''-._           Redis 3.2.0 (00000000/0) 64 bit
       .-`` .-```.  ```\/    _.,_ ''-._
      (    '      ,       .-`  | `,    )     Running in standalone mode
      |`-._`-...-` __...-.``-._|'` _.-'|     Port: 6379
      |    `-._   `._    /     _.-'    |     PID: 18118
       `-._    `-._  `-./  _.-'    _.-'
      |`-._`-._    `-.__.-'    _.-'_.-'|
      |    `-._`-._        _.-'_.-'    |           http://redis.io
       `-._    `-._`-.__.-'_.-'    _.-'
      |`-._`-._    `-.__.-'    _.-'_.-'|
      |    `-._`-._        _.-'_.-'    |
       `-._    `-._`-.__.-'_.-'    _.-'
           `-._    `-.__.-'    _.-'
               `-._        _.-'
                   `-.__.-'
     18118:M 19 Feb 03:06:37.179 # Server started, Redis version 3.2.0
    

    Durante su ejecución obtendrás algunos mensajes de advertencia (WARNING) con sugerencias a problemas detectados.

    Para detener la instancia de Redis aprieta el juego de teclas Ctrl + c.

  6. Accede a la instancia en ejecución de Redis con:

     alumno@servidor:~/.local/opt/redis/redis-3.2.0/local/bin $ ./redis-cli -h localhost -p 6379
     localhost:6379>
    

MongoDB

images/mongodb-logo.png

Los siguientes pasos serán llevados a cabo como usuario alumno.

  1. Crea el directorio $HOME/.local/opt/mongodb y accede a él:

     alumno@servidor:~ $ mkdir -p $HOME/.local/opt/mongodb
     alumno@servidor:~ $ cd $HOME/.local/opt/mongodb
    
  2. Accede a https://www.mongodb.com/download-center?jmp=nav#community y descarga la versión estable ofrecida de MongoDB, en este caso ha sido la versión 3.2.6.

     alumno@servidor:~/.local/opt/mongodb $ wget https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-3.2.6.tgz
     alumno@servidor:~/.local/opt/mongodb $ tar xf mongodb-linux-x86_64-3.2.6.tgz
    

    Al finalizar obtendrás el directorio mongodb-linux-x86_64-3.2.6.

  3. Ingresa al directorio mongodb-linux-x86_64-3.2.6/bin y ejecuta al demonio principal de MongoDB (mongod) para determinar si es posible su ejecución:

     alumno@servidor:~/.local/opt/mongodb $ cd mongodb-linux-x86_64-3.2.6/bin
     alumno@servidor:~/.local/opt/mongodb/mongodb-linux-x86_64-3.2.6/bin $ ./mongod --version
     db version v3.2.6
     git version: 05552b562c7a0b3143a729aaa0838e558dc49b25
     allocator: tcmalloc
     modules: none
     build environment:
         distarch: x86_64
         target_arch: x86_64