Вопрос немного расплывчатый, я не совсем понял, о чем идет речь.
У нас есть 2 сервера S1 и S2, содержащие 2 базы данных D1 и D2. Мы хотели бы создать распределенную базу данных, содержащую как D1, так и D2, у нас будет третий сервер S0, который мы хотели бы использовать в качестве координатора citus.
Использование S1 (D1) и S2 (D2) в качестве рабочего не является проблемой. Citus создает основные таблицы на узле координатора. У рабочих создаются соответствующие осколки. Если предположить, что произойдет столкновение имен, таблицы сегментов могут сосуществовать со старыми таблицами.
Однако вы не можете слепо использовать существующие данные в D1 и D2 как есть и ожидать, что они будут таблицами сегментов. Данные должны быть повторно отправлены.
Steps
прочитать документацию Citus о том, как настроить кластеры, выбрать ключи распределения, загрузить данные
установить / настроить расширение citus на S1, S2 и S0 (координатор)
добавить S1 и S2 в качестве рабочих узлов в S0
Определите распределение таблиц. Некоторые таблицы должны быть на всех узлах (справочные таблицы), некоторые из них защищены в соответствии с каким-либо ключом.
создавать таблицы на узле координатора, распределяя их, используя функцию create_distributed_table / create_reference_table
загрузить данные, это может быть проблемой. Самый простой способ - экспортировать (копировать) существующие данные во внешний файл и импортировать (копировать) из этого файла в кластер citus. Вам нужно будет использовать узел координатора (S0) при импорте данных.
протестируйте ваше приложение, используя новый кластер, перед переключением.