MySQL: Acelerar la importación y exportación

Una alternativa (mas rápida) para el conocido mysqldump es mydumper, una herramienta simplemente esencial para la exportacion e importacion de bases de datos.

Tomar muy en cuenta que las versiones de mydumper y myloader tienen que ser las mismas.

El comando para exportar seria:

mydumper -u USER -p PASSWORD -h 127.0.0.1 -P 3306 -t 3 -c -l 3600 -s 10000000 -e --regex '^(?!(mysql|test|information_schema|performance_schema|sys))' -o backup/

Donde:

  • -t 3, numero de hilos.
  • -c, comprimir los archivos generados.
  • -l 3600, el tiempo de espera antes de cortar la conexion.
  • -s 10000000, socket de linux.
  • -e –regex ‘^(?!(mysql|test|information_schema|performance_schema|sys))’, exportar todas las bases de datos, menos mysql, test, information_schema, performance_schema y sys.
  • -o backup/, directorio donde se guardaran los archivos.

El comando para importar:

myloader -u USER -p PASSWORD --threads=8 -C -d backup/ -o

Donde:

  • –threads=8, cantidad de hilos.
  • -C, leer archivo comprimidos
  • -d backup/, directorio de lectura
  • -o, eliminar tablas si existen.

Es necesario agregar a la configuración de MySQL el siguiente parámetro:

max_allowed_packet=64M

Tips: Ajustar las horas (PHP, MySQL, Servidor)

time

Este es un punto que la mayoría pasa por alto, en el mejor de los casos se configura la sección de timezones en PHP y ahí termina el asunto.

Para que no existan discrepancias en los registros es necesario sincronizar los tres aspectos,  ya que cada uno maneja su propio registro de tiempo.

  • PHP
  • MySQL
  • El Servidor.

El Servidor

En primer lugar para saber la fecha y la zona horaria en la que se encuentra el servidor ejecutamos lo siguiente en la consola:

date

Dependiendo del SO la manera de cambiar la fecha y zona horaria varia (no mucho) pero una herramienta útil es usar NTP (Network Time Protocol) para definir este aspecto, la mayoría por no decir todos los SO y sus respectivas distribuciones tienen paquetes para su instalación y uso.

PHP

Para ver la fecha actual se maneja la función date, por ejemplo:

<?php
    echo date('D M j G:i:s T Y');
?>

*Pero ojo que la función date devolvería la fecha del cliente y no del servidor.

Para definir la zona horaria se modifica el archivo php.ini en la directriz timezones:

...
date.timezone = America/New_York
...

MySQL

En primer lugar verificar la zona horaria y fecha en la que se encuentra MySQL, mediante una consulta:

SELECT NOW();

Y finalmente definir la fecha:

SET GLOBAL time_zone = America/New_York;

Mas info: MySQL Server Time Zone Support

phpMyAdmin: alternativas

phpmyadmin-logo

Es indudable que phpMyAdmin es el manejador de bases de datos online por excelencia, pero como en todo hay alternativas, algunas bastante interesantes.

SQL Buddy

  • Soporta MySQL y SQLite.
  • Multilenguaje.
  • Bastante completo y con un apartado especial para gestionar usuarios. diseño simple y elegante.
  • sqlbuddy.com

sql-buddy0

sql-buddy1

MyWebSQL

  • Mucho más completo y también poco mas grande, casi 2 MB.
  • Soporta MySQL y SQLite.
  • Multilenguaje.
  • La interfaz recuerda mucho al uso de Sencha Ext JS.
  • mywebsql.net

MyWebSQL

DbNinja

  • Liviano, un inconveniente (para mi) es que se necesita un usuario y contraseña exclusivo para poder usarlo.
  • Soporta MySQL y SQLite.
  • Solo en ingles.
  • Interfaz ajax.
  • www.dbninja.com

DbNinja for MySQL

Adminer

  • Sencillo, todo en un solo archivo de casi 300 KB.
  • Soporte para MySQL, SQLite, PostgreSQL, Oracle, MS SQL.
  • Multilenguaje.
  • Creo que sería el más parecido a phpMyAdmin.
  • www.adminer.org

adminer0

jsp: conectar MySQL con GlassFish

Si al cargar una aplicación en GlassFish aparece un error relacionado con el jdbc (Java Database Connectivity) es muy probable que no se cuente instalado y/o configurado el driver jdbc para MySQL.

La configuración e instalación no es nada complicado, dos formas de hacerlo:

Primera forma, usando el paquete .deb:

1. Instalar el driver:

sudo apt-get install libmysql-java

2. Crear un enlace en la carpeta donde se instalo GlassFish:

ln -s /usr/share/java/mysql-connector-java.jar ~carpeta_glassfish/glassfish/lib/mysql-connector-java.jar

Segunda forma, es descargar el driver directamente:

1. Descargar el driver de: http://dev.mysql.com/downloads/connector/j/

2. Descomprimirlo y copiarlo al directorio donde se instalo GlassFish ~carpeta_glassfish/glassfish/lib/

jsp: enlazar MySQL con tomcat

Si tenemos una excepción del tipo:

java.sql.SQLException: No suitable driver found for jdbc:mysql://localhost:3306/database

Significa que no tenemos instalado en tomcat el conector MySQL.

Para poder trabajar con MySQL desde «tomcat» es necesario instalar el MySQL Connector/J, para esto hay dos maneras:

La primera es instalar el paquete contenedor del conector que es libmysql-java, en consola:

sudo aptitude install libmysql-java

Y luego reiniciamos los servicios

Lamentablemente esto no me funciono :(

Lo que si me funciono es instalar de manera manual el conector:

  1. Descargar el archivo desde: dev.mysql.com/downloads/connector/j/
  2. Extraer los archivos.
  3. Copiar el archivo  mysql-connector-java-5.1.13-bin.jar en /usr/share/tomcat6/lib/
  4. Reiniciar los servicios.
  5. Disfrutar.