J'ai une grande table avec une colonne VARCHAR (20), et je dois la modifier pour devenir une colonne VARCHAR (50). En règle générale, l'exécution d'une ALTER TABLE (ajout d'un TINYINT) sur cette table particulière prend environ 90 à 120 minutes, donc je ne peux vraiment le faire que le samedi ou le dimanche soir pour éviter d'affecter les utilisateurs de la base de données. Si possible, je voudrais faire cette modification avant cela.
La colonne est également indexée, ce qui, je présume, ralentira ALTER TABLE, car elle doit reconstruire l'index après avoir modifié la longueur de la colonne.
L'application Web est installée dans un environnement de réplication MySQL (26 esclaves et un maître). Je me souviens d'avoir lu quelque part qu'une méthode consiste à exécuter d'abord la ALTER TABLE sur chaque esclave (minimiser l'impact sur les utilisateurs), puis à le faire sur le maître, mais cela n'essaiera-t-il pas alors de répliquer la commande ALTER TABLE sur les esclaves?
Ma question est donc: quelle est la meilleure façon pour moi de modifier ce tableau avec un minimum de perturbations pour mes utilisateurs?
Edit: la table est InnoDB.