Using Distributed AGs for Your Migrations Elizabeth Noble Using Distributed AGs for Your Migrations
Using Distributed AGs for Your Migrations Elizabeth Noble Using Distributed AGs for Your Migrations Talk about use case
About Me e: elizabeth.a.noble@outlook.com t: @sqlzelda
Migrate to a Data Center
Migrate Across Domains https://docs.microsoft.com/en-us/sql/database-engine/availability-groups/windows/domain-independent-availability-groups?view=sql-server-2017
Data Center Migration Issues Need to sync data across multiple domains Need to sync data across long distances Need short cutover windows
What Can Distributed Availability Groups Do for Me? Synchronize across zero or more domains Synchronize across zero or more Windows Server Failover Clusters (WSFC) Synchronize across operating systems
Terminology First Availability Group Primary Node – Global Primary Secondary Node – Secondary Second Availability Group Primary Node – Forwarder
Create Availability Group Asynchronous https://docs.microsoft.com/en-us/sql/database-engine/availability-groups/windows/distributed-availability-groups?view=sql-server-2017
Create Distributed AG on First AG
Create Distributed AG on Second AG
Create Distributed AG https://docs.microsoft.com/en-us/sql/database-engine/availability-groups/windows/distributed-availability-groups?view=sql-server-2017
Manual Seeding Databases Add database to AG 2 Forwarder Add database AG 2 Secondary
Create Distributed AG Asynchronous https://docs.microsoft.com/en-us/sql/database-engine/availability-groups/windows/distributed-availability-groups?view=sql-server-2017
Building the Distributed Availability Group Asynchronous https://docs.microsoft.com/en-us/sql/database-engine/availability-groups/windows/distributed-availability-groups?view=sql-server-2017
Building the Distributed Availability Group Asynchronous https://docs.microsoft.com/en-us/sql/database-engine/availability-groups/windows/distributed-availability-groups?view=sql-server-2017
Building the Distributed Availability Group https://docs.microsoft.com/en-us/sql/database-engine/availability-groups/windows/distributed-availability-groups?view=sql-server-2017
Building the Distributed Availability Group Asynchronous https://docs.microsoft.com/en-us/sql/database-engine/availability-groups/windows/distributed-availability-groups?view=sql-server-2017
Demo: Creation
Monitoring DMVs sys.availability_groups sys.availability_replicas sys.dm_hadr_availability_replica_states sys.dm_os_performance_counters Instance_nameLIKE ‘%<distributed AG name>%’ sys.dm_hadr_automatic_seeding
Monitoring Useful for troubleshooting synchronization errors current_state–FAILED Forwarder SQL Server log will show that seeding worked with the LSNs synchronized current_state–COMPLETED
Preparing for the Migration Must be a manual failover Stop all data traffic to the Global Primary
Update Availability Mode Set the Availability Mode to Synchronous on the Global Primary
Update Availability Mode Synchronous https://docs.microsoft.com/en-us/sql/database-engine/availability-groups/windows/distributed-availability-groups?view=sql-server-2017
Verify Synchronization Get final LSN on first Availability Group Confirm LSN on second Availability Group matches
Update First Availability Group Change the first Availability Group to a secondary
Update First Availability Group X https://docs.microsoft.com/en-us/sql/database-engine/availability-groups/windows/distributed-availability-groups?view=sql-server-2017
Failover with Data Loss On the Forwarder alter availability group to allow data loss
Failover with Data Loss Synchronous https://docs.microsoft.com/en-us/sql/database-engine/availability-groups/windows/distributed-availability-groups?view=sql-server-2017
Update Availability Mode Set the Availability Mode back to Asynchronous on the new Global Primary
Update Availability Mode Asynchronous https://docs.microsoft.com/en-us/sql/database-engine/availability-groups/windows/distributed-availability-groups?view=sql-server-2017
Failover Post-migration Rename the listener Update application to use new listener
Manual Failover to Second Availability Group Asynchronous https://docs.microsoft.com/en-us/sql/database-engine/availability-groups/windows/distributed-availability-groups?view=sql-server-2017
Manual Failover to Second Availability Group Synchronous https://docs.microsoft.com/en-us/sql/database-engine/availability-groups/windows/distributed-availability-groups?view=sql-server-2017
Manual Failover to Second Availability Group X https://docs.microsoft.com/en-us/sql/database-engine/availability-groups/windows/distributed-availability-groups?view=sql-server-2017
Manual Failover to Second Availability Group https://docs.microsoft.com/en-us/sql/database-engine/availability-groups/windows/distributed-availability-groups?view=sql-server-2017
Manual Failover to Second Availability Group Synchronous https://docs.microsoft.com/en-us/sql/database-engine/availability-groups/windows/distributed-availability-groups?view=sql-server-2017
Manual Failover to Second Availability Group Asynchronous https://docs.microsoft.com/en-us/sql/database-engine/availability-groups/windows/distributed-availability-groups?view=sql-server-2017
Manual Failover to Second Availability Group https://docs.microsoft.com/en-us/sql/database-engine/availability-groups/windows/distributed-availability-groups?view=sql-server-2017
Manual Failover to Second Availability Group https://docs.microsoft.com/en-us/sql/database-engine/availability-groups/windows/distributed-availability-groups?view=sql-server-2017
Demo: Failover
Removing Distributed AG Use T-SQL DROP AVAILABILITY GROUP <distributed AG name>
Migrating to the New Data Center Asynchronous https://docs.microsoft.com/en-us/sql/database-engine/availability-groups/windows/distributed-availability-groups?view=sql-server-2017
Migrating to the New Data Center Asynchronous https://docs.microsoft.com/en-us/sql/database-engine/availability-groups/windows/distributed-availability-groups?view=sql-server-2017
Migrating to the New Data Center https://docs.microsoft.com/en-us/sql/database-engine/availability-groups/windows/distributed-availability-groups?view=sql-server-2017
Migrating to the New Data Center Asynchronous https://docs.microsoft.com/en-us/sql/database-engine/availability-groups/windows/distributed-availability-groups?view=sql-server-2017
Migrating to the New Data Center Synchronous https://docs.microsoft.com/en-us/sql/database-engine/availability-groups/windows/distributed-availability-groups?view=sql-server-2017
Migrating to the New Data Center X https://docs.microsoft.com/en-us/sql/database-engine/availability-groups/windows/distributed-availability-groups?view=sql-server-2017
Migrating to the New Data Center https://docs.microsoft.com/en-us/sql/database-engine/availability-groups/windows/distributed-availability-groups?view=sql-server-2017
Migrating to the New Data Center Synchronous https://docs.microsoft.com/en-us/sql/database-engine/availability-groups/windows/distributed-availability-groups?view=sql-server-2017
Migrating to the New Data Center Asynchronous https://docs.microsoft.com/en-us/sql/database-engine/availability-groups/windows/distributed-availability-groups?view=sql-server-2017
Migrating to the New Data Center https://docs.microsoft.com/en-us/sql/database-engine/availability-groups/windows/distributed-availability-groups?view=sql-server-2017
Migrating to the New Data Center https://docs.microsoft.com/en-us/sql/database-engine/availability-groups/windows/distributed-availability-groups?view=sql-server-2017
Conclusion
Additional Resources https://www.sqlskills.com/blogs/jonathan/configuring-a-multi-subnet-sql-server-test-environment/ http://www.mikefal.net/2015/03/10/building-availability-groups-withpowershell/
Additional Resources https://docs.microsoft.com/en-us/sql/database-engine/availabilitygroups/windows/distributed-availability-groups?view=sql-server-2017 https://docs.microsoft.com/en-us/sql/database-engine/availabilitygroups/windows/configure-distributed-availability-groups?view=sql-server2017
Additional Resources https://docs.microsoft.com/en-us/sql/database-engine/availabilitygroups/windows/domain-independent-availability-groups?view=sql-server2017#create-a-domain-independent-availability-group https://docs.microsoft.com/en-us/sql/linux/sql-server-linux-availabilitygroup-overview?view=sql-server-2017#interoperability-with-windowsbased-availability-groups-and-replicas
Special Thanks