En una clase que acabo de tomar tuve que investigar cómo respaldar una base de datos de MySQL desde PHP. Lo que terminé logrando es un script que hace un respaldo completo y genera un archivo que se guarda en el disco duro.
Es decir, utilizando únicamente PHP respaldar una base de datos de MySQL. Nada de mysqldump o llamadas al sistema.
Investigando encontré esta respuesta de stackoverflow y me pareció útil modificarla y traducirla para explicarla aquí.
Este script toma una base de datos y la respalda. Respalda todos sus datos así como la estructura de las tablas. Es muy parecido a cómo phpmyadmin exporta las bases de datos.
La modifiqué de tal manera que exporte todas las tablas y calcule un nombre de archivo único.
Creará una carpeta llamada respaldos (en caso de que no exista), y dentro pondrá el respaldo. Podemos llamarla múltiples veces, ya que genera un nombre único.
Obtiene las tablas que tiene la base de datos. Una vez que las tiene, una por una va consultando su sentencia de creación con SHOW CREATE TABLE nombreDeLaTabla;
que da un resultado como el de la imagen:
La parte que censurada no fue tapada porque quise, sino porque da datos que confunden. El punto es que ese comando da la creación de la tabla, y eso es lo que se escribe en el archivo.
Eso lo escribe en el archivo, y ahora selecciona todos los datos con SELECT * FROM elNombreDeLaTabla;
. Recorre todas las filas, y concatena en muchos INSERT
los datos. Cada 100 iteraciones separa los INSERT
para que no sea muy pesado.
Lo demás es cosa de agregar comas o puntos y comas cuando es necesario, así como el cierre de paréntesis.
Al inicio y fin pone el juego de caracteres. Finalmente ese contenido se escribe en un archivo.
Lecturas recomendadas.
See the gist on github.
Así es como queda la función. Recibe, en orden, el host, usuario, contraseña y el nombre de la base de datos a respaldar.
Tengo aquí una base de datos de mascotas que ya ni sé qué tiene pero servirá como ejemplo. La usé cuando mostré cómo replicar datos de MySQL.
Desde la CLI de MySQL se ve así:
Eso es únicamente para demostrar los datos que hay. Ahora desde PHP llamaré a la función que vimos anteriormente, así:
Lo sé, mi contraseña es una cadena vacía; es decir, no tengo contraseña, pero no importa si estoy localmente en mi servidor de pruebas.
La cosa realmente importante es que al ejecutar ese código obtengo un archivo dentro de la carpeta respaldos:
Vemos que el nombre es como lo dijimos anteriormente, y que se ha generado según la fecha en la que fue realizado. De esa forma podemos llevar un seguimiento.
El contenido del mismo es el que se ve a continuación:
Es un respaldo total de mi base de datos, hecho con un simple script que usa mysqli. Así podemos respaldar bases de datos reales, las cuales se quedarán guardadas en el disco duro.
En ocasiones es necesario leer los pixeles y colores de una imagen con JavaScript del…
Siguiendo con los tutoriales de listas desplegables o select con JavaScript, vamos a ver cómo…
Hoy vamos a ver programar la impresión de un PDF generado a partir de HTML…
En este tutorial básico de JavaScript con HTML vamos a ver cómo llenar una lista…
En este artículo se presenta una guía para imprimir un PDF a partir de una…
En este post voy a enseñarte cómo imprimir un PDF a partir de su representación…
Esta web usa cookies.