How do I change the mirror mode from asynchronous to synchronous in a old-school 12.0.1.3797 HA setup (no CREATE MIRROR usage) without an immediate outage on the primary? Is it possible to stop the secondary (mirror) partner, change the -xf mirror mode, and restart it? At that point the restarted partner (secondary, mirror) will be using -xp ... mode=sync whereas the primary partner will still be using -xp ... mode=async. Will everything still work? If "yes" then presumably the mirror mode specification could be changed in the primary partner's startup configuration, and it would take effect on the next failover, scheduled or otherwise :) asked 19 Feb '14, 11:52 Breck Carter Ian McHardy |
First of all, mirroring was never designed for one partner to be async and one to be sync. So the safest thing to do would be to stop the mirror, then stop the primary, then restart the primary with sync, then restart the mirror with sync. I did try taking two 12.0.1 partners, both with -xp mode=async;autofailover=yes and stopping the mirror, and restarting it with -xp mode=sync;autofailover=yes. At this point all seemed well (the servers are probably giving a mixture of sync and async behaviour). But when I stopped the primary the mirror would not take over - I think because the arbiter thought the state was synchronizing (normal for async), but the primary required the state to be synchronized. So I don't think you can force them to failover. ALTER DATABASE SET PARTNER FAILOVER also failed to failover. So I'm pretty sure you can not get this to work, and I wouldn't recommend trying on a production system. answered 19 Feb '14, 15:15 Ian McHardy Graeme Perrow |
You could set the synchronize_mirror_on_commit option for connections to the database. This will make all transactions synchronous, even though the servers all still running in async. mode. This will likely not be good for performance, but it might be good enough as a temporary solution. answered 20 Feb '14, 10:19 Jason Hinspe... |