Herramienta para trabajar con Bases de datos (MySQL o MariaDB)
Alguna de la siguiente herramientas que utilizamos cuando trabajamos con bases de datos de mysql o MariaDB.
Herramientas con las que podrás copiar, hacer migraciones de versiones, ver diferencias estructuras y incluso llenar con script automatizados.
Mysql - Recuperar respaldos de base de datos de mysql o maria-db
El programa que utiliza para hacer copias de seguridad es mysqldump es un programa que forma parte de los "MySQL Client Programs" de MySQL, que puede ser utilizado para generar respaldos de bases de datos y ser usados o incluso para ser transferidos a otro servidor de base datos SQL .
Para poder importar la base datos comprimida (xz) lo hacemos desde terminal con la siguiente instrucción.
mysql -u usuario -p base_datos < <(xz -cd < copia_de_base_datos_comprimida.dump.xz)
Mysqldump : Copia de seguridad.
Nuestro responsable de sistema utiliza una tarea cron en /etc/cron.d/backupbbddr para que ejecute un script que esta en /usr/local/sbin/backupbbdd y realiza por cada base datos un backup utilizando mysqldump y comprimido con xz.,
Copia de solo estructura
Para hacer una copia de seguridad de solo la estructura :
$ mysqldump -uUsuario -p -h servidorMySQL --databases basea1 -d > basea1.sql
Copia de base datos completa
Hacer una copia de seguridad de la bases datos (basea1) completa
$ mysqldump -uUsuario -p -h servidorMySQL --databases basea1 > basea1.sql
Copia de bases datos comprimida
Nosotros utilizamos XZ Utils en linux para comprimir, por ello si queremos que nos haga una copia comprimida de la base datos, utilizamos la siguiente instruccion.
$ mysqldump -uUsuario -p -h servidorMySQL --databases basea1 | xz > basea1.sql
Con pipe y un simple xz , ya nos realiza la copia de seguridad comprimida.
Copia una base de datos a otra base de datos
La idea es copia una base datos en el mismo servidor.
$ mysql basedatos_nueva < <(mysqldump -n basedatos_vieja)
Primero tenemos que tener creada la base de datos.
Copia por ssh de base datos
Si lo quieres es hacer una copia de la base de datos en tu equipo local de un servidor y tienes conexion por ssh
$ ssh usuario@servidor mysqldump nombrebasedatos > nombresfichero.sql
Te realiza una copia en la carpeta que este de la base datos que indicaste, logicamente tienes que tenes instalado mysqldump en el servidor.
sqlt-diff: Diferencias estructura
Si queremos obtener las diferencias que hay entre las estructuras de dos bases de datos, podemos hacerlo asi.
$ sqlt-diff basea1.sql=MySQL basea2.sql=MySQL > diff.sql
Obtenemos un sql para poner la estructura de la primera base de datos igual de la segunda.
Suele dar problemas los comentarios, me imagino que hay forma de ignorarlos en las opciones de "sqlt".
Otro problema que me encontre son los autoincrement que seguramente no queramos ponerlos igual, asi que tenerlo en cuenta.
Phinx : Migraciones y seed
Este no es un programa, necesita una instalacion un poco mas compleja, ya requiere de composer, en fin, en su web puedes ver como instalarlo y mucha documentacion.
Nosotros la utilizamos como librería mas para nuestros proyectos en php, según su web es la forma mas nativa de php de hacer migraciones de una base de datos.
La cuestion es que puedes hacer cambios en la base de datos de una forma ordenada y controlada, como si fuera un controlador de versiones de la base de datos. Lo que hizo que empezarámos a utilizarlo es el metodo down, con el que podemos estado de la estructura de datos en versiones anteriores.
La instalación de Phinx
Como ya dije , necesitas tener composer en el servidor o equipo local donde tenga SQL . La instalación de composer ya explicaré como, ya que ahora no lo recuerdo.. :-) lo unico que recuerdo es que requirió tener instalado php 7.2
Para instalar phix:
#composer require robmorgan/phinx php composer.phar require robmorgan phinx
En el siguiente link podrás ver información muy buena y en español para comprenderlo y utilizarlo.
Nosotros de momento solo voy explicar como aplicamos la migraciones.
php vendor/bin/phinx migrate -e development
Nosotros en la configuracion utilizamos nombres de los distinto proyectos o ramas, en vez development, esto se puede cambiar en el fichero phinx.yml.
Fuentes y referencias:
Cooperativa de Software Libre - Creando script de migraciones