Mysql

  • Herramientas para : Copias, migraciones, diferencias estructuras, llenar ...

    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 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:

    LinuxTotalLinuxTotal

    Cooperativa de Software Libre - Creando script de migraciones