| Some general points (I'll use MySQL 5.7 as an example): - all major databases, including MySQL, have an equivalent to ALTER ONLINE now. However, not all operations are covered, and you need to develop pre-tested procedures for small and large tables. If you can't predict how long an ALTER will take, then you're not prepared enough. (Typically under 400k narrow rows on SSD you don't even need ALTER ONLINE at ebb time.) https://dev.mysql.com/doc/refman/5.7/en/innodb-online-ddl-op... - there's lots of trigger-based tools, like pt-online-schema-change https://www.percona.com/doc/percona-toolkit/3.0/pt-online-sc... - using local SSD helps a lot. using EBS will be ugly for large tables. active master/passive master flipping might be helpful for hard disks. - for large tables, you still want to make changes at ebb time. In the US, that's generally around 6 or 7 pm PST. - experienced DBAs keep things simple and understandable. So the "evolutionary database design" and "failing forward" are recommended. - data retention policies (say 18 months) help with mgmt. - using tools like Ruby migrations is a special thing, so you need to look under the hood there. Pro Tip: Phrases like "Extracting the DB repository to an external versionable service" give DBAs the willies. Sounds like a dangerous path to me. Source: DBA. |