Я как раз перед тобой задал этот вопрос, только не так развернуто.
Мне нравится вариант 3 тем что здесь единая база. Ну и если она в облаке например AWS Aurora то ты следишь за бесперебойной работой только но AWS все делает за тебя. Она делает копии, при обнаружении пролем сам их решает причем моментально, распределяет нагрузку по разным зонам а так же дублирует по зонам, создает репилики и т.д. Все что нужно тебе вовремя добавить дополнительных ресурсов как память, процесорная сила и т.д. Так же нужно следить за запросами, вовремя выявлять проблемыне и оптимизировать или код или базу.
Но вот что меня беспокоит. Гипотетически, если ты потеряешь базу то ты птеряешь данные всех клиентов сразу. Тоесть бизнесу хана. Если база встанет, то все клиенты встанут вместе сней а в бизнесе продаж, даже 5 минут могут быть критичными. Еще одной проблемой может быть будующие. Предположим вы хотите что бы другие могли создовать расширения и эти расширения устанавливать свои табилцы. Одна база может вырости очень сильно. Короче сторонние разработчики это проблема. Они могут сделать код без учета идентификатора клиента и получить напимер все записи из таблици. Уезвимости в коде который писали не вы.
Поэтому я склоняюсь к методу 1. Но тут свои недостатки.