Назад | Перейти на главную страницу

Как использовать экземпляр реплики чтения для веб-сайтов? Amazon RDS MySQL

В разделе часто задаваемых вопросов по Amazon RDS указано, что мое приложение предназначено для распределения трафика на реплику чтения.

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

Мой единственный экземпляр RDS, на котором работают несколько веб-сайтов, просто оказался узким местом, поэтому я немного паникую и не знаю, с чего начать прямо сейчас.

Если направление, в котором я иду, неправильное, пожалуйста, укажите мне правильный путь, тогда

Вы можете использовать маршрут 53 для распределения трафика между репликами для чтения. Обычно вы создаете доменное имя в своем vpc и настраиваете маршрут 53 для пересылки запросов в этот домен на N реплик, которые вы размещаете за ним. По ссылке ниже есть видео-пошаговое руководство по настройке процесса. Настройка занимает всего несколько секунд.

https://aws.amazon.com/premiumsupport/knowledge-center/requests-rds-read-replicas/

Затем используйте доменное имя маршрута 53 в URL-адресах подключения к базе данных.

Все зависит от того, что представляют собой ваши приложения и как они подключаются к базе данных и выполняют свои запросы.

Большинство приложений, которые я видел, настраивают два пула / строки подключения к базе данных. Один для чтения, другой для записи, и код приложения направляет запросы в тот пул, который соответствует запросу. Большинство приложений не пишутся так до тех пор, пока им не понадобится аварийное переключение, поэтому, вероятно, потребуется некоторое кодирование.

Вы могли бы использовать mysql-прокси для фильтрации определенных запросов в серверную часть только для чтения.

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

Multi-AZ! = Реплики чтения, разные вещи. MultiAZ создает «невидимый» резерв, который используется только во время аварийного переключения / обслуживания, т.е. = ДОСТУПНОСТЬ. Реплики чтения предназначены исключительно для нагрузки / производительности.

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

Но что касается проблемы с загрузкой, я думаю, вам следует включить (что, я полагаю, вы уже сделали) репликацию в нескольких зонах доступности в RDS.

Это создаст реплики чтения, а также будет использоваться для аварийного переключения и резервирования.

Кроме того, если ваш трафик по-прежнему страдает, вам следует подумать об использовании Provisioned-IOPS. Это очень сильно увеличит эффективность и производительность вашей БД.