Recently I was troubleshooting a Veeam backup issue for a client who is utilizing the Always-On SQL architecture in their environment. The client was receiving the following error when trying to backup any of their Always-On SQL instances:
“Failed to freeze guest, wait timeout”
Note that the backup jobs started failing right after migrating the client’s vCenter databases across to the Availability Groups hosted on the Always-On SQL instances.
The only bit of literature I could find on backing up AlwaysOn SQL instances was in this (not very helpful) Veeam guide.
So I’ve dug a little deeper and found this Veeam KB article, which suggests the issue maybe with the vCenter database failing to be excluded from Application-Aware image processing.
Before I carry on, here is bit of background information on the client’s environment:
The environment is built across 2 datacentres and includes 2 vCenter servers (per datacentre) and 2 Veeam servers (V9 U2, per datacentre). The Veeam servers are pointing at the vCenter servers and not to the individual ESXi hosts. Application-Aware image processing is turned on for all SQL instance backup jobs. Also note that the environment consists of 4 SQL servers (spread across 2 datacentres), 4 Availability Groups (spread across 4 servers) and a number of Availability databases including 2 vCenter databases.
Normally the vCenter database is automatically excluded from Application-Aware image processing, however this wasn’t the case in this environment (no clue why, maybe because the vCenter databases are in Availability Groups). So I had to configure the exclusions manually using the following KB article.
The KB article is not written with Always-On SQL instances in mind, so please make a note of the following:
- Contrary to the KB article, when adding the exclusions, I’ve only used the server name the instance resides on (so did not include the instance name). If your servers are hosting multiple instances, you may have to include the instance name when adding the exclusion.
- The Veeam servers are in a different domain than the SQL instances are, so I had to use the FQDN of the SQL servers. This may not be essential in your environment. Just make sure you can ping your SQL servers from your Veeam server using the server name only. Or alternatively you can use the IP addresses of the SQL servers.
- I had to make a unique exclusion for each Always-On SQL instance. So I’ve added a total of 8 exclusions on each Veeam server (2 vCenter databases x 4 SQL instances). Don’t bother trying to exclude the vCenter databases using the Availability Group addresses, it doesn’t work!!!
Once I configured the exclusions the backup jobs started succeeding!!!
However, I’m not clear on the implications of excluding the vCenter database from Application-Aware image processing. Initially I was worried that the vCenter database logs wouldn’t get truncated, however this isn’t the case, they seem to be truncating just fine. Then I thought maybe Veeam wouldn’t let me restore the vCenter databases (without having to restore the whole VM), again not the case. So if there is anyone out there who knows what this exclusion does exactly (apart from making the backups succeed of course), by all means share in the comments section.