miércoles, 16 de abril de 2025

Laboratorio doméstico

https://anothermysqldba.blogspot.com/2025/04/homelab.html 

Sólo para travesura...

Existen numerosas opciones para probar MySQL y instancias de bases de datos generales.

Este es solo un ejemplo de cómo puede usar  Proxmox  para tener una configuración simple y rápida para pruebas y acceso repetibles.

Este ejemplo es una opción agradable y económica para tener un laboratorio en casa para MySQL y cualquier otra cosa que desees.

La virtualización de laboratorio en casa que elegí fue  Proxmox  y  Openmediavaul  para almacenamiento NFS extendido (no estoy 100% convencido de  Openmediavault , Debian solo podría hacerlo)

Hardware Elegí una configuración simple y compacta:

Esta virtualización también le permite tener un entorno que puede ejecutarse según sea necesario, apagarse o incluso alejarse y regresar cuando lo desee. 

También le permite clonar cada instancia para instancias adicionales y realizar pruebas si lo desea una vez configurado. 

Esta será una configuración directa muy simple en todos estos.

También puede crear dispositivos de bloque para cada directorio de datos o NFS si lo prefiere, pero todas estas serán instalaciones directas locales para demostración.

Objetivo de prueba y demostración:

  • Instalar
  • Escucha
  • Rotación de contraseñas de la bóveda

Base de Debian 

Configuré una instancia de Debian 12 con 4 GB y 4 CPU.
Luego la convertí en plantilla para poder vincular todas las demás instancias desde aquí.
Esto facilita la configuración de otras instancias y permite tener la misma base desde la que empezar.


┌──(root㉿debian12-server)-[~]
└─# uname -a
Linux debian12-server 6.1.0-32-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.1.129-1 (06/03/2025) x86_64 GNU/Linux

apt install unzip
cd /usr/local/src/
wget https://releases.hashicorp.com/vault/1.4.2/vault_1.4.2_linux_amd64.zip
descomprimir vault_1.4.2_linux_amd64.zip
bóveda mv /usr/bin/
setcap cap_ipc_lock=+ep /usr/bin/vault
# bóveda -v
Bóveda v1.4.2

MariaDB 11 Rolling 

vi /etc/network/interfaces
auto ens18
iface ens18 inet estático
    dirección 192.168.3.100
    máscara de red 255.255.255.0
    puerta de enlace 192.168.3.1
    servidores de nombres dns 8.8.8.8 8.8.4.4

# nombre de host
mariadb1.sqlhjalp.com

sudo apt-get install apt-transport-https curl
sudo mkdir -p /etc/apt/keyrings
sudo curl -o /etc/apt/keyrings/mariadb-keyring.pgp 'https://mariadb.org/mariadb_release_signing_key.pgp'
vi /etc/apt/sources.list.d/mariadb.sources

┌──(raíz㉿mariadb1)-[~]
└─# gato /etc/apt/sources.list.d/mariadb.sources
# MariaDB 11 Lista continua de repositorios - creada el 2025-04-01 15:13 UTC
# https://mariadb.org/download/
Nombre de X-Repolib: MariaDB
Tipos: deb
# deb.mariadb.org es un espejo dinámico si su espejo preferido se desconecta. Consulte https://mariadb.org/mirrorbits/ para más detalles.
# URI: https://deb.mariadb.org/11/debian
URI: https://mirror.its.dal.ca/mariadb/repo/11.rolling/debian
Suites: ratón de biblioteca
Componentes: principales
Firmado por: /etc/apt/keyrings/mariadb-keyring.pgp

┌──(raíz㉿mariadb1)-[~]
└─# apt-get update

┌──(raíz㉿mariadb1)-[~]
└─# apt-get install mariadb-server -y

┌──(raíz㉿mariadb1)-[~]
└─# mariadb
Bienvenido al monitor MariaDB. Los comandos terminan en ; o \g.
Su ID de conexión de MariaDB es 32
Versión del servidor: 11.7.2-MariaDB-deb12 distribución binaria mariadb.org

Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab y otros.

Escriba 'help;' o '\h' para obtener ayuda. Escriba '\c' para borrar la instrucción de entrada actual.

MariaDB [(ninguno)]>
MariaDB [(ninguno)]> salir
Adiós

┌──(raíz㉿mariadb1)-[~]
└─# systemctl detener mariadb.service

Para que quede claro, sí, con un servidor vinculado a Proxmox, puedes reiniciarlo y conservará todos tus valores y configuración.

┌──(raíz㉿mariadb1)-[~]
└─# tiempo de actividad
 10:27:29 1 min de actividad, 2 usuarios, promedio de carga: 0,15, 0,11, 0,04

┌──(raíz㉿mariadb1)-[~]
└─# mariadb
Bienvenido al monitor MariaDB. Los comandos terminan en ; o \g.
Su ID de conexión de MariaDB es 33
Versión del servidor: 11.7.2-MariaDB-deb12 distribución binaria mariadb.org

Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab y otros.

Escriba 'help;' o '\h' para obtener ayuda. Escriba '\c' para borrar la instrucción de entrada actual.

MariaDB [(ninguno)]> estado
--------------
mariadb desde 11.7.2-MariaDB, cliente 15.2 para debian-linux-gnu (x86_64) que utiliza el contenedor EditLine

ID de conexión: 33
Base de datos actual:
Usuario actual: root@localhost
SSL: El cifrado en uso es TLS_AES_256_GCM_SHA384, el certificado es correcto
Buscador actual: stdout
Usando archivo de salida: ''
Usando delimitador: ;
Servidor: MariaDB
Versión del servidor: 11.7.2-MariaDB-deb12 distribución binaria mariadb.org
Versión del protocolo: 10
Conexión: Localhost a través de socket UNIX
Conjunto de caracteres del servidor: utf8mb4
Conjunto de caracteres de la base de datos: utf8mb4
Conjunto de caracteres del cliente: utf8mb3
Conjunto de caracteres de Conn.: utf8mb3
Zócalo UNIX: /run/mysqld/mysqld.sock
Tiempo de actividad: 1 min 45 s

Hilos: 1 Preguntas: 61 Consultas lentas: 0 Aperturas: 33 Tablas abiertas: 26 Consultas por segundo promedio: 0.580
--------------

Innovación MySQL 

vi /etc/network/interfaces
auto ens18
iface ens18 inet estático
    dirección 192.168.3.101
    máscara de red 255.255.255.0
    puerta de enlace 192.168.3.1
    servidores de nombres dns 8.8.8.8 8.8.4.4


# apt install gnupg -y
# cd /usr/local/src/
# wget https://dev.mysql.com/get/mysql-apt-config_0.8.33-1_all.deb
# dpkg -i mysql-apt-config_0.8.33-1_all.deb

│¿Qué versión de servidor deseas recibir? │
  MySQL-8.0  
  mysql-innovation <-- Elegí esto
  MySQL-8.4-lts    
  clúster mysql-8.0   
  innovación del clúster MySQL    
  clúster mysql-8.4-lts    
  Ninguno

 ¿Qué producto MySQL desea configurar?                                                                                                                           
 Servidor y clúster MySQL (actualmente seleccionado: mysql-innovation)
 Conectores MySQL (actualmente seleccionado: habilitado)
 De acuerdo

# apt-get update
# apt-get install mysql-server -y

─# mysql -u root -p
Introducir contraseña:
Bienvenido al monitor MySQL. Los comandos terminan en ; o \g.
Su ID de conexión MySQL es 9
Versión del servidor: 9.2.0 MySQL Community Server - GPL

Copyright (c) 2000, 2025, Oracle y/o sus filiales.

Oracle es una marca registrada de Oracle Corporation y/o sus
afiliados. Otros nombres pueden ser marcas comerciales de sus respectivos
propietarios.

Escriba 'help;' o '\h' para obtener ayuda. Escriba '\c' para borrar la instrucción de entrada actual.

mysql> estado
--------------
MySQL versión 9.2.0 para Linux en x86_64 (Servidor comunitario MySQL - GPL)

ID de conexión: 9
Base de datos actual:
Usuario actual: root@localhost
SSL: No en uso
Buscador actual: stdout
Usando archivo de salida: ''
Usando delimitador: ;
Versión del servidor: 9.2.0 MySQL Community Server - GPL
Versión del protocolo: 10
Conexión: Localhost a través de socket UNIX
Conjunto de caracteres del servidor: utf8mb4
Conjunto de caracteres de la base de datos: utf8mb4
Conjunto de caracteres del cliente: utf8mb4
Conjunto de caracteres de Conn.: utf8mb4
Zócalo UNIX: /var/run/mysqld/mysqld.sock
Datos binarios como: Hexadecimal
Tiempo de actividad: 47 segundos

Hilos: 2 Preguntas: 6 Consultas lentas: 0 Aperturas: 119 Tablas vaciadas: 3 Tablas abiertas: 38 Consultas por segundo promedio: 0,127

Clúster NDB de innovación de MySQL 

gato /etc/red/interfaces
auto ens18
iface ens18 inet estático
    dirección 192.168.3.102
    máscara de red 255.255.255.0
    puerta de enlace 192.168.3.1
    servidores de nombres dns 8.8.8.8 8.8.4.4

auto ens18
iface ens18 inet estático
    dirección 192.168.3.103
    máscara de red 255.255.255.0
    puerta de enlace 192.168.3.1
    servidores de nombres dns 8.8.8.8 8.8.4.4

auto ens18
iface ens18 inet estático
    dirección 192.168.3.103
    máscara de red 255.255.255.0
    puerta de enlace 192.168.3.1
    servidores de nombres dns 8.8.8.8 8.8.4.4

# apt install gnupg -y
# cd /usr/local/src/
# wget https://dev.mysql.com/get/mysql-apt-config_0.8.33-1_all.deb
# dpkg -i mysql-apt-config_0.8.33-1_all.deb

│¿Qué versión de servidor deseas recibir?                                                                                                                            
 MySQL-8.0  
 innovación en MySQL     
 MySQL-8.4-lts        
 clúster mysql-8.0       
 mysql-cluster-innovation <-- Elegí esto    
 clúster mysql-8.4-lts   
 Ninguno

 ¿Qué producto MySQL desea configurar?                                                                             
  Servidor y clúster MySQL (actualmente seleccionado: mysql-cluster-innovation)  
  Conectores MySQL (actualmente seleccionado: habilitado)     
  De acuerdo

# apt-get update
# apt-get install mysql-cluster-community-server -y
# apt-get install mysql-cluster-community-management-server <-- podemos elegir más tarde cuál usar
# apt-get install mysql-cluster-community-data-node -y

# vi /etc/mysql/conf.d/mysql.cnf

[mysqld]
# Opciones para el proceso mysqld:
ndbcluster # ejecuta el motor de almacenamiento NDB

[clúster mysql]
# Opciones para procesos de clúster NDB:
ndb-connectstring=192.168.3.102 # ubicación del servidor de administración

# mkdir /var/lib/mysql-cluster
# cd /var/lib/mysql-cluster
# vi config.ini
[ndbd predeterminado]
# Opciones que afectan a los procesos ndbd en todos los nodos de datos:
NoOfReplicas=2 # Número de réplicas de fragmentos
DataMemory=98M # Cuánta memoria asignar para el almacenamiento de datos

[ndb_mgmd]
#Opciones del proceso de gestión:
HostName=192.168.3.102 # Nombre de host o dirección IP del nodo de administración
DataDir=/var/lib/mysql-cluster # Directorio para los archivos de registro del nodo de administración

[ndbd]
# Opciones para el nodo de datos "A":
                                # (una sección [ndbd] por nodo de datos)
HostName=192.168.3.103 # Nombre de host o dirección IP
NodeId=2 # ID de nodo para este nodo de datos
DataDir=/var/lib/mysql/data # Directorio para los archivos de datos de este nodo de datos

[ndbd]
# Opciones para el nodo de datos "B":
HostName=192.168.3.104 # Nombre de host o dirección IP
NodeId=3 # ID de nodo para este nodo de datos
DataDir=/var/lib/mysql/data # Directorio para los archivos de datos de este nodo de datos

[mysqld]
# Opciones del nodo SQL:
HostName=192.168.3.102 # Nombre de host o dirección IP
                                # (se pueden agregar conexiones mysqld adicionales)
                                # especificado para este nodo para varios
                                # propósitos como ejecutar ndb_restore)


┌──(root㉿ndb1)-[/var/lib/mysql-cluster]
└─# ndb_mgmd --initial -f /var/lib/mysql-cluster/config.ini
Servidor de administración de clústeres MySQL mysql-9.2.0 ndb-9.2.0
ADVERTENCIA: --ndb-connectstring se ignora cuando mgmd se inicia con -f o config-file.

┌──(root㉿ndb2)-[/var/lib/mysql-cluster]
└─# ndbd
2025-04-01 11:53:11 [ndbd] INFO: Ángel conectado a '192.168.3.102:1186'
2025-04-01 11:53:12 [ndbd] INFO -- Ángel asignó nodeid: 2

┌──(root㉿ndb3)-[/var/lib/mysql-cluster]
└─# ndbd
2025-04-01 11:53:19 [ndbd] INFO: Ángel conectado a '192.168.3.102:1186'
2025-04-01 11:53:20 [ndbd] INFO -- Ángel asignó nodeid: 3


┌──(root㉿ndb1)-[/var/lib/mysql-cluster]
└─# ndb_mgm
-- Clúster NDB -- Cliente de administración --
ndb_mgm> mostrar
Conectado al servidor de administración en el puerto 1186 192.168.3.102 (usando texto sin cifrar)
Configuración del clúster
---------------------
[ndbd(NDB)] 2 nodo(s)
id=2 @192.168.3.103 (mysql-9.2.0 ndb-9.2.0, Grupo de nodos: 0, *)
id=3 @192.168.3.104 (mysql-9.2.0 ndb-9.2.0, Grupo de nodos: 0)

[ndb_mgmd(MGM)] 1 nodo(s)
id=1 @192.168.3.102 (mysql-9.2.0 ndb-9.2.0)

[mysqld(API)] 1 nodo(s)
id=4 (no conectado, aceptando conexión desde 192.168.3.102)

┌──(root㉿ndb1)-[/var/lib/mysql-cluster]
└─# mysql -u root -p -e "seleccionar @@nombredehost"
Introducir contraseña:
+-------------------+
| @@nombredehost |
+-------------------+
| ndb1.sqlhjalp.com |
+-------------------+

┌──(root㉿ndb2)-[/var/lib/mysql-cluster]
└─# mysql -u root -p -e "seleccionar @@nombredehost"
Introducir contraseña:
+-------------------+
| @@nombredehost |
+-------------------+
| ndb2.sqlhjalp.com |
+-------------------+

┌──(root㉿ndb3)-[/var/lib/mysql-cluster]
└─# mysql -u root -p -e "seleccionar @@nombredehost"
Introducir contraseña:
+-------------------+
| @@nombredehost |
+-------------------+
| ndb3.sqlhjalp.com |
+-------------------+

Servidor Percona 

# gato /etc/red/interfaces
 
auto ens18
iface ens18 inet estático
    dirección 192.168.3.105
    máscara de red 255.255.255.0
    puerta de enlace 192.168.3.1
    servidores de nombres dns 8.8.8.8 8.8.4.4

# apt install curl gnupg gnupg2 lsb-release -y
# cd /usr/local/src/
# curl -O https://repo.percona.com/apt/percona-release_latest.generic_all.deb
# dpkg -i percona-release_latest.generic_all.deb
# percona-release habilitar-solo ps-84-lts lanzamiento
# percona-release habilitar la liberación de herramientas
# apt install percona-server-server

┌──(root㉿ps1)-[/usr/local/src]
└─# ps -ef |grep mysql
MySQL 5832 1 0 11:58? 00:00:03 /usr/sbin/mysqld
raíz 5924 501 0 12:04 pts/1 00:00:00 grep --color=auto mysql

┌──(root㉿ps1)-[/usr/local/src]
└─# mysql -u root -p
Introducir contraseña:
Bienvenido al monitor MySQL. Los comandos terminan en ; o \g.
Su ID de conexión MySQL es 9
Versión del servidor: 8.4.4-4 Percona Server (GPL), versión '4', revisión '844fde07'

Copyright (c) 2009-2025 Percona LLC y/o sus afiliados
Copyright (c) 2000, 2025, Oracle y/o sus filiales.

Oracle es una marca registrada de Oracle Corporation y/o sus
afiliados. Otros nombres pueden ser marcas comerciales de sus respectivos
propietarios.

Escriba 'help;' o '\h' para obtener ayuda. Escriba '\c' para borrar la instrucción de entrada actual.

Clúster Percona 

# gato /etc/red/interfaces
iface ens18 inet estático
    dirección 192.168.3.106
    máscara de red 255.255.255.0
    puerta de enlace 192.168.3.1
    servidores de nombres dns 8.8.8.8 8.8.4.4

iface ens18 inet estático
    dirección 192.168.3.106
    máscara de red 255.255.255.0
    puerta de enlace 192.168.3.1
    servidores de nombres dns 8.8.8.8 8.8.4.4

iface ens18 inet estático
    dirección 192.168.3.106
    máscara de red 255.255.255.0
    puerta de enlace 192.168.3.1
    servidores de nombres dns 8.8.8.8 8.8.4.4

# apt install curl gnupg gnupg2 lsb-release -y
# cd /usr/local/src/
# curl -O https://repo.percona.com/apt/percona-release_latest.generic_all.deb
# dpkg -i percona-release_latest.generic_all.deb
# actualización apta
# configuración de percona-release pxc80
# apt install -y percona-xtradb-cluster

 
gato /etc/my.cnf
[cliente]
socket=/var/run/mysqld/mysqld.sock

[copia de seguridad adicional]
límite de archivos abiertos = 1000000

[mysqld]
id del servidor=1
directorio de datos=/var/lib/mysql
socket=/var/run/mysqld/mysqld.sock
error de registro=/var/log/mysql/error.log
archivo pid=/var/run/mysqld/mysqld.pid
ruta-de-registro-segura=/var/lib/archivos-mysql/
# El período de expiración del registro binario es de 604800 segundos, lo que equivale a 7 días.
binlog_expire_logs_segundos=604800

userstat = 1

 └─# cat /etc/my.cnf | grep cifrar
pxc-encrypt-cluster-traffic = DESACTIVADO
 
┌──(raíz㉿pxc1)-[/]
└─# cat /etc/my.cnf | grep dirección
dirección_del_clúster_wsrep = gcomm://192.168.3.106,192.168.3.107,192.168.3.108
# Dirección IP del nodo
dirección_del_nodo_wsrep=192.168.3.106

┌──(raíz㉿pxc1)-[/etc/mysql/conf.d]
└─# systemctl start mysql@bootstrap

mysql> muestra el estado como 'wsrep_c%';
+------------------------------+--------------------------------------+
| Nombre_de_variable | Valor |
+------------------------------+--------------------------------------+
| wsrep_cert_deps_distance | 0 |
|wsrep_commit_oooe | 0 |
|wsrep_commit_oool | 0 |
| ventana de confirmación wsrep | 0 |
| tamaño del índice del certificado wsrep | 0 |
| recuento de cubos de certificados wsrep | 1 |
| wsrep_causal_reads | 0 |
| intervalo_cert_wsrep | 0 |
| peso_del_clúster_wsrep | 1 |
| wsrep_cluster_capacidades | |
| id de configuración del clúster wsrep | 1 |
| tamaño del clúster wsrep | 1 |
| uuid del estado del clúster wsrep | 71a6ebf4-0f20-11f0-b4eb-0a0f463a7185 |
| wsrep_cluster_status | Primario |
| wsrep_connected | ENCENDIDO |
+------------------------------+--------------------------------------+
15 filas en conjunto (0,00 segundos)

┌──(raíz㉿pxc2)-[/etc.]
└─# cat /etc/my.cnf | grep dirección
dirección_del_clúster_wsrep = gcomm://192.168.3.106,192.168.3.107,192.168.3.108
# Dirección IP del nodo
dirección_del_nodo_wsrep=192.168.3.107

┌──(raíz㉿pxc2)-[/var/lib/mysql]
└─# rm -Rf *

┌──(raíz㉿pxc2)-[/var/lib/mysql]
└─# ls -tla
total 8
drwxr-x--- 2 mysql mysql 4096 1 de abril 13:36 .
drwxr-xr-x 26 raíz raíz 4096 1 abr 12:34 ..

┌──(raíz㉿pxc2)-[/var/lib/mysql]
└─# systemctl iniciar mysql

┌──(raíz㉿pxc2)-[/etc.]
└─# cat /etc/my.cnf | grep dirección
dirección_del_clúster_wsrep = gcomm://192.168.3.106,192.168.3.107,192.168.3.108
# Dirección IP del nodo
dirección_del_nodo_wsrep=192.168.3.107
 ┌──(raíz㉿pxc3)-[/var/lib/mysql]
└─# rm -Rf *

┌──(raíz㉿pxc3)-[/var/lib/mysql]
└─# systemctl iniciar mysql


mysql> muestra el estado como 'wsrep_c%';
+------------------------------+--------------------------------------+
| Nombre_de_variable | Valor |
+------------------------------+--------------------------------------+
| wsrep_cert_deps_distance | 0 |
|wsrep_commit_oooe | 0 |
|wsrep_commit_oool | 0 |
| ventana de confirmación wsrep | 0 |
| tamaño del índice del certificado wsrep | 0 |
| recuento de cubos de certificados wsrep | 1 |
| wsrep_causal_reads | 0 |
| intervalo_cert_wsrep | 0 |
| peso_del_clúster_wsrep | 3 |
| wsrep_cluster_capacidades | |
| id de configuración del clúster wsrep | 3 |
| tamaño del clúster wsrep | 3 |
| uuid del estado del clúster wsrep | 71a6ebf4-0f20-11f0-b4eb-0a0f463a7185 |
| wsrep_cluster_status | Primario |
| wsrep_connected | ENCENDIDO |
+------------------------------+--------------------------------------+
15 filas en conjunto (0,00 segundos)

Configurar exportadores MySQL y Prometheus 

por cada máquina...

apt install -y prometheus-mysqld-exporter
 
CREAR USUARIO SI NO EXISTE 'prometheus'@'localhost' IDENTIFICADO POR '<PASSWORDHERE>'; 
mysql> mostrar concesiones para 'prometheus'@'localhost'; +------------------------------------------------------------------------------+ | Subvenciones para prometheus@localhost | +------------------------------------------------------------------------------+ | CONCEDER SELECCIONAR, PROCESAR, REPLICACIÓN CLIENTE EN *.* A `prometheus`@`localhost` | +------------------------------------------------------------------------------+ 1 fila en el conjunto (0,00 s) ┌──(raíz㉿pxc1)-[~] └─# ls -ltr /etc/mysql/debian.cnf -rw-r--r-- 1 root root 50 1 de abril 16:52 /etc/mysql/debian.cnf # vi /etc/default/prometheus-mysqld-exporter systemctl reiniciar prometheus-mysqld-exporter.service # systemctl reiniciar prometheus-mysqld-exporter.service

Servidor Prometeo 

raíz@prometheus:/etc/prometheus# vi prometheus.yml


  - nombre_trabajo: mysqld-exporter
    configuraciones estáticas:
      - objetivos:
          - 'mysql1.sqlhjalp.com:9104'
          - 'mariadb1.sqlhjalp.com:9104'
          - 'ps1.sqlhjalp.com:9104'
          - 'pxc1.sqlhjalp.com:9104'
          - 'pxc2.sqlhjalp.com:9104'
          - 'pxc3.sqlhjalp.com:9104'
          - 'ndb1.sqlhjalp.com:9104'
          - 'ndb2.sqlhjalp.com:9104'
          - 'ndb3.sqlhjalp.com:9104'
        etiquetas:
          país: EE. UU.
          db_env: 'inicio'
          entorno: "demo"
          Linux: Debian
          nodouse: servidor


mysql_up{entorno="demo"}

Valor del elemento
mysql_up{país="EE. UU.", db_env="inicio", entorno="demo", instancia="mariadb1.sqlhjalp.com:9104", trabajo="mysqld-exporter", linux="debian", nodeuse="servidor"} 1
mysql_up{país="EE. UU.", db_env="inicio", entorno="demo", instancia="mysql1.sqlhjalp.com:9104", trabajo="mysqld-exporter", linux="debian", nodeuse="servidor"} 1
mysql_up{país="EE. UU.", db_env="inicio", entorno="demo", instancia="ndb1.sqlhjalp.com:9104", trabajo="mysqld-exporter", linux="debian", nodeuse="servidor"} 1
mysql_up{país="EE. UU.", db_env="inicio", entorno="demo", instancia="ndb2.sqlhjalp.com:9104", trabajo="mysqld-exporter", linux="debian", nodeuse="servidor"} 1
mysql_up{país="EE. UU.", db_env="inicio", entorno="demo", instancia="ndb3.sqlhjalp.com:9104", trabajo="mysqld-exporter", linux="debian", nodeuse="servidor"} 1
mysql_up{país="EE. UU.", db_env="inicio", entorno="demo", instancia="ps1.sqlhjalp.com:9104", trabajo="mysqld-exporter", linux="debian", nodeuse="servidor"} 1
mysql_up{país="EE. UU.", db_env="inicio", entorno="demo", instancia="pxc1.sqlhjalp.com:9104", trabajo="mysqld-exporter", linux="debian", nodeuse="servidor"} 1
mysql_up{país="EE. UU.", db_env="inicio", entorno="demo", instancia="pxc2.sqlhjalp.com:9104", trabajo="mysqld-exporter", linux="debian", nodeuse="servidor"} 1
mysql_up{país="EE. UU.", db_env="inicio", entorno="demo", instancia="pxc3.sqlhjalp.com:9104", trabajo="mysqld-exporter", linux="debian", nodeuse="servidor"} 1

Configuración de la cuenta de Vault 

mysql>CREAR ROL SI NO EXISTE vaultaccess;
mysql> CONCEDER SELECCIONAR, INSERTAR, ACTUALIZAR, ELIMINAR, CREAR, ELIMINAR, RECARGAR, PROCESAR, ARCHIVO, REFERENCIAS, ÍNDICE, ALTERAR, MOSTRAR BASES DE DATOS, SUPER, CREAR TABLAS TEMPORALES, BLOQUEAR TABLAS, EJECUTAR, CREAR VISTA, MOSTRAR VISTA, CREAR USUARIO, EVENTO, DISPARADOR, CREAR ESPACIO DE TABLA, CREAR ROL, ELIMINAR ROL EN *.* A `vaultaccess`@`%` CON OPCIÓN DE CONCESIÓN;
 
CREAR USUARIO `vaultadmin`@`%` IDENTIFICADO POR '<PASSWORDHERE>' ROL PREDETERMINADO `vaultaccess`@`%` NO REQUIERE CONTRASEÑA NINGUNA CADUCIDAD DE CONTRASEÑA DESBLOQUEAR CUENTA PREDETERMINADA HISTORIAL DE CONTRASEÑAS INTERVALO DE REUTILIZACIÓN DE CONTRASEÑAS PREDETERMINADA CONTRASEÑA PREDETERMINADA REQUIERE ACTUAL PREDETERMINADA ;
mysql> mostrar concesiones para vaultadmin;

CREAR ROL SI NO EXISTE SOLO LECTURA;
CONCEDER SELECCIONAR, EJECUTAR EN *.* A `SOLO LECTURA`@`%` ;

Mariadb

MariaDB [(none)]> CREAR USUARIO `vaultadmin`@`%` IDENTIFICADO POR '<PASSWORDHERE>'; 
MariaDB [(none)]> CONCEDER SELECCIONAR, INSERTAR, ACTUALIZAR, ELIMINAR, CREAR, ELIMINAR, RECARGAR, PROCESAR, ARCHIVO, REFERENCIAS, ÍNDICE, ALTERAR, MOSTRAR BASES DE DATOS, SUPER, CREAR TABLAS TEMPORALES, BLOQUEAR TABLAS, EJECUTAR, CREAR VISTA, MOSTRAR VISTA, CREAR USUARIO, EVENTO, DISPARADOR, CREAR ESPACIO DE TABLA EN *.* A `vaultadmin`@`%` CON OPCIÓN DE CONCESIÓN;

Motor de base de datos Vault: se repite por instancia de base de datos 

bóveda escribir base de datos/config/MYSQL plugin_name=mysql-database-plugin connection_url="{{nombre de usuario}}:{{contraseña}}@tcp(mysql1.sqlhjalp.com:3306)/" roles_permitidos="mi-rol" nombre_de_usuario="vaultadmin" contraseña="<CONTRASEÑA>"
bóveda lee base de datos/configuración/MYSQL Valor clave --- ----- roles permitidos [] detalles_de_conexión map[backend:base_de_datos url_de_conexión:{{nombre_de_usuario}}:{{contraseña}}@tcp(mysql1.sqlhjalp.com:3306)/ duración_máxima_de_conexión:0s conexiones_máximas_inactivas:0 conexiones_máximas_abiertas:4 nombre_de_usuario:vaultadmin] deshabilitar_rotación_automatizada falso política de contraseñas n/a nombre_del_complemento complemento-de-base-de-datos-mysql plugin_version n/a declaraciones de rotación de credenciales raíz [] período de rotación 0 s horario de rotación n/a ventana de rotación 0 rotación de importación de rol estático de salto falso verificar_conexión verdadero base de datos de lectura de bóveda/roles/DEMOREADONLY Valor clave --- ----- creation_statements [CREAR USUARIO '{{name}}'@'%' IDENTIFICADO POR '{{password}}'; CONCEDER SELECCIONAR *.* A '{{name}}'@'%';] tipo_de_credencial contraseña nombre_base_datos MYSQL valor predeterminado_ttl 1h máx. ttl 24 h renovar_declaraciones [] declaraciones_de_revocación [ELIMINAR USUARIO SI EXISTE '{{nombre}}'@'%';] declaraciones_de_reversión []

Ejemplo de usuario dinámico de Vault 

base de datos de lectura de bóveda/creds/DEMOREADONLY
Valor clave
--- -----
base de datos de id de arrendamiento/creds/DEMOREADONLY/1SACMdnTGXseMewbA6ek1T42
duración del arrendamiento 1h
arrendamiento_renovable verdadero
contraseña -piWu8YfOFxUkAqR347a
nombre de usuario v-contraseña-k-DEMOREADON-HFRYaNGE


mysql> mostrar concesiones para 'v-userpass-k-DEMOREADON-HFRYaNGE'@'%';
+------------------------------------------------------------------------+
| Subvenciones para v-userpass-k-DEMOREADON-HFRYaNGE@% |
+------------------------------------------------------------------------+
| CONCEDER SELECCIONAR EN *.* A `v-userpass-k-DEMOREADON-HFRYaANGE`@`%` |
+------------------------------------------------------------------------+
1 fila en el conjunto (0,00 s)

Además..... 

POSTGRESQL

https://docs.vultr.com/how-to-install-postgresql-on-debian-12

# apt install -y postgresql-common
# /usr/share/postgresql-common/pgdg/apt.postgresql.org.sh
# actualización apta
# política de apt-cache postgresql
# apt install postgresql -y
# systemctl iniciar postgresql
# estado del sistema postgresql
# sudo -u postgres psqlsudo -u postgres psql
# postgres=# ALTERAR ROL postgres CON CONTRASEÑA CIFRADA '<contraseña>';
ALTERAR ROL
#

Base de datos Oracle XE 


wget https://download.oracle.com/otn-pub/otn_software/db-express/oracle-database-xe-21c-1.0-1.ol8.x86_64.rpm
wget https://yum.oracle.com/repo/OracleLinux/OL8/appstream/x86_64/getPackage/oracle-database-preinstall-21c-1.0-1.el8.x86_64.rpm

# yum install ./oracle-database-xe-21c-1.0-1.ol8.x86_64.rpm ./oracle-database-preinstall-21c-1.0-1.el8.x86_64.rpm

# /etc/init.d/oracle-xe-21c configurar

$ exportar ORACLE_SID=XE
$ exportar ORAENV_ASK=NO
$ . /opt/oracle/producto/21c/dbhomeXE/bin/oraenv

ORACLE_HOME = [] ? /opt/oracle/producto/21c/dbhomeXE
La base de Oracle se ha establecido en /opt/oracle


[root@localhost ~]# echo $ORACLE_HOME
/opt/oracle/producto/21c/dbhomeXE
[root@localhost ~]# cd $ORACLE_HOME
[root@localhost dbhomeXE]# pwd
/opt/oracle/producto/21c/dbhomeXE

[root@localhost dbhomeXE]# cd bin

[root@localhost bin]# sqlplus /nolog

SQL*Plus: Versión 21.0.0.0.0 - Producción el jueves 3 de abril de 2025 a las 10:35:15
Versión 21.3.0.0.0

Copyright (c) 1982, 2021, Oracle. Todos los derechos reservados.

SQL>

SQL> CONECTAR SYS COMO SYSDBA
Introducir contraseña:
Conectado.
SQL>

SQL> establecer tamaño de línea 1500
SQL> seleccione nombre de usuario, estado_de_cuenta de DBA_USERS;

NOMBRE DE USUARIO ESTADO DE LA CUENTA
-------------------------------------------------------------------------------------------------------------------------------- --------------------------------
SISTEMA ABIERTO
SISTEMA ABIERTO
XS$NULL BLOQUEADO
OJVMSYS BLOQUEADO
LBACSYS BLOQUEADO
BLOQUEADO FUERA
DBSNMP BLOQUEADO
APPQOSSYS BLOQUEADO
DBSFWUSER BLOQUEADO
GGSYS BLOQUEADO
ANÓNIMO BLOQUEADO
 
SQL> SALIR
Desconectado de Oracle Database 21c Express Edition versión 21.0.0.0.0 - Producción
Versión 21.3.0.0.0

SQLSERVER 

# curl -o /etc/yum.repos.d/mssql-server.repo https://packages.microsoft.com/config/rhel/8/mssql-server-2022.repo
# yum install -y mssql-server
# /opt/mssql/bin/mssql-conf configuración
# estado del sistema mssql-server

curl https://packages.microsoft.com/config/rhel/8/prod.repo | sudo tee /etc/yum.repos.d/mssql-release.repo

# yum install -y mssql-tools18 unixODBC-devel

# yum check-update
# yum update mssql-tools18

echo 'export PATH="$PATH:/opt/mssql-tools18/bin"' >> ~/.bash_profile
fuente ~/.bash_profile

# /opt/mssql/bin/mssql-conf establecer-contraseña-sa
Introduzca la contraseña de administrador del sistema SQL Server:
Confirme la contraseña del administrador del sistema SQL Server:
Configurando SQL Server...

# sqlcmd -S localhost -No -U sa

# sqlcmd -S localhost -No -U sa
Contraseña:
1> CREAR BASE DE DATOS TestDB;
2> SELECCIONAR Nombre DE sys.databases;
3> IR
Nombre
--------------------------------------------------------------------------------------------------------------------------------
maestro
base de datos temporal
modelo
base de datos de datos de masas
Base de datos de pruebas

(5 filas afectadas)


USO TestDB;

CREAR TABLA dbo.Inventario
(
    id INT, nombre NVARCHAR (50), cantidad INT, CLAVE PRIMARIA (id)
);
Dios mío

INSERTAR EN dbo.Inventory VALORES (1, 'banana', 150);
INSERTAR EN dbo.Inventory VALORES (2, 'naranja', 154);

IR


SELECCIONAR * DE dbo.Inventario DONDE cantidad > 152;
IR

1> SELECCIONAR * DE dbo.Inventario;
2> IR
id nombre cantidad
----------- -------------------------------------------------- -----------
          1 plátano 150
          2 naranjas 154

MONGODB - PERCONA

https://docs.percona.com/percona-server-for-mongodb/8.0/install/apt.html

# apt install -y gnupg2 gnupg curl
# wget https://repo.percona.com/apt/percona-release_latest.$(lsb_release -sc)_all.deb
# dpkg -i percona-release_latest.$(lsb_release -sc)_all.deb
# percona-release --help | grep psmdb
psmdb36 psmdb40 psmdb42 psmdb44 psmdb60 psmdb50 psmdb70 psmdb80 psmdb40
psmdb60pro psmdb70pro
psmdb-70-pro psmdb-60-pro
psmdb-36 psmdb-40 psmdb-42 psmdb-44 psmdb-60 psmdb-50 psmdb-70 psmdb-80 psmdb40
psmdb-60-pro psmdb-70-pro
psmdb-70-pro psmdb-60-pro

# percona-release habilita la versión psmdb-80
# actualización apta
# apt install percona-server-mongodb
# apt-cache madison percona-server-mongodb
# ls -ltr /etc/mongod.conf
-rw-r--r-- 1 root root 1403 11 feb 23:56 /etc/mongod.conf

# vi /etc/systemd/system/enable-transparent-huge-pages.service
# cat /etc/systemd/system/enable-transparent-huge-pages.service
[Unidad]
Descripción=Habilitar páginas enormes transparentes (THP)
Dependencias predeterminadas=no
Después de=sysinit.target local-fs.target
Antes=mongod.service

[Servicio]
Tipo=one-shot
ExecStart=/bin/sh -c 'echo siempre | tee /sys/kernel/mm/transparent_hugepage/enabled > /dev/null && echo defer+madvise | tee /sys/kernel/mm/transparent_hugepage/defrag > /dev/null && echo 0 | tee /sys/kernel/mm/transparent_hugepage/khugepaged/max_ptes_none > /dev/null && echo 1 | tee /proc/sys/vm/overcommit_memory > /dev/null'

[Instalar]
WantedBy=objetivo básico

# systemctl daemon-reload
# systemctl start habilitar páginas transparentes enormes
# cat /sys/kernel/mm/transparent_hugepage/enabled && cat /sys/kernel/mm/transparent_hugepage/defrag && cat /sys/kernel/mm/transparent_hugepage/khugepaged/max_ptes_none && cat /proc/sys/vm/overcommit_memory
[siempre] madvise nunca
siempre aplazar [aplazar+madvise] madvise nunca
0
1

# systemctl enable habilitar páginas grandes transparentes
# ls -lr /var/lib/mongodb/
total 0


# systemctl iniciar mongod
# estado del control del sistema mongod
#mongosh
ID de registro actual de Mongosh: 67ed4eb0cd874b942d98ebcf
Conectándose a: mongodb://127.0.0.1:27017/?directConnection=true&serverSelectionTimeoutMS=2000&appName=mongosh+2.3.2
MongoNetworkError: conexión ECONNREFUSED 127.0.0.1:27017

MONGODB

https://www.mongodb.com/docs/manual/tutorial/install-mongodb-on-debian/

 
# apt-get install gnupg curl
# curl -fsSL https://www.mongodb.org/static/pgp/server-8.0.asc | \
   sudo gpg -o /usr/share/keyrings/mongodb-server-8.0.gpg \
  --dearmor
# echo "deb [ firmado por = /usr/share/keyrings/mongodb-server-8.0.gpg ] http://repo.mongodb.org/apt/debian bookworm/mongodb-org/8.0 main" | sudo tee /etc/apt/sources.list.d/mongodb-org-8.0.list
# apt-get update
# apt-get install -y mongodb-org
# systemctl daemon-reload
# ulimit -c ilimitado
# ulimit -n 64000
# ulimit -f ilimitado
# ulimit -t ilimitado
# ulimit -l ilimitado
# ulimit -m ilimitado
# ulimit -u 64000
# ulimit -a
tiempo real sin bloqueo (microsegundos, -R) ilimitado
tamaño del archivo principal (bloques, -c) ilimitado
tamaño del segmento de datos (kbytes, -d) ilimitado
prioridad de programación (-e) 0
tamaño de archivo (bloques, -f) ilimitado
señales pendientes (-i) 15471
memoria bloqueada máxima (kbytes, -l) ilimitada
tamaño máximo de memoria (kbytes, -m) ilimitado
archivos abiertos (-n) 64000
tamaño de la tubería (512 bytes, -p) 8
Colas de mensajes POSIX (bytes, -q) 819200
prioridad en tiempo real (-r) 0
tamaño de pila (kbytes, -s) 8192
tiempo de CPU (segundos, -t) ilimitado
máximo de procesos de usuario (-u) 64000
memoria virtual (kbytes, -v) ilimitada
bloqueos de archivos (-x) ilimitados

# systemctl iniciar mongod

# wget https://repo.percona.com/apt/percona-release_latest.$(lsb_release -sc)_all.deb
# dpkg -i percona-release_latest.$(lsb_release -sc)_all.deb
# percona-release --help | grep psmdb
psmdb36 psmdb40 psmdb42 psmdb44 psmdb60 psmdb50 psmdb70 psmdb80 psmdb40
psmdb60pro psmdb70pro
psmdb-70-pro psmdb-60-pro
psmdb-36 psmdb-40 psmdb-42 psmdb-44 psmdb-60 psmdb-50 psmdb-70 psmdb-80 psmdb40
psmdb-60-pro psmdb-70-pro
psmdb-70-pro psmdb-60-pro

# percona-release habilita la versión psmdb-80
# actualización apta
# apt install percona-server-mongodb
# apt-cache madison percona-server-mongodb
# ls -ltr /etc/mongod.conf
-rw-r--r-- 1 root root 1403 11 feb 23:56 /etc/mongod.conf

# vi /etc/systemd/system/enable-transparent-huge-pages.service
# cat /etc/systemd/system/enable-transparent-huge-pages.service
[Unidad]
Descripción=Habilitar páginas enormes transparentes (THP)
Dependencias predeterminadas=no
Después de=sysinit.target local-fs.target
Antes=mongod.service

[Servicio]
Tipo=one-shot
ExecStart=/bin/sh -c 'echo siempre | tee /sys/kernel/mm/transparent_hugepage/enabled > /dev/null && echo defer+madvise | tee /sys/kernel/mm/transparent_hugepage/defrag > /dev/null && echo 0 | tee /sys/kernel/mm/transparent_hugepage/khugepaged/max_ptes_none > /dev/null && echo 1 | tee /proc/sys/vm/overcommit_memory > /dev/null'

[Instalar]
WantedBy=objetivo básico

# systemctl daemon-reload
# systemctl start habilitar páginas transparentes enormes
# cat /sys/kernel/mm/transparent_hugepage/enabled && cat /sys/kernel/mm/transparent_hugepage/defrag && cat /sys/kernel/mm/transparent_hugepage/khugepaged/max_ptes_none && cat /proc/sys/vm/overcommit_memory
[siempre] madvise nunca
siempre aplazar [aplazar+madvise] madvise nunca
0
1

# systemctl enable habilitar páginas grandes transparentes
# ls -lr /var/lib/mongodb/
total 0


# systemctl iniciar mongod
# estado del control del sistema mongod
#mongosh
ID de registro actual de Mongosh: 67ed4eb0cd874b942d98ebcf
Conectándose a: mongodb://127.0.0.1:27017/?directConnection=true&serverSelectionTimeoutMS=2000&appName=mongosh+2.3.2
MongoNetworkError: conexión ECONNREFUSED 127.0.0.1:27017


CASANDRA

https://docs.vultr.com/how-to-install-apache-cassandra-on-debian-12

# actualización apta
# gato /etc/apt/source.list
deb https://deb.debian.org/debian bookworm principal firmware no libre
deb http://deb.debian.org/debian bookworm-updates principal
deb http://deb.debian.org/debian-security bookworm-security principal
deb http://deb.debian.org/debian inestable principal no libre contribuciones

# actualización apta
# apt install curl
# apt install openjdk-17-jdk
# java --versión
openjdk 17.0.14 21/01/2025
Entorno de ejecución de OpenJDK (compilación 17.0.14+7-Debian-1deb12u1)
Máquina virtual de servidor OpenJDK de 64 bits (compilación 17.0.14+7-Debian-1deb12u1, modo mixto, uso compartido)

# echo "deb [firmado por=/etc/apt/keyrings/apache-cassandra.asc] https://debian.cassandra.apache.org 41x main" | sudo tee -a /etc/apt/sources.list.d/cassandra.sources.list
# curl -o /etc/apt/keyrings/apache-cassandra.asc https://downloads.apache.org/cassandra/KEYS
# actualización apta
# apt install cassandra

# ls -lr /etc/cassandra/cassandra.yaml
-rw-r--r-- 1 raíz raíz 91468 27 ene 07:28 /etc/cassandra/cassandra.yaml

# vi /etc/cassandra/cassandra.yaml
# systemctl reiniciar cassandra

# ls -lr /var/log/cassandra/
total 0

# estado del control del sistema cassandra
# estado de nodetool
nodetool: No se pudo conectar a '127.0.0.1:7199' - ConnectException: 'Conexión rechazada'.

# cqlsh -u cassandra -p cassandra

Advertencia: usar una contraseña en la interfaz de la línea de comandos puede ser inseguro.
Recomendación: utilice el archivo de credenciales para proporcionar la contraseña de forma segura.

Error de conexión: ('No se puede conectar a ningún servidor', {'127.0.0.1:9042': ConnectionRefusedError(111, "Se intentó conectar a [('127.0.0.1', 9042)]. Último error: Conexión rechazada")})