Как я понимаю, что вы пытаетесь сделать, вы хотите разрешить нескольким клиентским приложениям синхронизировать свои данные с сервером таким образом, чтобы на сервере были все данные со всех сайтов, но каждая запись такжеимеет идентификатор клиента, так что вы можете поддерживать прослеживаемость обратно к источнику.
Почему вы должны отправлять все данные на сервер, прежде чем получите настройку другой информации?Вы должны быть в состоянии построить все эти вещи одновременно.Кроме того, вам не нужно загружать все данные одновременно.Размещайте их по одному в день (при условии, что у вас есть небольшое количество клиентских баз данных), что даст вам возможность сосредоточиться на каждой из них по очереди и убедиться, что процесс завершен точно.
Будете ли вы реплицироватьданные обратно клиентам после объединения всех данных в одну таблицу?Информация о вашем размере была неверно передана, вы говорили, что каждая база данных была больше 16 ГБ?Таким образом, тогда 5 сайтов будут иметь суммарный размер 80 ГБ, который будет реплицирован обратно на отдельные сайты?
В противном случае наиболее подходящим будет метод, который вы определили с использованием отдельного приложения для специальной обработки загрузки данных.
Собираетесь ли вы обновлять отдельные схемы после обновления базы данных master?Вы можете захотеть ALTER TABLE и добавить столбец bool к каждой записи и пометить их как «отправленные» или «не отправленные», чтобы отслеживать любые записи, которые были обновлены / вставлены «поздно».У меня такое чувство, что вы собираетесь выполнять развертывание / обновление по очереди, и вы пытаетесь понять, как сохранить все это "синхронно", не теряя ничего.