
Mysqlpump es un programa cliente que se lanzó con MySQL 5.7.8 y se utiliza para realizar copias de seguridad lógicas de una mejor manera. Mysqlpump admite el paralelismo y tiene la capacidad de crear una salida comprimida. Pablo ya ha escrito un blog sobre esta utilidad (La utilidad mysqlpump), y en este blog, voy a explorar las técnicas de compresión disponibles en la utilidad Mysqlpump.
Descripción general
Mysqlpump tiene tres opciones para realizar copias de seguridad de la compresión.
– comprimir: Se utiliza para comprimir toda la información enviada entre el cliente y el servidor.
-algoritmo de compresión: Fue agregado en MySQL 8.0.18. Se utiliza para definir el algoritmo de compresión para todas las conexiones entrantes al servidor. (opciones disponibles: zlib, zstd, sin comprimir)
-salida de compresión: Se usa para definir el algoritmo de compresión para el archivo de respaldo (opciones disponibles: lz4, zlib)
Aquí, «–Comprimir-salida» es la opción utilizada para definir el algoritmo de compresión para el archivo de respaldo. Que tiene dos algoritmos.
Lz4: LZ4 es un algoritmo de compresión de datos sin pérdidas que se centra en la velocidad de compresión y descompresión.
Zlib: zlib es una biblioteca de software que se utiliza para la compresión de datos. Los datos comprimidos de zlib normalmente se escriben con un contenedor gzip o zlib.
Configuración de laboratorio
Para probar ambas técnicas de compresión, instalé el servidor MySQL (8.0.22) en mi entorno local. También creé la tabla «percona_test.mp_test» que tiene un tamaño de 11GB.
[root@localhost]# mysql -e «seleccionar recuento
[root@localhost percona_test]de percona_test.mp_test G «***************************** 1. fila ********** *** ************** cuenta
[root@localhost]: 70698024 # ls -lrth total 11G -rw-r —–. 1 mysql mysql 11G 23 de octubre 11:20 mp_test.ibd # mysql -e «seleccione @@ versión, @@ versión_comment G» **************************** 1. póngase en fila****************************@@ versión :8.0.22@@ version_comment : MySQL Comunidad Servidor – [root@localhost]GLP # mysql -e «seleccionar recuento de percona_test.mp_test G « **************************** 1.póngase en fila****************************contar( * ) [root@localhost percona_test]: 70698024 # ls -lrthtotal11G–rw– r —– . 1 mysql mysql 11GOct.23 11: |
20
mp_test
.ibd
[root@localhost]Compresión con Lz4 Voy a realizar la copia de seguridad (tabla: mp_test) con el algoritmo de compresión lz4. # time mysqlpump –set-gtid-purged = off –compress –compress-output = lz4 percona_test mp_test> percona_test.mp_test.lz4 Progreso del volcado: tablas 0/1, 250/70131715 filas Progreso del volcado: tablas 0/1, 133000/70131715 archivo Progreso del volcado: tabla 0/1, archivo 278500/70131715 … … Progreso del volcado: tabla 0/1, archivo 70624000/70131715 Volcado completo en 5408028 57m reales# tiempo mysqlpump –set-gtid-purged = off –compress –compress-output = lz4 percona_test mp_test> percona_test.mp_test.lz4 VertederoProgreso: 0/ 1mesas, 250 / 70131715póngase en fila VertederoProgreso: 0/ 1mesas, 133000 / 70131715póngase en fila VertederoProgreso: 0/ 1mesas, 278500 /70131715póngase en fila ... . .. VertederoProgreso: 0/ 1mesas, 70624000 / 70131715 póngase en fila Vertedero llenar en |
540824
[root@dc1 percona_test]9 min 0,857 s Tardó 9.1 minutos en completarse. Y, el tamaño del archivo es de 1,1 GB, parece una compresión de 10x. # ls -lrth | grep lz4 -rw-r – r–. 1 raíz raíz 1.1G 23 de octubre 12:47 percona_test.mp_test.lz4# ls -lrth | grep lz4–rw–r– r – . 1 radica radica 1.1GOct.23 12:47 |
prueba_percona
.mp_test
[root@dc1]Compresión con Zlib Ahora, voy a iniciar la copia de seguridad con el algoritmo «zlib». # time mysqlpump –set-gtid-purged = off –compress –compress-output = zlib percona_test mp_test> percona_test.mp_test.zlib Progreso del volcado: tablas 0/1, 250/70131715 filas Progreso del volcado: tablas 0/1, 133250/70131715 filas Progreso del volcado: tablas 0/1, 280250/70131715 filas Progreso del volcado: tablas 0/1, archivos 428750/70131715 … … Progreso del volcado: tablas 0/1, 70006/7006 / 7006/70131715 vera 10 min 6.436 s# tiempo mysqlpump –set-gtid-purged = off –compress –compress-output = zlib percona_test mp_test> percona_test.mp_test.zlib VertederoProgreso: 0/ 1mesas, 250 / 70131715póngase en fila VertederoProgreso: 0/ 1mesas, 133250 / 70131715póngase en fila VertederoProgreso: 0/ 1mesas, 280250 / 70131715póngase en fila VertederoProgreso: 0/ 1mesas, 428750 /70131715póngase en fila ... . .. VertederoProgreso: 0/ 1mesas, 70627000 / 70131715 póngase en fila Vertedero llenar en |
546249
[root@dc1]10 min 6.436 s Tomó 10,6 minutos completar el proceso. Y el tamaño del archivo es el mismo 1,1 GB (compresión 10x). # ls -lrth | grep -i zlib -rw-r – r–. 1 raíz raíz 1.1G 23 de octubre 13:06 percona_test.mp_test.zlib# ls -lrth | grep -i zlib–rw–r– r – . 1 radica radica 1.1GOct.23 13:06 |
prueba_percona
.mp_test
.zlib
- Cómo descomprimir la copia de seguridad
La comunidad MySQL proporciona dos utilidades para descomprimir copias de seguridad.
[root@dc1]lz4_decompress # tiempo lz4_decompress percona_test.mp_test.lz4 percona_test.mp_test.sql real 0m45.287s usuario 0m1.114s sys 0m6.568s # ls -lrth | grep percona_test.mp_test.sql -rw-r – r–. 1 raíz raíz 9.1G 23 de octubre 13:30 percona_test.mp_test.sql # time lz4_decompress percona_test.mp_test.lz4 percona_test.mp_test.sql cierto 0 min 45,287 s usuario [root@dc1]0 min 1,114 s sys0m6.568s# ls -lrth | grep percona_test.mp_test.sql–rw–r– r – . 1 radica radica 9.1GOct.23 13:30 |
prueba_percona
.mp_test
[root@dc1]zlib_decompress # tiempo zlib_decompress percona_test.mp_test.zlib percona_test.mp_test.sql real 0m35.553s usuario 0m6.642s sys 0m7.105s # ls -lrth | grep percona_test.mp_test.sql -rw-r – r–. 1 raíz raíz 9.1G 23 de octubre 13:49 percona_test.mp_test.sql # hora zlib_decompress percona_test.mp_test.zlib percona_test.mp_test.sql cierto 0 min 35,553 s usuario [root@dc1]0 min 6,642 s sys0 min 7,105 s# ls -lrth | grep percona_test.mp_test.sql–rw–r– r – . 1 radica radica 9.1GOct.23 13:49 |
prueba_percona
.mp_test
.sql zlib tardó 36 segundos en descomprimir el archivo de respaldo. Este es el procedimiento que vamos a comprimir / descomprimir las copias de seguridad con Mysqlpump. Parece que ambos algoritmos proporcionan una compresión de 10x. Además, no hay mucha diferencia en el tiempo de ejecución, pero puede ser grande con un gran conjunto de datos.