Cuando tenemos bases de datos muy grandes en nuestro motor MySQL es muy probable que los backups de las mismas tarden bastante tiempo en llevarse a cabo. Y es que el tiempo que una herramienta toma para hacer un backup de una base de datos es en muchas ocaciones crucial y mas aun el tiempo que toma restaurar dicho backup.

Domas Mituzas, Andrew Hutchings y Mark Leith son un grupo de ingenieros que trabajan en compañías como facebook, SkySQL y Oracle y que nos han dejado esta maravillosa herramienta abierta al publico. Se trata de MyDumper, misma que hace un backup y una restauración en significativamente menos tiempo, ya que aprovecha el poder del paralelismo multihilo de los sistemas operativos modernos y esto hace que vaya mucho mas rápido.

Para instalar esta herramienta en los distintos sistemas operativos, tenemos los siguientes comandos:

Ubuntu/Debian

apt-get install libglib2.0-dev libmysqlclient15-dev zlib1g-dev libpcre3-dev

Fedora/RedHat/CentOs

yum install glib2-devel mysql-devel zlib-devel pcre-devel

OpenSuse

zypper install glib2-devel libmysqlclient-devel pcre-devel zlib-devel

Mac OSX

port install glib2 mysql5 pcre

La utilizacion es bastante sencilla, pero poderosa.

MyDumper

mydumper \
--database=$DB_NAME \
--host=$DB_HOST \
--user=$DB_USER \
--password=$DB_PASS \
--outputdir=$DB_DUMP \
--rows=500000 \
--compress \
--build-empty-files \
--threads=2 \
--compress-protocol

cabe notar que $DB_DUMP tendrá que ser un directorio (no un archivo) en donde la base de datos sera guardada para futuras restauraciones, y el parámetro rows es el numero de filas que se podran respaldar por cada operacion, por cada hilo, bastante mas poderoso que el default nativo de MySQL que lo hace de forma secuencial.

MyLoader

myloader \
--database=$DB_NAME \
--directory=$DB_DUMP \
--queries-per-transaction=50000 \
--threads=10 \
--compress-protocol \
--verbose=3

De forma similar podemos restaurar una base de datos con un comando de myloader. en este caso el parámetro directory indica el directorio en donde el backup de MyDump esta ubicado, y el parámetro queries-per-transactión es el numero de querys que cada transaccion ejecutará. De nuevo bastante mejor que las opciones nativas del motor de la base de datos.

 

Categorized in: