Задача не совсем обычная. Скажу сразу, это временное решение.
Итак, есть исходная MYSQL база данных (назовём, MASTER) и его реплика (пусть, SLAVE). Реплицирование (как уже понятно, MASTER-SLAVE) statement-based по причине, что на SLAVE нужно запускать триггеры.
Как такое может возникать?
Странно ещё то, что каждый раз дублированное значение на немного отличается от предыдущего в большую сторону. Больше похоже на значение какого-то автоинкремента, но только не этой таблицы.
Итак, ещё раз цепочка действий:
Могу сразу сказать, что ни один триггер точно не затрагивает значение поля ID. И никто другой тоже. Никаких UPDATE / DELETE над CHANGES тоже не выполняется.
Я понимаю, что два и больше разных триггеров могу сработать одновременно и, соответственно, будут делать INSERT тоже одновременно. Но такая ситуация должна без особых сложностей разрешаться самой СУБД. Иначе, это была бы очень плохая СУБД.
UPD:
CREATE TABLE `CHANGES` (
`id` BIGINT UNSIGNED NOT NULL AUTO_INCREMENT,
`field1` ENUM(...) NOT NULL,
`field2` BOOL NOT NULL DEFAULT FALSE,
`field3` VARCHAR(64) NOT NULL,
`field4` VARCHAR(255) NOT NULL,
`field5` TEXT,
PRIMARY KEY (`id`)
) ENGINE=INNODB DEFAULT CHARSET=utf8;
CREATE TRIGGER `tr_TABLE_insert` AFTER INSERT ON `TABLE`
FOR EACH ROW BEGIN
INSERT INTO `CHANGES` (`field1`, `field3`, `field4`, `field5`)
VALUES ("value1", "value3", "value4", "value5");
END
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости