We have two SQL servers combined into Availability Group in data center 1 (dc1):
dc1 server 1: SQL Server 2012 SP3 on Windows Server 2016
dc1 server 2: SQL Server 2012 SP3 on Windows Server 2012 R2
and async replica in Azure
azure server 3: SQL Server 2012 SP4 on Windows Server 2012 R2
We have a new data center (dc2) where we need to migrate production SQL availability group to
The end goal is to have two SQL Server 2017 machines
(server 4 and server 5) in new data center (dc2) on Windows Servers 2016, combined in AG
After successful migration to dc2 (server 4, server 1 and server 2 in dc1 are going to be abandoned, we do not need to keep server 1 and 2 as replicas in AG after production db is switched to be server 4 and 5
We have below questions:
if deploy server 4 and server 5 at dc2 as SQL Servers 2017, and add them to existing AG as secondaries, will they be kept synchronized with primary (server 1) without any problem, despite difference in SQL Server and Windows versions ?
will adding server 4 and server 5 to AG and then manual failover to server 4 to be new primary (when we are ready to switch applications to use server 4 / listener new IP as production) work fine ? And then server 4 and server 5 will be synchronizing, and server 1,2,and 3 will break and stop syncing ? Is my understanding correct ?
are there any better options of migrating production from dc1 to dc2 with short downtime?
is it OK to deploy server 4 and server 5 as virtual machines in dc2 ? Or it is better to buy dedicated physical machines ? We want a potential automatic failover from server 4 to server 5 to work perfectly in future. Can having SQL Servers virtualized introduce potential problems with automatic failover function?