16.3.4 Использование репликации для масштабирования
Вы можете использовать репликацию как решение для масштабирования; то есть, для распределения нагрузки баз данных по нескольким серверам баз данных в разумных пределах.
Поскольку репликация работает от распределения одного источника к одному или нескольким репликам, использование репликации для масштабирования лучше всего подходит в среде с большим количеством чтений и малым количеством записей/обновлений. Большинство веб-сайтов подпадают под эту категорию, где пользователи просматривают веб-сайт, читают статьи, посты или просматривают продукты. Обновления происходят только во время управления сеансами или при совершении покупки или добавлении комментария/сообщения на форуме.
Репликация в этой ситуации позволяет распределить чтение по репликам, при этом позволяя веб-серверам взаимодействовать с источником при необходимости записи. Вы можете увидеть пример макета репликации для этой ситуации на рисунке 16.1 «Использование репликации для повышения производительности при масштабировании».
Рисунок 16.1 Использование репликации для повышения производительности при масштабировании
Если часть вашего кода, отвечающая за доступ к базе данных, была должным образом абстрагирована/модулизирована, её конвертация для работы с реплицированной установкой должна быть очень гладкой и лёгкой. Измените реализацию доступа к базе данных, чтобы отправлять все записи в источник, а чтения — в источник или реплику. Если ваш код не имеет такого уровня абстракции, создание реплицированной системы даёт вам возможность и мотивацию для её улучшения. Начните с создания библиотеки или модуля-оболочки, который реализует следующие функции:
safe_writer_connect()safe_reader_connect()safe_reader_statement()safe_writer_statement()
safe_ в каждом имени функции означает, что функция обрабатывает все условия ошибок. Вы можете использовать разные названия функций. Важно иметь унифицированный интерфейс для подключения для чтения, подключения для записи, выполнения чтения и выполнения записи.
Затем преобразуйте свой клиентский код для использования библиотеки-оболочки. Вначале это может быть болезненный и пугающий процесс, но он окупится в долгосрочной перспективе. Все приложения, использующие описанный подход, могут воспользоваться настройкой источник/реплика, даже той, которая включает несколько реплик. Код намного проще поддерживать, и добавление опций отладки тривиально. Вам нужно изменить только одну или две функции (например, для регистрации того, сколько времени заняла каждая команда, или какой из выданных запросов дал ошибку).
Если вы написали много кода, вы можете автоматизировать задачу преобразования, используя утилиту replace, которая поставляется со стандартными дистрибутивами MySQL, или написать свой собственный скрипт преобразования. В идеале ваш код использует соглашения о стиле программирования. Если нет, то вам, вероятно, лучше переписать его или хотя бы пройтись и вручную привести его к единообразному стилю.
© 2025 Oracle
Licensed under the GPLv2 License.