Как разделить операции CRUD между несколькими серверами MySQL?
Скажем, я создал продукт (мобильное приложение), который обслуживает множество клиентов. Изначально я не задумывался о проблемах соответствия данных и хранил все свои данные на одном сервере. Теперь эти клиенты хотят, чтобы данные соответствовали таким образом, чтобы их данные хранились на разных серверах. Каков наилучший способ отделить эти данные и записать их на разные серверы с минимальными изменениями в приложении, чтобы я соответствовал требованиям своих клиентов и при этом не требовал больших затрат?
Можно ли здесь использовать прокси / балансировщики нагрузки?
Мы можем предположить, что мы получаем Client ID в каждой операции CRUD, на основе которой мы можем написать какое-то правило на прокси-сервере для перенаправления трафика на сервер базы данных, предназначенный для этого клиента. Это будет означать, что перед выполнением операции CRUD над базой данных прокси должен будет проанализировать входящий оператор и соответствующим образом направить его.
По сути, если у меня есть 3 клиента с ID 1, 2 и 3. Я хочу, чтобы операции базы данных были перенаправлены в базу данных A для клиента 1, базу данных B для клиента 2 и базу данных C для клиента 3.
Я думаю, что-то подобное можно сделать с помощью HAProxy, nginx, ProxySQL и т. Д., Но не слишком уверен, будет ли это работать или нет.
Это жизнеспособный вариант в масштабе или иным образом? Если нет, каковы другие варианты, когда изменения в приложении минимальны.
РЕДАКТИРОВАТЬ: Схемы базы данных A, базы данных B и базы данных C абсолютно одинаковы.