Large Sync best practice

Are there any best practices to perform an initial table sync of a large~ish source and then have it maintained in sync?

I have a 20MM row history table that I need to move from MariaDB into MS SQL, then once sync is complete, update MS SQL with deltas daily. Running a single SQL job failed at 3MM rows after 3 hours.