Чтобы мастер-мастер или Galera могли безопасно использовать AUTO_INCREMENT, необходимо использовать системные переменные auto_increment_increment
и auto_increment_offset
для генерации уникальных значений для каждого сервера.
https://mariadb.com/kb/en/library/auto_increment/
Установите auto_increment_increment
на 2 на обоих устройствах. Установите auto_increment_offset
на 2 на одном сервере и 1 (по умолчанию) на другом.
Это заставляет один сервер создавать только четные значения, а другой - только нечетные. Они по-прежнему будут иметь тенденцию быть последовательными, потому что если один сервер создает 1, 3, 5, 7 и 9, а следующая вставка происходит на другом сервере после того, как все они будут реплицированы, следующий идентификатор будет равен 10. Пробелы неизбежно, но, как скажет любой опытный администратор базы данных, не зацикливайтесь на пробелах.
Вам следует установить binlog_format
на ROW
или MIXED
- не STATEMENT
- на обоих серверах. Если вы создаете резервные копии своих журналов, как и должно быть, то log_slave_updates
также должно быть включено. Если у вас есть подчиненные реплики, для мастера, к которому они подключены, эта опция должна быть включена.
Кроме того, на этом этапе вам потребуется уничтожить и восстановить один из серверов, поскольку их данные никогда не будут согласованными.
Рекомендуемая практика для мастера / мастера - писать только на один сервер за раз. Ваше приложение может переключаться по желанию, но оно наиболее стабильно, если только одно из них рассматривается как доступное для записи.