FIXED release version to 61_2 (not 62_2, sorry)
The Big Thing
The main new feature of this release is the new mysqldump command, which automatically generates scripts for backing up MySQL (or MariaDB) databases.
If you use these RDBMS, you know how tedious it is to try to separate different databases into separate files.
Normally, it's possible to dump a SINGLE database into a file, or ALL databases into a single file.
This makes it difficult, in the second case, to restore a single database.
Sure, you can use scripts, filter files, or maybe even third-party programs, but it's still very inconvenient.
The mysqldump command, however, aims to make life easier for administrators by saving multiple distinct files, one for each database, in a single .zpaq archive.
This will make extraction and restoration easier.
The default setting is "copy all databases," and it is typically run as the root user (of MySQL), but you can use -not and -only to filter which databases to include.
Since you need two executables, mysql.exe (to enumerate the databases) and mysqldump.exe (to perform the backup), this version adopts various heuristic strategies.
On Windows, it looks inside c:\program files to check if it finds the binaries.
In this case, it typically means you already have MySQL/MariaDB installed, and those will be used. If it doesn't find them (for example, if you're using a client), you can download them from my website with the -space switch (currently only 64-bit version).
This will physically write the two files, retrieved from www.francocorbelli.it, to your hard drive in the same folder where zpaqfranz.exe is located.
Of course, since these are executable downloads, it's up to you to decide if they are reliable enough or not.
On non-Windows systems, the executables are found heuristically within typical directories (/bin, /usr/local/bin, etc.).
In both cases (Windows and Linux), you can manually specify the location of these binaries using the -bin switch.
As usual, the best way to get familiar is to ask for help, i.e., zpaqfranz h mysqldump, or contact me directly or open an issue on GitHub.
C:\zpaqfranz>zpaqfranz h mysqldump
zpaqfranz v61.2d-JIT,SFTP-L,HW BLAKE3,SHA1/2,4,SFX64 v55.1,(2025-04-02)
CMD mysqldump Dump all MySQL/MariaDB databases into a ZPAQ archive
Requires 'mysql' (or 'mariadb') and 'mysqldump' (or 'mariadb-dump')
On Windows, append '.exe' to executable names [of course]
Use one of these methods to locate executables:
- Specify path with -bin something
- Let the program search automatically (default)
- Use -space to download from the Internet (Windows only)
+ : -bin path Path where mysql/mariadb(.exe) and mysqldump/mariadb-dump(.exe) are located
+ : -space Download mysql.exe and mysqldump.exe from the Internet
+ : -u user MySQL/MariaDB username
+ : -p password MySQL/MariaDB password (use quotes if it contains spaces)
+ : -h host MySQL/MariaDB host (e.g., localhost or IP address)
+ : -P port MySQL/MariaDB port (default: 3306)
+ : -key pwd Password for encrypting the ZPAQ archive
+ : -mX ZPAQ compression method (X = 0-5, none to highest)
+ : -verbose Be... verbose
+ : -only pattern Select only databases containing the specified text or matching pattern
-only 2015 matches any DB containing '2015' (e.g., db2015, test2015prod)
+ : -not pattern Exclude databases containing the specified text or matching pattern
-not temp matches any DB containing 'temp' (e.g., temporary, temp_db)
*** Note: System databases (information_schema, performance_schema,
sys) are automatically excluded
Examples:
Dump all databases (Windows): mysqldump z:\1.zpaq -u root -p pluto -h 127.0.0.1 -P 3306 -key pippo -m2
Get tools from Internet (Windows): mysqldump z:\1.zpaq -u root -p pluto -space
Auto-search on Linux: mysqldump /tmp/test.zpaq -u root -p pluto
Specify path on Linux: mysqldump /tmp/test.zpaq -u root -p pluto -bin "/bin"
Include databases with '2015': mysqldump test.zpaq -u root -p pluto -only 2015
Exclude databases with 'geo': mysqldump test.zpaq -u root -p pluto -not geo
Multiple conditions: mysqldump test.zpaq -u root -p pluto -only prod -not backup
Final clarification: mysqldump can be used with the -m switch (to increase or decrease compression) and the -key switch (to encrypt the archive). -fragment is not compatible with the piping mode used, so it is not active (like all other switches, actually). It's not yet a very mature command (i.e., I’m still developing it), but it’s extremely useful to me.
A final thought: If your databases do not change significantly (which is normal), keep in mind that the deduplication mechanism of zpaq is performed BEFORE compression.
TRANSLATION
If you do an initial backup with a compression level of -m4 (i.e., very high), it will take a long time (depending on the size of the databases, of course, even hours).
However, subsequent runs, always with -m4, will be MUCH faster, because the parts of the database that remain the same will be deduplicated, and only a small amount of data will remain to be compressed (very slowly with -m4).
As far as I know, it is the fastest and most compressed backup system among all the ones I’m familiar with.
In fact, I could do even better, like running the dumps in parallel, but this would require a separate .zpaq file for each database, whereas it's more convenient for me to keep a single file for each RDBMS.
As always, the evolution of zpaqfranz follows the needs of my work.
In short, you can achieve a very high level of packing for MySQL backups, with all versions, and at extremely high speeds.
As mentioned, if you have suggestions or encounter issues, don’t hesitate to ask for assistance.
Minor news
The build also includes some minor improvements (Solaris compatibility, ESXi, a few bug fixes), but none of them are particularly significant.