Od czasu do czasu muszę wprowadzać zmiany w tabelach w mysql 5.1, głównie dodając kolumny. Bardzo proste dzięki poleceniu alter table. Ale moje tabele mają teraz do 40 milionów wierszy i rosną szybko ... Więc te polecenia zmieniające tabelę trwają kilka godzin. Myślę, że za kilka miesięcy potrwają dni.
Ponieważ używam amazon RDS, nie mogę mieć serwerów podrzędnych do gry, a następnie awansować do opanowania. Więc moje pytanie brzmi: czy jest sposób na to przy minimalnym przestoju? Oczywiście nie mam nic przeciwko operacji trwającej kilka godzin, a nawet dni, jeśli użytkownicy nadal mogą korzystać z bazy danych ... Czy mogą przynajmniej czytać podczas dodawania kolumn? Co się stanie, jeśli moja aplikacja spróbuje napisać? Wstawić czy zaktualizować? Jeśli zawiedzie natychmiast, to nie jest tak źle, jeśli po prostu zawiesza się i powoduje problemy z serwerem db, to jest duży problem.
To musi być dość powszechny problem ze skalowaniem, każdy musi dodać kolumny. Co zazwyczaj robi się z produkcyjnym plikiem bazowym? Slave -> migracja master?
Aktualizacja - zapomniałem wspomnieć, że używam silnika pamięci masowej innodb