Самая лучший вариант репликации — отсутствие репликации. :) Потому что это еще одна потенциальная точка отказа в системе, которую нужно мониторить, еще один источник головной боли как для админов, так и для разработчиков. То есть решение — сайт берет данные непосредственно из корпоративной БД.
Если по каким-то причинам это вас не устраивает (обдумайте причины еще раз), то сделайте репликацию средствами БД. Это будет надежнее, чем вы сможете сами написать и оттестировать в разумные сроки.
Если же БД не умеет то, что вам нужно, или просто очень хочется сделать свой велосипед, тогда вперед. Вначале выберите модель pull или push. Исходя из ваших требований, лучше pull, но это менее безопасно. Возиться с xml/json не стоит, пишите прямо в БД. Везде вставляйте код для мониторинга. Очередь изменений может переполняться при длительном отсутствии связи. На случай большой рассинхронизации неплохо иметь код «полной перезаписи всего».