TTL controls DNS caching time. Lower TTL to 300 seconds 24 hours before migration, test the new server via /etc/hosts, then update the A-record.
dig @8.8.8.8 example.com A +short
while true; do echo "$(date): $(dig @8.8.8.8 example.com A +short)"; sleep 30; done
Use dnschecker.org or whatsmydns.net to monitor DNS propagation worldwide in real time after switching your A-record.