• +34 - 607 571 659
  • info@oscarperez.es

Archivo de la etiqueta MySql

Backups automáticos de tus bases de datos Mysql

¿Que hacer cuando tienes que realizar backups de bases de datos de MySql? 

En algún momento nos hemos visto o nos veremos en la necesidad de realizar copias de seguridad de nuestras bases de datos de MySql que tenemos en nuestros servidores de producción. 

Si tenéis instalado el phpMyAdmin, realizar copias de seguridad es muy sencillo: Vas a la opción de Exportar, y con dar al botón de Continuar, y ya tendrías una copia de la base de datos.

 

¡Fácil y sencillo para toda la familia!. Pero como todos sabemos, los informáticos somos muy vagos; y lo de tener que acordarnos de hacer la copia de seguridad, entrar en el phpMyAdmin….. ¡y esto para cada uno de nuestros servidores! no va con nosotros. ¡¡Nosotros automatizamos tareas!!. No por que seamos eficientes sino porque sólo queremos trabajar una vez.

Si tenemos instalado WordPress en nuestro servidor, podéis utilizar plugins para realizar las copias de seguridad. El plugin que yo uso es el UpdraftPlus. ¿Por qué? Porque cuando empece con el WordPress me pareció el más sencillo de usar. Y para lo que yo necesito me vale. Me realiza una copia de seguridad de la base de datos y de los ficheros en la nube, cuenta FTP,…. La configuración es muy sencilla. Yo lo guardo en DropBox, por que me resulto lo más sencillo. 

Pero éste no es el caso que nos atañe: Necesitamos hacer una copia de seguridad automática de una base de datos de MySql, que está en un servidor externo, y en el que no hay instalado WordPress, Joomla, PrestaShop, Drupal …

Lo primero:

1. ¿Que necesitamos?

Una tarea automática que se ejecute cada cierto tiempo y nos haga la copia de seguridad de la base de datos MySql.

  • ¿Una tarea automática? Esto huele a cron que echa p’atrás
  • ¿base de datos MySql? Tenemos que instalar MySql en el ordenador donde vayamos a ejecutar la tarea

2. ¿Cómo lo vamos a hacer?

Yo utilizo ordenadores con sistemas Windows y Linux. Los Linux para los servidores, intranets…. y los Windows para el trabajo diario. Yo no soy anti-nada, y me manejo mejor para el trabajo diario con Windows que con Linux, principalmente por que todos mis clientes usan Windows.

Así que esta entrada se basará sobre hacer las copias de seguridad en un ordenador Windows, puesto que la copia de seguridad la realizo en los ordenadores de mis clientes. Para que ellos siempre dispongan de una copia de seguridad. Para los puristas del Linux, seguro que seréis capaces de trasladar estas explicaciones a vuestro entorno :-).

Seguimos… 

Tenemos que tener instalado MySql en nuestro ordenador. Si ya tenéis instalado en vuestro ordenador XAMPP, WampServer, o alguna otra plataforma de desarrollo Web, seguramente ya tenéis instalado el MySql, por que estas plataformas te lo instalan. Generalmente también instalan el phpMyAdmin, que es una herramienta web para administrar base de datos MySql. Si escribís en el navegador http://localhost/phpmyadmin/ y os responde con una página, eso es que ya tenéis instalado phpMyAdmin, y por consiguiente, también está el servidor MySql.

Si no tenéis instalado el servidor MySql os dejo un enlace para que realizar la instalación https://comoinstalar.me/como-instalar-mysql-en-windows/ , o podéis buscar en Google, hay infinidad de tutoriales.

Yo tengo instalado la plataforma XAMPP, y al instalar el MySql por defecto lo hace en la carpeta C:\xampp\mysql (si has modificado la ruta en la instalación, debes de ir a la ruta que se indicó al instalar XAMPP). Si usas WampServer, el directorio por defecto es C:\wamp\bin\mysql\mysqlX.X.XX\

Ya tenemos instalado MySql en nuestro ordenador. Ahora usaremos el comando mysqldump para realizar la copia de seguridad

El comando mysqldump está incorporado al servidor MySQL y gracias a ella, podremos realizar copias de seguridad (backup) de nuestras bases de datos, Lo que la hace una herramienta básica para gestionar bases de datos. Este comando te permite conectarte a la base de datos, crear una copia de todas las tablas y guardar toda ls información en un archivo. Este comando genera un fichero de texto, con todas las sentencias  necesarias para ralizar la copia de seguridad de la base de datos.

Sentencias CREATE, INSERT, ALTER TABLE….

El comando mysqldump tiene el siguiente  formato:

mysqldump -h[HOST] -u[USER] -p[CONTRASEÑA] [BASE_DE_DATOS] > [NOMBRE_ARCHIVO].sql

Donde:

-h[HOST] = HOST(donde está la base de datos)
-u[USER] = usuario (de la base de datos)
-p[CONTRASEÑA] = contraseña (del usuario de la base de datos)

[BASE_DE_DATOS] = nombre de la base de datos

[NOMBRE_ARCHIVO] = nombre del archivo donde se va a realizar la copia de la base de datos.

Por ejemplo, para hacer una prueba sencilla: si el servidor donde está la base de datos es localhost, el usuario de base de datos es root, la contraseña del usuario es claveroot y la base de datos se llama mydatabase, y queremos que el fichero se llame dataBaseBackup.sql, la sentencia sería

mysqldump -hlocalhost -uroot -pclaveroot mydatabase > dataBaseBackup.sql

Al ejecutar este sentencia varias veces, lo que hace es escribir sobre el fichero ya creado. Si queremos tener copias de seguridad de cada día, lo mejor es que el fichero generado tenga en su nombre la fecha. Para ello la sentencia sería así

mysqldump -hlocalhost -uroot -pclaveroot mydatabase > dataBaseBackup_%Date:~6,4%%Date:~3,2%%Date:~0,2%.sql

Esta sentencia creará ficheros de este tipo: dataBaseBackup_20191013.sql

Cómo ves, incluye la fecha de creación en el nombre del fichero, lo que luego nos facilitará el trabajo.

Ya tenemos la sentencia. ¿como la ejecutamos?

Para ello, vamos a crearnos un fichero .bat(recordar que estamos en un entorno Windows).

En un directorio nos creamos un fichero de tipo texto, por ejemplo: backup-base-de-datos.bat.  Lo editamos con un editor de textos que no inserte caracteres raros. Podemos usar el Notepad del propio Windows. 

Escribimos lo siguiente en el fichero:

echo off
mysqldump -hlocalhost -uroot -pclaveroot mydatabase > dataBaseBackup_%Date:~6,4%%Date:~3,2%%Date:~0,2%.sql
exit

Ejecutamos el fichero haciendo click con el botón derecho y seleccionando la opción «Ejecutar como Administrador»

 

Cuando se ejecuta este fichero, abré una ventana de la Consola de Windows, el famoso cmd

la sentencia echo off, lo que hace es que no se muestre mensajes en esta ventana, y la sentencia exit cierra la ventana. Así la ejecución es casi invisible para el usuario.

Vale, ya habéis seguido mis instrucciones, ejecutáis el .bat y no funciona. Lo más seguro es que en este caso, el directorio donde se ha instalado Mysql no está definido como variable de entorno. Lo más sencillo es añadir el path en el fichero bat.

En mi caso, recordar que uso XAMPP, el fichero quedaría

echo off
C:\xampp\mysql\bin\mysqldump -hlocalhost -uroot -pclaveroot mydatabase > D:\RESPALDOS_MYSQL\dataBaseBackup_%Date:~6,4%%Date:~3,2%%Date:~0,2%.sql
exit

también he añadido el path donde quiero guardar el fichero. De este modo, indicamos donde está exactamente el comando mysqldump y donde queremos guardar el fichero

Si ejecutáis este .bat modificado, ya os tendría que funcionar. Recordad que debéis colocar vuestros directorios de instalación de MySql.

Ya tenemos el .bat que nos realiza la copia de seguridad. Vamos a crear una tarea en Windows para que ejecute el .bat automáticamente y asó poder olvidarnos de ello

Crear una tarea en Windows

1. Botón Inicio y buscamos tareas.

2. Clic en Programador de Tareas

3. En el Programador de tareas, «Crear tarea básica»

4. Damos un nombre y una descripción a la tarea que vamos a crear

 

5. Seleccionamos cuando queremos que se ejecute la tarea (Desencadenar tarea)

6. Elegimos la fecha de inicio y la hora que se ejecutara la tarea programada. Estas tareas son convenientes que se ejecuten en un horario que no «moleste». Cuando menos visitas haya en nuestra web.

7. Seleccionamos la acción que va a realizar la tarea. En nuestro caso Iniciar un programa

8. Indicar la ruta donde se encuentra nuestro fichero .bat

9. Ya lo último: una pantalla con un resumen de toda la configuración.

10. Nuestra tarea aparece en la Biblioteca del Programador de Tareas.

 

Y con esto, ya os podéis olvidar de hacer las copias de seguridad de vuestras bases de datos, ya que un ordenador se va a encargar de ello.

 

Problemas con las eñes, acentos y demás caracteres cuando usas mysql y php

Con esto nos hemos pegado todos los que trabajamos con PHP.

El problema viene dado por que la configuración del cotejamiento de los caracteres especiales como acentos, eñes y demás símbolos no es el mismo entre la base de datos (MySQL), el lenguaje de servidor (PHP) y el servidor (Apache).

El cotejamiento (esta palabra tan rara) indica qué tipo de codificación queremos usar para los valores de estos campos.

Busqué y busqué, probé y probé y al final me hice un pequeño esquema con lo que yo hago para solucionarlo.

1. Creación base de datos

Al crear la base de datos MySQL, asegúrate que los campos string y demás esten en utf8_spanish_ci y el cotejamiento de las tablas en utf_unicode_ci

ejemplo:

CREATE TABLE IF NOT EXISTS `table` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(45) CHARACTER SET utf8 COLLATE utf8_spanish_ci NOT NULL,
`autotimestamp` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;

Si usas phpMyAdmin se puede modificar en el apartado «Operaciones» de la tabla.

2. En la web

En las páginas de nuestra web, también hay que indicar el conjunto de caracteres que queremos usar.

Coloca en el <head> de todos los archivos HTML:

<meta charset="UTF-8">

Y en los que únicamente llevan PHP (llamadas de AJAX, APIs, XML, …) colocar en la primera linea el siguiente código:

header("Content-Type: text/html;charset=utf-8");

3.  Cuando se crea la conexión de PHP con MySQL.

Yo estoy usando MySQLi, así que te indico lo que yo hago

$mysqli = new mysqli($BD_SERVIDOR, $BD_USUARIO, $BD_PASSWORD, $BD_NOMBRE);
$mysqli->set_charset("utf8");

Pero si utilizas  mysql_connect (aunque esta extensión fue declarada obsoleta en PHP 5.5.0 y eliminada en PHP 7.0.0.) debes incluir también mysql_set_charset, que te permite establecer el conjunto de caracteres del cliente.

$conn = mysql_connect($BD_SERVIDOR, $BD_USUARIO, $BD_PASSWORD);
mysql_set_charset("UTF8", $conn);

Tanto $BD_SERVIDOR, $BD_USUARIO, $BD_PASSWORD, $BD_NOMBRE son variables donde yo guardo la configuración de mi base de datos

Con esto he solucionado el engorroso problema de los acentos y las eñes, y me evito usar el htmlentities

Ayuntamiento Real Sitio de San Ildefonso

Soy el responsable del departamento de Informática del Ayuntamiento del Real Sitio de San Ildefonso.

Mi cometido es mantener el parque informático y mantenimiento y desarrollo de todas las webs municipales.

La principal web es la Página oficial del Ayuntamiento del Real Sitio de San Ildefonso.

En esta web se refleja la información que se genera en el pueblo del Real Sitio de San Ildefonso (Segovia),  ya sean noticias propias del ayuntamiento o información cultural

EL CMS usado es WordPress. También se usa PHP y jQuery para diversas funcionalidades que se han implementado fuera del CMS, y tambien se han programado plugins específicos para mostrar información relativa al Ayuntamiento del Real Sitio de San Ildefonso.

El tema que se usa es un tema propio, es decir, construido integramente para este proyecto.

Para el diseño se ha usado HTML5 y CCS3, además el diseño es adaptativo y se puede visualizar en ordenadores, tablets y móviles

Pero la web oficial del ayuntamiento no es la única .  La lista de webs que desarrollo y mantengo se va incrementando poco a poco:

También diseño y desarrollo una intranet para uso interno de los trabajadores del Ayuntamiento

Estamos en fiestas

Estamos en fiestas es una aplicación para móviles, que permite llevar el programa de fiestas de los municipios a sus habitantes y visitantes, ofreciendo además una imagen innovadora acorde con el uso de las nuevas tecnologías.

Las nuevas aplicaciones móviles son potentes canales de comunicación con el ciudadano, el visitante y el turista, y también ayudan a dinamizar el comercio y el turismo de la ciudad.

Esta aplicación permite a los usuarios tener el horario, descripción e imágenes de los eventos en el móvil, que como todos sabemos, es un dispositivo que siempre va con nosotros pudiendo acceder en cualquier momento a la información y TOTALMENTE GRATIS PARA LOS USUARIOS.

Enlaces para descargar la aplicación:

 

También puedes escanear los códigos QR que se muestra a continuación dependiendo del sistema de tu dispositivo móvil.

Google Play

App Store

 

Web de la aplicación

ShoppinginMadrid

Este proyecto es el trabajo final del Master que realicé en CICE en 2014 sobre Desarrollo y Diseño de proyectos Web.

Es una página web de ámbito turístico-comercial, donde muestro información comercial (tiendas, centros comerciales, grandes almacenes…) de algunas zonas de Madrid. Una web para saber que tiendas hay en distintas zonas comerciales de Madrid.

En principio estas zonas son: Sol-Arenal-Mayor, Gran Vía, Fuencarral, Serrano-Goya. En resumen, será un listado de tiendas y está enfocada para los turistas que visitan Madrid.

Al estar enfocada al turista, se ha realizado un sistema de multilenguaje, que en principio está disponible en inglés y español, y donde el lenguaje por defecto es el inglés.

El desarrollo se ha hecho en J2ee (usando los frameworks Struts e Hibernate)Php, Mysql, Html5, Css3, Javascript, jQuery, Ajax y el CMS también es propio y desarrollado por mí.

Se implementan llamadas Ajax para recuperar la información de base de datos. Uno de los retos con los que me encontré fué precisamente como implementar las llamadas Ajax con el frameworks Struts. Cuando lo consigues parece fácil pero hasta que llega ese momento, te vuelves un poco loco.

Usé HTML5 y CSS3, y el diseño web es adaptativo, con lo cual se visualiza perfectamente en móviles y tablets, lo que facilita el uso de la web para el turista que se encuentra en la calle.

Si quieres ver el código lo puedes descargar de GitHub

Sociedad Castellarnau

Página de la Sociedad Castellarnau. Está online desde 2010. Url

La Sociedad Castellarnau, de la que soy miembro, me encargó la realización de su página web. En esta página web, se refleja las inquietudes, pensamientos y conocimientos de los miembros de este Sociedad. El nexo común de todos nosotros es el amor que tenemos por el entorno de La Granja, Valsaín y la Sierra del Guadarrama.

La tecnología usada en la primera versión fué Php, Mysql, Html, Css, Javascript y el CMS también era propio y desarrollado por mí.

La he renovado en octubre del 2016 y he usado como CMS WordPress, y como tecnologías de diseño y programación Php, Mysql, Html5, Css3, Javascript, jQuery, Ajax, adaptando el diseño para dispositivos móviles. Para algunas funcionalidades programé plugins propios para guardar información en la base de datos y después mostrarla en la web pública.

Galeria Artesonado

Url: http://www.galeriartesonado.es/

El diseño de la página ya estaba realizado, así que mi trabajo fué maquetar la página y programar el website usando tecnología PHP y Mysql como base de datos.

El CMS también es propio.

Está online desde 2011.

Webdelagranja.com

Página personal sobre mi pueblo, Real Sitio de San Ildefonso. Está online desde 2006 y ahora, en el 2016, llegó el momento de rejuvenecerla.

En esta web se refleja toda (o casi toda) la información referente al pueblo de La Granja de San Ildefonso (Segovia). Este es el pueblo donde nací y crecí, y mi única intención es dar a conocer mi pueblo y las noticias referidas a él, ya sea para el turista que quiera visitarnos como para el vecino que quiera conocer las actividades y noticias que se producen en La Granja

La tecnología usada en l aprimera versión fué Php, Mysql, Html, Css, Javascript, Ajax y el CMS también era propio y desarrollado por mí.

El CMS, al ser propio, le aporta a esta web las funcionalidades necesarias para mostrar la información tal como yo quiero, las cuales no venían reflejadas en los CMS más comunes usados en aquellos años en el desarrollo web (WordPress, Joomla, Drupal). Otro de los motivos para no usar un CMS fué que está web la estaba manteniendo yo mismo, con lo cual, no necesitaba un CMS que me facilite la publicación de nueva información.

Pero, al hacer la nueva versión, evalué las necesidades y decidí usar WordPress para ello.

La he renovado en octubre del 2016 y he usado como CMS WordPress, y como tecnologías de diseño y programación Php, Mysql, Html5, Css3, Javascript, jQuery, Ajax, adaptando el diseño para dispositivos móviles. Adapté un tema de wordpress y para algunas funcionalidades programé plugins propios para guardar información en la base de datos y después mostrarla en la web.

1