Ways to Upgrade Production MySQL db server from 5.5.42 to 5.7.13 with zero downtime Our product is an enterprise application with MySQL Enterprise version 5.5.42 deployed in many customer datacenters. We're planning to migrate the MySQL db (bundled with our product) to version 5.7.13. So, when our customers upgrade from X version of product to Y version of our product, we need to upgrade their MySQL 5.5.42 to 5.7.13. Customers would hate to have downtime on this important software.

It appears that we need to migrate first to 5.6 and then to 5.7.

Some questions regarding the upgrade:


Is there a way to have zero downtime without requiring duplicate hardware?
Are there ways to reduce the downtime to a minimum ? If yes, what additional storage requirements will this add?


What else should I know?
1) No. You have to restart MySQL and that means downtime. 

2) To minimize the downtime you need an identical server which you can switch to and back. The procedure on high level:


you can build a passive master using percona-xtrabackup for example without downtime
Set up master-master replication
Upgrade the passive master to 5.6 and wait for it to catch up in replication
Switch active master to be the upgraded one (running 5.6)
Stop and rebuild the old master with the same process you did in step #1 but now from the new version (5.6)
Repeat the procedure to upgrade for 5.7
If you don't need it trash the passive master