Growing up with MySQL: How we scaled our primary datastore
nylas.com
nylas.com
As this is a mail app, and users doesn't need to read each others private messages. I would put say 100 users per (virtual) server and also store the data there. And have a simple traffic router.
1) Do you have to update the ProxySQL configuration on your application servers when you do a slave promotion or is that handled automatically?
2) I didn't fully understand how you know which database host has a shard (i.e. shard 22). Is that also part of your ProxySQL configuration?
2) There's a different configuration for mapping which database hosts exist on which shard. Our system currently has multiple database shards per machine, and that's stored in a configuration that our automation will update when new machines/shards go into production.