PRIMERA VERSION DEL SCRIPT
Este script nos permite hacer dumps a las bases de un servidor Mysql.
La
ventaja que posee este script es que cuando se sube una base nueva al
servidor, no debemos preocuparnos por el dumps, ya que el script a
travez de utilizar vectores tiene la capacidad de detectar los cambios
automaticamente.
Aca les dejo una somera descripcion de su funcionamiento:
1.- Variables para conectar al servidor de Mysql
host="xxx.xxx.xxx.xxx"
user=user
pass=pasword
2.- Genero un vector para los argumentos de Mysql
Vector Argumento (args) de comandos MysqlVectores
Vector lineal ( base1 base2 base3)
Posicion Elementos del vector 0 1 2
Opcion 1:
args=("-h $host -u $user -p$pass" "-h $host -u $user -p$pass --opt ")
Opcion 2:
args=("-h $host -u $user -p$pass" "-h $host -u $user -p$pass --single-transaction ")
3.- Variable para determinar la Fecha y Hora que luego la utilizo para el nombre del dump
datetime=$(date +%Y%m%d)
4.- Variable donde determino el nombre del archivo por el cual despues genero el vector
filename=arrays
5- Declaro al vector
declare -a array1
6.- Genero el archivo declarado arriba
mysqlshow ${args[0]} > $filename
7.- Archivo array como lo genera mysqlshow
+-------------------------------+
| Databases |
+-------------------------------+
| information_schema |
| base1 |
| base2 |
| base3 |
| ....... |
+-------------------------------+
8.- Variables para el limite inferior y superior del vector
8.1.- Limite inferior del Vector array1
a=0
8.2.- Limite Superior del Vector array1
Cuento las palabras, los sed y el tr los utilizo para
sacar los caracteres "+", "|" , el titulo "Database" y la Base
"information_schema". La variable counts tiene sentido para utilizar un
vector lineal dinamico, gracias al archivo que genero con la consulta
que hago con mysqlshow.
counts=(` cat "$filename" | sed -e '/+/d' | tr -d '|' | sed -e '/Database/d'| sed -e '/information_schema/d' | wc -w `)
9.- Leo el archivo y le deleteo todo aquello que no me sirve
array1=( `cat "$filename" | sed -e '/+/d' | tr -d '|' | sed -e '/Database/d' | sed -e '/information_schema/d'` )
10.- Genero un vector dinamico
while [ $a -lt $counts ]
do
echo ${array1[$a]}-$datetime.sql # Permite ver en tiempo real lo que esta haciendo dump
mysqldump ${args[1]} ${array1[$a]} > ${array1[$a]}-$datetime.sql
let a+=1 # Contador que utilizo para recorre el vector
done
echo
exit 0
El script con la "Opcion 1" de la variable "args" quedaria asi:
#!/bin/bash
declare -a array1
host="xxx.xxx.xxx.xxx"
user=user
pass=password
datetime=$(date +%Y%m%d)
filename=/var/local/arrays
pathbkp=/var/local/dumps
a=0
args=("-h $host -u $user -p$pass" "-h $host -u $user -p$pass --opt ")
mysqlshow ${args[0]} > $filename
counts=( `cat "$filename" | sed -e '/+/d' | tr -d '|' | sed -e '/Database/d'| sed -e '/information_schema/d' | wc -w `)
array1=( `cat "$filename" | sed -e '/+/d' | tr -d '|' | sed -e '/Database/d' | sed -e '/information_schema/d'` )
while [ $a -lt $counts ]
do
echo ${array1[$a]}-$datetime.sql
mysqldump ${args[1]} ${array1[$a]} > $pathbkp/${array1[$a]}-$datetime.sql
let a+=1
done
echo
exit 0
No hay comentarios:
Publicar un comentario