Есть нагруженная БД на mysql, которую нужно ускорить. Перенос чтения на слейв особо не поможет, так-как преимущественно идет запись. Слейв играет роль резервного сервера и с него снимаются бэкапы. Виртуалка висит на отдельном сетевом интерфейсе, между клиентами и БД локалка 1Гбит. Винт используется только этой одной виртуальной машиной.
Виртуалка представляет из себя следующее: Ubuntu server 18 (крутится на hyper-v), Percona server 5.7, Движок innodb, 50Гб озу, 16 ядер, 800Гб SSD
Размер базы 300гб+бинарные логи. Нагрузка по чуть-чуть будет расти, т.к. увеличивается количество данных.
Собственно вопрос, какие есть варианты уменьшить нагрузку на БД и увеличить время отклика не прибегая к изменению в коде клиентов? Возможно ли руками раскидать файлы нагруженных таблиц mysql по 2-3 SSD дискам в приделах одной виртуалки, а потом создать символьные ссылки в рабочий каталог mysql? Знаю, что изврат, но все же.
1) Пробовал перебросить нагрузку по чтению на слейв используя ProxySQL, по словам разработчиков прироста не получили.
2) Если использовать Percona Cluster (mysql master-master), то все равно нужен будет балансировщик? Либо придется пилить на уровне кода клиентского приложения? Насколько такой вариант стабильный и надежный? (Видел отзывы 2-3 летней давности, что часто падает репликация) Будет ли прирост производительности? Какие подводные камни?
3) Вариант горизонтального шардинга ПОКА был отброшен, т.к. требует изменений в коде приложения, чтоб оно само знало куда что писать и где какие куски таблиц находятся.
Все это непотребство выглядит примерно так https://c.radikal.ru/c12/1903/a7/ab8b6ba64e1e.png