Подтвердить что ты не робот

Как масштабировать MySQL с помощью нескольких машин?

У меня есть веб-приложение, работающее с LAMP. Недавно мы увеличили нагрузку и теперь рассматриваем решения для масштабирования. Масштабирование apache довольно просто, мы просто собираемся иметь несколько нескольких компьютеров, на которых он размещен, и объединить входящий трафик.

Однако каждый экземпляр apache будет разговаривать с MySQL, и в конечном итоге MySQL будет перегружен. Как масштабировать MySQL на нескольких компьютерах в этой настройке? Я уже просмотрел этот, но нам нужны обновления из базы данных, доступные сразу, поэтому я не думаю, что репликация - хорошая стратегия здесь? Также, надеюсь, это можно сделать с минимальным изменением кода.

PS. Мы имеем соотношение 1:1 для чтения и записи.

4b9b3361

Ответ 1

Есть только две стратегии: репликация и очертание. Репликация часто возникает, когда у вас меньше записи и много трафика чтения, поэтому вы можете перенаправить чтение на многие подчиненные, с ловушкой большого количества трафика репликации со временем и вероятностью несоответствия.

С помощью sharding вы ошпариваете свои таблицы базы данных на нескольких машинах (называемых функциональными очертаниями), что значительно осложняет объединение. Если этот doenst подходит больше, вам также нужно очертить строки на нескольких машинах, но это не забавно и зависит от слоя сложения, который вы используете между вашим приложением и базой данных.

Документированные базы данных или хранилища столбцов делают эту работу для вас, но в настоящее время они оптимизированы для OLAP, а не для OLTP.

Ответ 4

Зависит от бэкэнда приложения (т.е. как обрабатываются ПК, транзакции и вставки ID), вы можете рассмотреть репликацию MASTER-MASTER с различными настройками auto_increment. Это может быть сложным и нуждается в тщательном тестировании, но оно может работать.

Кроме того, в новом MySQL 5.6 есть GTID (Global Transaction Identifier), который обычно помогает в синхронизации репликации, особенно в этом сценарии.

Ответ 5

Ну... удачи, масштабируя все эти записи в реальном масштабе. Механизм базы данных становится узким местом, слишком много замков и буферов mgmt и прочее...

Единственный способ, который я нашел, который действительно работает, - это масштабирование, очертание, к сожалению, для MySQL не предусмотрено оштрафование (как в некоторых NoSQL, таких как Mongo). ScaleBase (отказ от ответственности: я там работаю), если вам нравится, является разработчиком полного масштабируемого решения. ScaleBae анализирует ваши данные и поток SQL, разбивает данные по узлам базы данных, команды маршрутов и агрегирует результаты во время выполнения - поэтому вам не придется!