I have a master-master mysql setup with 2 servers running the exact same application making writes to such a table:
CREATE TABLE `metric` (
`id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
`host` varchar(50) NOT NULL,
`userid` int(10) unsigned DEFAULT NULL,
`name` varchar(255) NOT NULL,
`sampleid` tinyint(3) unsigned NOT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `unique-metric` (`userid`,`host`,`name`,`sampleid`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8
auto_increment_increment
is 2 and offsets are 0 and 1, so PK ids don't clash, but is it possible that with bad timing, 2 applications will create a row with an equal unique-metric
index breaking replication on both mysql servers, since replication thread won't be able to insert replicated row into table due to another row already having the exact same index?
Best Answer
Though I've not tried this myself, I've done a quick documentation hunt and found that this part of the MySQL documentation is helpful.
The relevant part is:
The next question would then be: "How do I know there has been an error?", to which I've found a useful script here, which could be run frequently as a cron task.