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:
- Mini PC R1 Intel N100 4C/4T, compatible con 44T (2 x 22T), almacenamiento de 2 bahías, mini PC 3 en 1, 32 GB DDR4, 1 TB NVME SSD, Windows WiFi 6, enrutador de software LAN dual de 2,5 G, HTPC
- Mini PC GMKtec G3 Plus, Intel Twin Lake N150 (N100 mejorado), 16 GB de RAM, 512 GB de SSD M.2 2280, minicomputadora de escritorio con doble HDMI/WiFi 6/BT5.2
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)
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")})