If we have an Availability Group (AG) publisher and we plan to rebuild the secondary without impacting transactional replication, then we may see unexpected results if the secondary was the original publisher. Because adding the distributor will delete the metadata in the remote distributor, and replication will need to be rebuild.
Scenario
Replication was created when HostA\InstanceA was the primary so it is the original publisher, as shown below.
Primary: HostA\InstanceA (Original Publisher)
Secondary: HostB\InstanceB
Distributor: HostR\InstanceR
After fail over HostA\InstanceA is the secondary, as shown below.
Secondary: HostA\InstanceA (Original Publisher)
Primary: HostB\InstanceB
Distributor: HostR\InstanceR
Then HostA\InstanceA is rebuild on new hardware without production impact, as shown below.
Secondary: HostA\InstanceA (Original Publisher Rebuild)
Primary: HostB\InstanceB
Distributor: HostR\InstanceR
But now we need to run sp_addistributor 'HostR\InstanceR' in the newly built secondary as outlined here
When we run sp_addistributor in the secondary, it executes the following in the distributor, passing the name of the secondary that was the original publisher
repl_distributor.distribution_db.sys.sp_MSdistpublisher_cleanup @@servername
So it will delete all the metadata and replication will stop working, then we will need to run sp_removereplication in the primary and rebuild replication
Workaround
Since sp_adddistributor passes @@servername, we can rename the secondary to HostANew\InstanceA using sp_dropserver/sp_addserver as outlined here, then sp_MSdistpublisher_cleanup @@servername won't find any matching entries of the original publisher in the distributor and replication will continue to work as expected.