SQL Server: Cheat Sheet para Desarrolladores y Administradores

Introducción a SQL:

¿Qué es SQL? SQL (Structured Query Language) es un lenguaje de programación diseñado para gestionar y manipular datos almacenados en sistemas de gestión de bases de datos relacionales (RDBMS). Con SQL, puedes realizar diversas operaciones, desde consultas básicas hasta tareas avanzadas de administración de bases de datos.

¿Por qué SQL es Importante? En el corazón de muchas aplicaciones y sistemas, SQL desempeña un papel crucial al permitir a los desarrolladores o administradores interactuar con bases de datos de manera eficiente. Con SQL, puedes extraer información específica, realizar actualizaciones, insertar datos y mucho más.

Estructura de la Guía:

  1. Conexión a la Base de Datos: Iniciaremos nuestro viaje aprendiendo cómo conectarnos a una base de datos, estableciendo los cimientos para nuestras futuras operaciones.

  2. Consultas Básicas: Exploraremos cómo realizar consultas simples a una sola tabla, aplicando condiciones, ordenando resultados y resumiendo datos.

  3. Manipulación de Datos: Aprenderemos a insertar, actualizar y eliminar datos, habilidades esenciales para la gestión efectiva de información.

  4. Funciones Útiles: Descubriremos funciones incorporadas que nos ayudarán a extraer información valiosa de nuestras bases de datos.

  5. Optimización de Consultas: Mejoraremos la eficiencia de nuestras consultas, utilizando índices y prácticas recomendadas.

  6. Administración y Mantenimiento: Exploraremos comandos clave para respaldar, restaurar y monitorear nuestras bases de datos.

  7. Ampliando el Cheat Sheet con Ejemplos Prácticos: Abordaremos situaciones más complejas, desde la copia de bases de datos hasta la gestión avanzada de permisos.

Leer más

Backup de MySQL en Azure Utilizando Azure Automation

Introducción

La seguridad y la disponibilidad de los datos son elementos fundamentales en cualquier infraestructura tecnológica. En este artículo, detallaremos el proceso de configuración de un backup automatizado para una base de datos MySQL alojada en una máquina virtual (VM) Linux en Azure. Utilizaremos Azure Automation y una Identidad Administrada por Usuario (UMI) para lograr una autenticación segura y eficiente.

backup Incremental y Full

Una de las características destacadas de este script es su capacidad para realizar backups incrementales diarios, seguidos de un full  backup  los domingos. Esto se logra gracias a la configuración del Binary Log en MySQL, que permite identificar y respaldar solo las actualizaciones realizadas desde el último backup.

Personalización del Horario de backup

Si deseas modificar el horario de los backups incrementales, especialmente si no deseas realizar el full backup  solo los domingos, el script es altamente personalizable. Los parámetros dayOfWeek y dayfullbackup te permiten ajustar fácilmente estos horarios según tus necesidades.

Leer más

Cluster PostgreSQL 13

En esta ocasión veremos como instalar y configurar un cluster en alta disponibilidad de base de datos bajo PostgreSQL 13.

n primer lugar agregamos el repositorio 

wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo apt-key add -
echo "deb http://apt.postgresql.org/pub/repos/apt/ $(lsb_release -cs)-pgdg main" | sudo tee /etc/apt/sources.list.d/postgresql-pgdg.list > /dev/null
Leer más

FATAL [search_phase_execution_exception] all shards failed :: {«path»:»/.kibana/doc/

En este POST veremos como solucionar este problema al iniciar Kibana, para solventarel problema creé un nuevo indice vació y mapee el antiguo al nuevo creado.

Al realizar un status del servicio podemos ver los siguientes errores:

May 24 11:29:01 kibana kibana[5107]: ason\":\"all shards failed\",\"phase\":\"query\",\"grouped\":true,\"failed_shards\":[]},\"status\":503}',\n  toStrin
May 24 11:29:01 kibana kibana[5107]:  FATAL  [search_phase_execution_exception] all shards failed :: {"path":"/.kibana/doc/_count","query":{},"body":"{\
Leer más

MySQL [ERROR] Can’t init tc log

Al intentar iniciar el servicio de mariadb comprobamos que no inicia

/etc/init.d/mysql status
mariadb.service – MariaDB database server
Loaded: loaded (/lib/systemd/system/mariadb.service; enabled; vendor preset: enabled)
Active: failed (Result: exit-code) since Thu 2018-08-09 12:43:52 CEST; 1min 3s ago
Process: 1241 ExecStart=/usr/sbin/mysqld $MYSQLD_OPTS $_WSREP_NEW_CLUSTER $_WSREP_START_POSITION (code=exited, status=1/FAILURE)
Process: 1151 ExecStartPre=/bin/sh -c [ ! -e /usr/bin/galera_recovery ] && VAR= || VAR=`/usr/bin/galera_recovery`; [ $? -eq 0 ] && systemctl set-environment _WSREP_START_POSITION=$VAR || exit 1 (code=exited, status=0/SUCCESS)
Process: 1148 ExecStartPre=/bin/sh -c systemctl unset-environment _WSREP_START_POSITION (code=exited, status=0/SUCCESS)
Process: 1145 ExecStartPre=/usr/bin/install -m 755 -o mysql -g root -d /var/run/mysqld (code=exited, status=0/SUCCESS)
Main PID: 1241 (code=exited, status=1/FAILURE)
Status: «MariaDB server is down»

Revisando el log comprobamos el siguiente error:

tail -3 /var/log/mysql/error.log
2018-08-09 12:45:00 139927639765568 [ERROR] Can’t init tc log
2018-08-09 12:45:00 139927639765568 [ERROR] Aborting

 

Eliminamos el log TC y iniciamos el servicio  de nuevo

rm /var/lib/mysql/tc.log

/etc/init.d/mysql start

 

:wq!

Script en bash para hacer backup de MySQL

En esta ocasión vamos a ver un pequeño script con el cual realizar backups de MySQL

 

#!/bin/bash

# Credenciales BBDD
user=»usuario»
password=»contraseña»
host=»localhost»
db_name=»bbdd»

# definimos las variables del path y la fecha
backup_path=»/backup»
date=$(date +»%d-%b-%Y»)

# Establecemos los permisos predeterminados
umask 177

# Dump de la base de datos
mysqldump –user=$user –password=$password –host=$host $db_name > $backup_path/$db_name-$date.sql

#Comprimir backup

xz -9 $backup_path/$db_name-$date.sql

# Eliminar archivos de más de 30 días
find $backup_path/* -mtime +30 -exec rm {} \;

 

lo añadimos en el crontab

rokitoh@red-orbita:# cronta -l

0 0 * * * /usr/bin/backupmysq.sh

 

Un saludo

:wq!