Question:
Date: 01-09-2015 18:34:05
(In Spanish)
En esta occasion quería consultarles como realizar un buen backup de una base de datos por medio de una archivo *.bat que luego sera ejecutado por una tarea programad de Windows.
Comencé a reflotar el tema de la programación con los archivos Batch (archivo de procesamiento por lotes)
Hace décadas que yo no hacia nada con estos archivos.
La idea es hacer un backup total de la base de datos, la estructura de la base de datos, sus tablas, sus registros,
los event, triggers, vistas, etc abarcar todo lo que se pueda.
El archivo que he creado ejecuta mysqldump de mysql con ciertos argumentos que se le pasan.
Y se obtendría un archivo que contiene el backup:
cuyo nombre seria del formato: [nombreBaseDatos]_[MM/DD/YYYY]_[Hora_minutos_segundos].sql
ej: databasetest_09-02-2015_10_05_32.sql
Dischos archivos lo guardaria en el directorio backupfiles
El codigo del archivo: mysqlbackup.bat es el siguiente
Al ejecutar el archivo desde la consola de windows sale:
No he logrado poder arreglar el Warning
Warning: Using a password on the command line interface can be insecure.
El contenido del archivo si esta bien el backup.
Por ejemplo:
Archivo resultante: databasetest_09-02-2015_10_05_32.sql
Como reparo el Warning.
Falta que genere la base de datos si no existe.
Que se puede mejorar en el archivo bat para que tenga mayor funcionalidad.
Luego me quedara realizar otro script BAT para restaurar la base de datos.
Muchas gracias por la atención.
Quedo en la espera de respuestas.
Espero que mi inquietud les sea util a otros usuarios
Saludos. Votes: 2 - Answers: 3 - Views: 35 Share on: Google Facebook Twitter LinkedIn Link
Hacer Backup de Base de Datos MySQL con windows, archivo .bat[Resolved]
Hola a todosEn esta occasion quería consultarles como realizar un buen backup de una base de datos por medio de una archivo *.bat que luego sera ejecutado por una tarea programad de Windows.
Comencé a reflotar el tema de la programación con los archivos Batch (archivo de procesamiento por lotes)
Hace décadas que yo no hacia nada con estos archivos.
La idea es hacer un backup total de la base de datos, la estructura de la base de datos, sus tablas, sus registros,
los event, triggers, vistas, etc abarcar todo lo que se pueda.
El archivo que he creado ejecuta mysqldump de mysql con ciertos argumentos que se le pasan.
Y se obtendría un archivo que contiene el backup:
cuyo nombre seria del formato: [nombreBaseDatos]_[MM/DD/YYYY]_[Hora_minutos_segundos].sql
ej: databasetest_09-02-2015_10_05_32.sql
Dischos archivos lo guardaria en el directorio backupfiles
El codigo del archivo: mysqlbackup.bat es el siguiente
@echo off title Backup Mysql cls color 17 Echo Backup de base de datos. echo ___________________________ echo. :: seteo de la fecha y la hora set Dia=%Date:~0,2% set Mes=%Date:~3,2% set Anio=%Date:~6,4% set Hora= %Time:~0,2% set Minutos=%Time:~3,2% set Segundos=%Time:~6,2% :: usuario db set dbuser=userdb :: Password de user set dbpass=PassUser.159 :: Database set database= databasetest rem quito los espacios en blanco set database=%database: =% rem MM/DD/YYYY set Archivo=%database%_%Mes%-%Dia%-%Anio%_%Hora%_%Minutos%_%Segundos% .sql rem elimina espacios en blanco set Archivo=%Archivo: =% :: MySQL EXE Path set mysqldumpexe=e:\wamp\bin\mysql\mysql5.6.17\bin\mysqldump.exe :: MySQL EXE Pathbackup set backupfolder=e:\MySQLBackups\backupfiles\ :: Opciones set opciones= --single-transaction --set-gtid-purged=OFF --add-drop-database --triggers --routines --events :: Ejecuta la la sentencia %mysqldumpexe% %opciones% -u %dbuser% -p%dbpass% %database% > %backupfolder%%Archivo% echo ________________________________________________________________ echo. echo Se realizo el backup de la base de datos: [%database%] echo. echo Nombre del archivo de backup: [%Archivo%] echo. echo ubicado en [%backupfolder%] echo. echo ________________________________________________________________
Al ejecutar el archivo desde la consola de windows sale:
Backup de base de datos. ___________________________ Warning: Using a password on the command line interface can be insecure. ________________________________________________________________ Se realizo el backup de la base de datos: [databasetest] Nombre del archivo de backup: [databasetest_09-02-2015_0_06_31.sql] ubicado en [e:\MySQLBackups\backupfiles\] ________________________________________________________________ E:\MySQLBackups>
No he logrado poder arreglar el Warning
Warning: Using a password on the command line interface can be insecure.
El contenido del archivo si esta bien el backup.
Por ejemplo:
Archivo resultante: databasetest_09-02-2015_10_05_32.sql
-- MySQL dump 10.13 Distrib 5.6.17, for Win64 (x86_64) -- -- Host: localhost Database: databasetest -- ------------------------------------------------------ -- Server version 5.6.17 /*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */; /*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */; /*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */; /*!40101 SET NAMES utf8 */; /*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */; /*!40103 SET TIME_ZONE='+00:00' */; /*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */; /*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */; /*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */; /*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */; -- -- Table structure for table `tablaprueba` -- DROP TABLE IF EXISTS `tablaprueba`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `tablaprueba` ( `id` int(10) unsigned zerofill NOT NULL AUTO_INCREMENT, `nombre` varchar(120) COLLATE utf8_spanish_ci NOT NULL, `apellido` varchar(120) COLLATE utf8_spanish_ci NOT NULL, `edad` int(3) NOT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8 COLLATE=utf8_spanish_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- -- Dumping data for table `tablaprueba` -- LOCK TABLES `tablaprueba` WRITE; /*!40000 ALTER TABLE `tablaprueba` DISABLE KEYS */; INSERT INTO `tablaprueba` VALUES (0000000001,'walter','sanchez',42),(0000000002,'juan','riquelmes',45),(0000000003,'pedro','rodriguez',28); /*!40000 ALTER TABLE `tablaprueba` ENABLE KEYS */; UNLOCK TABLES; -- -- Dumping events for database 'databasetest' -- -- -- Dumping routines for database 'databasetest' -- /*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */; /*!40101 SET SQL_MODE=@OLD_SQL_MODE */; /*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */; /*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */; /*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */; /*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */; /*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */; /*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */; -- Dump completed on 2015-09-02 0:06:31
Como reparo el Warning.
Falta que genere la base de datos si no existe.
Que se puede mejorar en el archivo bat para que tenga mayor funcionalidad.
Luego me quedara realizar otro script BAT para restaurar la base de datos.
Muchas gracias por la atención.
Quedo en la espera de respuestas.
Espero que mi inquietud les sea util a otros usuarios
Saludos. Votes: 2 - Answers: 3 - Views: 35 Share on: Google Facebook Twitter LinkedIn Link
Answers:
-
Date: 02-09-2015 08:28:38 Hola Walter,
Para lo del Warning el detalle es esta línea:
%mysqldumpexe% %opciones% -u %dbuser% -p%dbpass% %database% > %backupfolder%%Archivo%
Como le estás pasando la contraseña directamente te va a desplegar ese warning siempre. La solución requiere un poco más de trabajo:
1. Remueve la contraseña de esa línea
2. Captura el evento que te va a solicitar la contraseña
3. Pasa la contraseña
Respecto a que genere la base de datos si no existe, eso ya lo pone la sentencia por defecto.
Ya he hecho algo así pero para Linux. Votes: 2 - Link answer -
Date: 02-09-2015 14:58:08 Muchas Gracias Ernesto por tu respuesta
Por el momento lo del Warning voy hacer caso omiso.
He alterado una liinea del script, para hacerlo mas ajustado a mis necesidades.
:: Opciones set opciones= --single-transaction --set-gtid-purged=OFF --add-drop-database --create-options --complete-insert --extended-insert=false --hex-blob --dump-date --comments --triggers --routines --events
El bat generaría backup de
-triggers (Disparadores)
-routines (rutinas almacenadas -stored procedures y funciones-)
-events (planificador o tarea programada)
Me faltaría hacer backup de las vistas (Views) que tenga esa base de datos, aun no encuentro como hacerlo
saludos Votes: 2 - Link answer -
Date: 29-09-2015 08:07:09 Hola Walter, muy buena tu inquietud / aporte. Aquí te dejo una forma de hacer backup de las views de una determinada base de datos por medio de línea de comandos (tendras que remplazar el usuario "root" por tus credenciales y obviamente donde dice "NOMBRE_BASE_DE_DATOS" por el nombre de la base de datos que asocia las vistas).
mysql -u root INFORMATION_SCHEMA --skip-column-names --batch -e "SELECT CONCAT('DROP TABLE IF EXISTS ', TABLE_SCHEMA, '.', TABLE_NAME, '; CREATE OR REPLACE VIEW ', TABLE_SCHEMA, '.', TABLE_NAME, ' AS ', VIEW_DEFINITION, '; ') table_name from information_schema.views WHERE TABLE_SCHEMA = 'NOMBRE_BASE_DE_DATOS'" > backup_views.sql
El script te va a generar un archivo "backup_views.sql" donde estará todo el SQL para crear nuevamente la vista al momento de hacer restore.
Como comentarios al script se puede decir que se utiliza el ejecutable "mysql.exe" (no mysqldump) para consultar la tabla VIEWS de la base de datos INFORMATION_SCHEMA y crea por medio de la concatenación de strings las sentencias para hacer "CREATE OR REPLACE" de las vistas.
Saludos,
Fernando Votes: 2 - Link answer
To actively participate in the community first must authenticate, enter the system.Sign In