Как распределить запросы к MySQL по серверам?
Что значит через одно соединение с бд?
У Вас же надеюсь есть какая то своя обвязка над mysqli функциями?
Можно сделать нехитрую логику - если в запросе присутствуют слова insert/delete/update/replace/... - идем в мастер, иначе в слейв(ы). В скриптах которые реализуют транзакции сразу идем в master принудительно.
В принципе можно это ручками определять в начале каждого контролера(функции контролера) - но мне кажется что гибкий вариант с двумя подключениями в общем случае лучше.
Единственный нюанс который (гипотетически) может быть - если у вас асинхронная репликация, есть шанс что пользователь к примеру пишет комментарий, рефрешит страницу - и не видит его, тк слейв отстает.
Решать это можно по разному, мне кажется что правильнее - на стороне фронтенда.
Попробуйте MySQL Proxy