Einige INNODB-Tabellen in unserer Produktionsdatenbank stoßen kurz vor dem Erreichen des INT AUTO_INCREMENT-Grenzwerts von 2147483647, und wir müssen sie in BIGINT ändern, andernfalls schlagen die Schreibvorgänge fehl.
Die Tabellen befinden sich in einer MySQL 5.6.19a-Produktionsdatenbank, die unter Amazon RDS ausgeführt wird.
Wie können wir einen ALTER wie diesen durchführen, ohne die ständig stattfindenden Lesevorgänge und Einfügungen in der Produktion zu stören?
ALTER TABLE MYTABLE
CHANGE id
id
BIGINT NOT NULL AUTO_INCREMENT;
Hier ist DDL für die Tabelle:
CREATE TABLE `MYTABLE` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`siteId` int(11) NOT NULL,
`filter` varchar(10) NOT NULL DEFAULT 'ALL',
`date` varchar(10) NOT NULL,
`cards` varchar(250) NOT NULL,
`apples` varchar(45) NOT NULL,
`carrots` varchar(45) NOT NULL,
`corn` varchar(45) NOT NULL,
`peas` varchar(45) NOT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `unique` (`siteId`,`filter`,`date`,`cards`),
KEY `date_k` (`date`),
KEY `cards_k` (`cards`),
KEY `apples_k` (`apples`),
KEY `siteId_k` (`siteId`)
) ENGINE=InnoDB AUTO_INCREMENT=1748961482 DEFAULT CHARSET=utf8