I am migrating a reasonably large (18GB) database used for a website from one server to another. There are two tables which make up 95% of that size and they do not have to be fully transferred for the site to function but eventually they'll have to be transferred. All tables are InnoDB.
I've examined the following options but I'm still unsure which would be most reliable and with least downtime.
Option A: mysqldump + import
Stop server A, mysqldump, transfer to server B and import. Definitely the safest method but downtime could be over 2 hours.
Option B: mysqldump w/out large tables + import later
Would be very quick but I'm not sure how the server would function importing the large tables while under load and whether this would cause it to lock.
Option C: rsync datadir
I've seen this option mentioned in other question answers, and I wasn't able to make it work on a running server, understandably, but I can see it going wrong again even if server A is stopped fully before syncing. Also server A is on 5.6.25 while server B is on 5.6.28.
Option D: early import + incremental backup
I could make a --single-transaction dump on running server A, import it in advance and then make a further incremental backup whether through the binary log or other incremental backup systems.