viernes, 12 de abril de 2019

Respaldo de bases de datos MySQL de un servidor Debian, con otro puesto de Debian, mediante Samba.

En el puesto debian (192.168.0.2), donde se destinará los respaldo del servidor MySQL/MariaDB (192.168.0.1), procedemos a configurar un servidor Samba que contendrá los siguientes recursos compartidos:
 
 #/etc/samba/smb.conf   
  [global]   
  workgroup = INFORMATICA   
  server string = Julio Alberto Lascano - (Samba Server %h)   
  netbios name = DEBIAN-JULIO   
  map to guest = bad user   
 # Depurar la información de registro  
 # log file  
  log file = /var/log/samba/log.%m  
 # nivel de registro general  
  log level = 3  
  [backup-mysql]   
  comment = solo para grupo administracion backup server mysql   
  path = /home/julio/backup/mysql   
  browseable = yes   
  read only = yes   
  guest ok = no   
  write list = @administracion   
  valid users = @administracion   
Hacemos un testparm para validar el contenido del fichero de configuración smb.conf

 root@sistem:/home/julio# testparm /etc/samba/smb.conf  
A continuación creamos el grupo y el usuario que manejará el acceso a samba. Creamos el grupo administracion.
 root@sistem:/home/julio# groupadd administracion  
Añadimos un usuario al grupo para hacer luego las pruebas (creamos el usuario en la máquina y después su password):
 root@sistem:/home/julio# useradd administracionuser  
 root@sistem:/home/julio# passwd administracionuser  
Añadimos el usuario administracionuser al grupo administracion.  Como ya existen, no usaremos
 root@sistem:/home/julio# useradd -g administracion administracionuser  
Sino:
 root@sistem:/home/julio# usermod -g administracion administracionuser  
Crear usuarios locales como usuarios de SAMBA
 root@sistem:/home/julio# smbpasswd -a administracionuser  
Permisos locales adecuados para los recursos compartidos SAMBA
 root@sistem:/home/julio# chmod 775 /home/julio/backup/mysql  
Y cambiamos el usuario y grupo propietarios al grupo que puede escribir :
 root@sistem:/home/julio# chown -hR root:administracion /home/julio/backup/mysql  
Reiniciamos el servidor SAMBA.
 root@sistem:/home/julio# /etc/init.d/samba-ad-dc restart  
Ahora desde el servidor debian mysql/mariadb (192.168.0.1) verficamos los recursos que está compartiendo el servidor SAMBA (192.168.0.2)
 root@sistem:/home/julio# smbclient --list 192.168.0.2  
Que nos mostrará una salida similar a esta:
 root@spse:/home/julio# smbclient --list 192.168.0.2  
 Enter root's password:   
 Domain=[INFORMATICA] OS=[Windows 6.1] Server=[Samba 4.2.14-Debian]  
      Sharename    Type   Comment  
      ---------    ----   -------  
      backup-mysql    Disk   solo para grupo administracion backup server mysql  
      IPC$      IPC    IPC Service (Julio Alberto Lascano - (Samba Server sistem))  
   Domain=[INFORMATICA] OS=[Windows 6.1] Server=[Samba 4.2.14-Debian]  
Finalizada la configuración del servidor Samba del puesto  192.168.0.2, procederemos a la creación de 2 (dos) scripts. en lenguaje bash.
Luego, serán agregados como tareas diarias automáticas, mediante crontab, en el Servidor MySQL/MariaDB 192.168.0.1
Los scripts :
 root@spse:/home/julio/fuentes/bash# ls -l  
 total 8  
 -rwxrwx--- 1 root root 589 abr 9 14:47 backupToJulio.sh  
 -rwxrwxr-x 1 root root 477 abr 4 12:05 mysqldump.sh  
 root@spse:/home/julio/fuentes/bash#   
  1.  mysqldump.sh (Será utilizado para generar los scripts de creación de las bases de datos (estructuras de tablas y datos de las mismas) del servidor MySQL 192.168.0.1)
  2.   backupToJulio.sh (backup bases de datos a otro disco de la red, en este caso el servidor SAMBA 192.168.0.2)
 #!/bin/sh  
 # Esto volcará todas tus bases de datos.  
 # **************************************  
 #     mysqldump.sh
 # **************************************  
 DATE=$(date +%Y%m%d%H%M)  
 for DB in $(echo "show databases" | mysql --defaults-file=/etc/mysql/debian.cnf -N)  
 do  
     mysqldump --defaults-file=/etc/mysql/debian.cnf --single-transaction $DB > /root/mysql/backup/${DB}_${DATE}.sql  
     gzip /root/mysql/backup/${DB}_${DATE}.sql  
 done  
 # Borrar los respaldos que tengan mas de 5 dias (economiza espacio del server)  
 find /root/mysql/backup/ -name "*.sql*" -mtime +5 -exec rm -vf {} \;  
 #!/bin/sh  
 # **********************************************************  
 # backup bases de datos a otro disco de la red (192.168.0.2)  
 # **********************************************************  
 #          backupToJulio.sh  
 # **********************************************************  
 # montar con cifs-utils  
 mount -t cifs //192.168.0.2/backup-mysql /home/julio/papelera -o username=administracionuser,password=administracionuser,domain=INFORMATICA  
 if [ $? = 0 ]; then  
      # copiar al puesto 192.168.0.2 (que está montado en /home/julio/papelera)  
      find /root/mysql/backup/ -name "*.sql*" -mtime -1 -exec cp -v {} /home/julio/papelera/ \;  
      umount /home/julio/papelera/  
 fi  
Solo resta automatizar la ejecución diaria de esto scripts. Para ello, los agragaremos como una tarea cron de root. Acerca de como agragar tareas cron remítase a este tutorial
 root@spse:~# crontab -l  
 # Edit this file to introduce tasks to be run by cron.  
 #   
 # Each task to run has to be defined through a single line  
 # indicating with different fields when the task will be run  
 # and what command to run for the task  
 #   
 # To define the time you can provide concrete values for  
 # minute (m), hour (h), day of month (dom), month (mon),  
 # and day of week (dow) or use '*' in these fields (for 'any').#   
 # Notice that tasks will be started based on the cron's system  
 # daemon's notion of time and timezones.  
 #   
 # Output of the crontab jobs (including errors) is sent through  
 # email to the user the crontab file belongs to (unless redirected).  
 #   
 # For example, you can run a backup of all your user accounts  
 # at 5 a.m every week with:  
 # 0 5 * * 1 tar -zcf /var/backups/home.tgz /home/  
 #   
 # For more information see the manual pages of crontab(5) and cron(8)  
 #   
 # m h dom mon dow  command  
 25 6   * * 1-5  /home/julio/fuentes/bash/mysqldump.sh  
 59 11  * * 1-5  /home/julio/fuentes/bash/backupToJulio.sh   
 root@spse:~#   
En este caso hemos configurado a cron para que ejecute mysqldump.sh (192.168.0.1) todos los días habiles (LUN-VIE) a las 06:25 AM
Y para respaldar en el otro disco (192.168.0.2) mediante backupToJulio.sh todos los días habiles (LUN-VIE) a las 11:59 AM

lunes, 25 de marzo de 2019

El joven que entrena con la carretilla y gana en la montaña

No me gusta ir al gimnasio, he ido y me aburre estar haciendo pesas. Ni siquiera hago abdominales ni trabajo de piernas. Es eso: trabajar, correr y la bici.” 

Sergio Gustavo Pereyra, Ganadador del "Ushuaia Trail Race 2019"
















Nota completa

domingo, 24 de marzo de 2019