web-dev-qa-db-fra.com

Changer de type de données de MIXIMINT-INT sans temps d'arrêt

Ma table actuelle utilise MEDIUMINT pour la colonne ID 'Touche primaire Auto incrément'. Les enregistrements de table actuels atteindront bientôt la valeur maximale pour mediumint qui est 8388607. Cela étant le cas, je dois modifier le type à int ou le modifier à unsigned sans tout temps d'arrêt.

Ma configuration est Master-esclave MySQL 5.6 sur Amazon RDS. J'ai un maître et 4 esclaves.

  • J'ai essayé de changer le type de colonne sur INT sur esclave, mais il enfreint la réplication.
  • Les enregistrements changent, car il n'est pas possible de copier la table à une autre table.
  • Je ne peux pas utiliser pt-table-sync sur Amazon RDS pour synchroniser une autre table, puis faire les changements sur la nouvelle table.

Y a-t-il un moyen de passer à int sans verrouillage de la table?

Mise à jour : Je ne suis pas sûr que l'attribut est signé ou non signé. Je ne suis pas capable de trouver où il a signé ou non. Je cours show columns from table Et voici le résultat:

+----------------+--------------+------+-----+---------+----------------+
| Field          | Type         | Null | Key | Default | Extra          |
+----------------+--------------+------+-----+---------+----------------+
|     id         | mediumint(8) | NO   | PRI | NULL    | auto_increment |
2
usef_ksa

Alors que Rolando a mon vote, car il a raison dans votre cas, je souhaite répondre à votre question initiale (pour vous à l'avenir et pour les autres) concernant Percona Toolkit:

pt-table-sync n'est pas ce que vous voulez. Pensez à (pt-online-schema-change . Bien qu'il y ait des coins durs, , cela fonctionne sur RDS avec la bonne configuration ou des modifications minimales sur le script. pt-table-sync va également résoudre les problèmes avec RDS dans la prochaine version . Il existe d'autres alternatives pour les changements de schéma en ligne, Oak-Toolkit et Facebook.

À titre d'alternative, vous avez besoin d'un esclave de rechange pouvant subir le retard du temps que le ALTER est en cours d'exécution, puis effectuez une commutation contrôlée.

5
jynus