I have multiple MySQL database servers running in virtual machines on my Proxmox VE cluster, and I’m trying to determine the best method to back them up effectively.
I’m considering using Veeam since we already utilize it for our other backup solutions. However, I’ve noticed that the existing integration with Proxmox VE doesn’t allow for pre or post backup commands or scripts.
This is concerning as I need to make sure that the databases are consistent before the backup initiates. Without options to execute commands like mysqldump or flush tables prior to the snapshot, I’m anxious about the reliability of the backups.
Has anyone discovered a solid workaround for this issue? Are there alternative backup solutions that might work more effectively with MySQL on Proxmox? I’m open to recommendations for both paid and free tools.
I ran into this exact problem about six months ago with our Proxmox cluster hosting several production MySQL instances. The snapshot inconsistency issue is real and can cause serious headaches during recovery. What worked for me was implementing a hybrid approach. I set up a simple cron job on each MySQL VM that runs mysqldump every few hours to create logical backups stored locally. Then I use Proxmox Backup Server to handle the VM-level snapshots. This gives me two recovery layers - the consistent database dumps for granular recovery and the full VM snapshots for complete system restoration. For the MySQL side, I also enabled binary logging and configured the databases to use InnoDB with innodb_flush_log_at_trx_commit=1. This significantly improved crash recovery consistency even when snapshots occur during active transactions. The overhead is minimal since the mysqldump runs are staggered across different VMs, and PBS handles deduplication efficiently. Recovery testing showed this approach was far more reliable than relying solely on filesystem-level snapshots of active databases.
Running MySQL backups on Proxmox can definitely be tricky without proper application awareness. Instead of trying to work around Veeam’s limitations, consider using Percona XtraBackup directly within your MySQL VMs. I’ve been using this approach for over a year and it provides hot backups without locking tables or stopping the database service. XtraBackup creates consistent point-in-time backups even during heavy transaction loads, and you can schedule these to run independently of your VM snapshot schedule. The backup files can be stored on NFS shares or local storage that Proxmox can then include in its regular backup cycles. What makes this particularly effective is that XtraBackup handles InnoDB and MyISAM tables properly, ensuring crash recovery consistency. You can also stream backups directly to remote locations using SSH or object storage. The restore process is straightforward and doesn’t require complex coordination between hypervisor and database layers. This eliminates the snapshot timing issues entirely while giving you database-native backup capabilities.
We switched from Veeam to Proxmox Backup Server combined with a dedicated MySQL backup strategy after facing similar consistency issues. The solution involved configuring MySQL with innodb_safe_binlog=1 and implementing automated mysqldump exports to a separate storage location before the scheduled VM backups. I also discovered that enabling MySQL’s innodb_flush_method=O_DIRECT helped reduce the risk of corruption during snapshot operations. For our environment, we use a simple bash script that connects to each MySQL instance, performs a FLUSH TABLES WITH READ LOCK, triggers the backup, then releases the lock. The script runs via systemd timer rather than cron for better logging and failure handling. PBS handles the VM snapshots while maintaining excellent deduplication ratios. This dual approach has proven much more reliable than trying to force application-aware backups through hypervisor-level tools that don’t natively support database consistency checks.
honestly just use bareos with the mysql plugin - it handles database consistency automatically and integrates well with proxmox environments. been running it for 2 years without issues and its free unlike veeam
Yeah, VM-level backups on Proxmox won’t guarantee MySQL consistency unless you have a way to quiesce the DB first. Veeam’s Proxmox integration doesn’t let you run pre/post scripts, so snapshots alone can give you dirty backups if MySQL was mid-write.
Best bet is to handle backups inside the guest — either use mysqldump or mysqlpump for smaller DBs, or Percona XtraBackup (or mariabackup) for hot, crash-consistent backups. You can script those to run on a schedule and have Veeam or Proxmox just grab the resulting dump directories.
If you’re running MySQL in LXCs, use Proxmox vzdump hook scripts to flush or dump data before snapshotting. That way the backups stay consistent without taking down the service.
And yeah — whatever method you go with, test your restores regularly. If you ever run into corrupted dumps or damaged .ibd files, third-party recovery tools like Stellar Repair for MySQL can help pull data out cleanly.