Mi desafío es almacenar tantos volcados de mysql como sea posible en un grupo de ZFS dado.
La piscina en sí tiene dedup y compresión habilitados . Para almacenar múltiples versiones de los volcados se utilizan instantáneas (cada 15 minutos, cada hora, cada día, cada semana y cada mes).
La mayoría de las tablas en las diferentes bases de datos en el servidor MySQL están creciendo y no cambian muy a menudo. Mi pensamiento fue hacer un volcado por tabla en lugar de por base de datos para dar a zfs la oportunidad de realizar una dedicación a nivel de bloque.
El script de copia de seguridad usa la salida de mysqldump y la canaliza a un archivo (con mysqldmup -u$user -p$pass $db $table > $outputfile.sql
- ¿Es posible que ZFS dedup deduzca un flujo de la salida estándar a una buena tasa?
- ¿Debe configurarse manualmente el tamaño de bloque del datased de destino? (y en caso afirmativo, ¿de qué tamaño?)
- ¿Debería aplicarse algún tipo de búfer de salida (aparte del búfer de línea)?
- ¿Son las escrituras de una sincronización de redirección o asíncronas?
EDITAR para concretarlo: ¿Qué es necesario para hacer un archivo escrito línea por línea, como un archivo que se copió si el contenido (casi [por ejemplo, solo la última línea difiere]) es el mismo?
zfs set sync=disabled poolname
Respuestas:
La deduplicación siempre está en el nivel de bloque (al igual que las instantáneas y la copia), la estructura de los datos anteriores no importa. Por lo tanto, podría tener un solo archivo en lugar de miles de archivos pequeños y no haría una diferencia en lo que respecta a la deduplicación.
Por otro lado, su tamaño de bloque sí hace una diferencia, debido a varias razones:
El tamaño es por lo tanto importante, pero también no tan fácil . Parece que ya tienes suficientes datos, así que solo lo probaría: crea dos sistemas de archivos (si es posible después y no simultáneamente para minimizar el efecto entre ellos), uno con un tamaño de bloque muy pequeño (4K), uno con un tamaño muy grande (128K) y luego copie sus datos y compare los resultados. También puede simular el rendimiento de deduplicación con
zdb -b poolname
comparando ambos recuentos de bloques y luego calculando sus ahorros. Si ninguno de esos resultados te parece bien, prueba diferentes tamaños como 16K, 32K o 64K.fuente
mysqldump --database
que produjo un archivo por base de datos y causó un índice de deducción muy malo (1.12). Solo los cambios marginales en la longitud de una tabla cambiaron todos los siguientes bloques en el archivo de respaldo.When a file is written, the data is compressed, encrypted, and the checksum is verified. Then, the data is deduplicated, if possible.
. Si el ARCHIVO se comprime primero, los bloques de datos subsiguientes cambiarán si solo se hacen pequeños cambios. ¿Es esto (todavía) cierto?