Исходя из количества таблиц и записей, я бы также рекомендовал переосмыслить ваш подход. Проектирование с учетом горизонтальной масштабируемости заслуживает похвалы, но, учитывая количество данных, вам, вероятно, будет лучше иметь только один сервер БД, оптимизированный для хранения всего набора данных в ОЗУ (плюс еще один узел с репликацией главный-подчиненный для аварийного переключения) и вы сможете идти в ногу с большим количеством трафика.
Кроме этого, основываясь на небольших фактах, которые я знаю о вашем приложении, я бы не рекомендовал разбивать ваши данные на такое количество баз данных и таблиц. Конечно, вы можете кодировать любую логику в своем приложении, чтобы убедиться, что оно знает, где искать вещи, но вы потеряете много возможностей SQL, поскольку вы не сможете комбинировать данные из разных баз данных напрямую, используя чистый SQL.