Я уже просмотрел некоторые ресурсы и просто хочу уточнить и узнать мнение.
Прежде всего, чтобы полностью избежать каких-либо проблем, мы могли бы просто не беспокоиться об использовании столбцов идентификаторов в качестве первичных ключей вместо этого, чтобы они были сгенерированы сами, и просто реплицировали эти значения в обоих направлениях, предполагая, что они всегда уникальны в любой момент создания.
В рамках этого вопроса я говорю о двух или более способах репликации для решения проблем глобального доступа, и у нас действительно есть столбцы идентификации.
Теперь мы настраиваем репликацию транзакций, и обе базы данных должны реплицироваться друг на друга.
Насколько я понимаю, вы назначаете диапазон начальных значений каждому серверу базы данных, и он будет их использовать, вы знаете, что есть уникальная причина, по которой вы указали диапазоны, которые не пересекаются. Значит ли это, что во время репликации эти значения вставляются в исходный столбец?
Итак, если вы выделите диапазоны 1-10 и 11-20 2 серверам, как только каждый сервер вставит 10 строк, у вас будут семена 1-20 в обеих базах данных?


Существует опция «НЕ ДЛЯ РЕПЛИКАЦИИ», которую можно применить к столбцам идентификаторов (а также к триггерам и другим ограничениям).
В вашем примере server1 будет набирать 1-10, но просто принимает реплицированные 11-20.
Несколько способов посадки семян:
Либо: установите начальное значение / приращение НЕ ДЛЯ ПОВТОРЕНИЯ как это
Это дает вам 500000000 на сервер для 8 серверов.
Или же: Добавьте второй столбец с именем ServerID, чтобы указать составные ключи, используйте НЕ ДЛЯ ПОВТОРЕНИЯ для столбца идентификатора
Это масштабируется, скажем, до 256 серверов для tinyint с 2 ^ 32 строками на сервер.
В любом случае работает ...