For those using MySQL: https://www.percona.com/doc/percona-toolkit/2.2/pt-online-sc...
I think generally mysql shops that use pt-online-schema-change don't create foreign key constraints in production, sidestepping the whole problem this article is about.