Ich muss regelmäßig Änderungen an Tabellen in MySQL 5.1 vornehmen, hauptsächlich durch Hinzufügen von Spalten. Sehr einfach mit dem Befehl alter table. Aber meine Tabellen haben jetzt bis zu 40 Millionen Zeilen und sie wachsen schnell ... Also dauern diese Befehle zum Ändern von Tabellen mehrere Stunden. In ein paar Monaten werden sie vermutlich Tage brauchen.
Da ich amazon RDS verwende, kann ich nicht mit Slave-Servern spielen und dann zum Master befördern. Meine Frage ist also, ob es eine Möglichkeit gibt, dies mit minimalen Ausfallzeiten zu tun. Es macht mir nichts aus, dass eine Operation Stunden oder sogar Tage dauert, wenn Benutzer die Datenbank natürlich weiterhin verwenden können ... Können sie zumindest lesen, während Spalten hinzugefügt werden? Was passiert, wenn meine App versucht zu schreiben? Einfügen oder aktualisieren? Wenn es sofort ausfällt, ist das eigentlich nicht so schlimm. Wenn es nur hängt und Probleme für den Datenbankserver verursacht, ist das ein großes Problem.
Dies muss ein recht häufiges Problem bei der Skalierung sein. Jeder muss Spalten hinzufügen. Was wird normalerweise in einer Produktionsdatenbank getan? Slave -> Master Migration?
Update - Ich habe vergessen zu erwähnen, dass ich die innodb-Speicherengine verwende