Облачная платформаAdvanced

Включение Database Proxy для Read/Write Splitting

Язык статьи: Русский
Показать оригинал
Страница переведена автоматически и может содержать неточности. Рекомендуем сверяться с английской версией.

Вы можете включить Database Proxy для ваших RDS for MySQL инстансов, чтобы запросы на чтение и запись автоматически перенаправлялись через proxy address. Чтобы снизить нагрузку на чтение основного инстанса, запросы на запись перенаправляются на основной инстанс, а запросы на чтение — на read replicas в соответствии с routing policy Database Proxy.

В этом разделе описывается, как использовать database proxy для реализации разделения чтения/записи. Процесс выглядит следующим образом:

Предостережения

Имейте в виду следующие замечания по database proxies:

  • Экземпляр RDS for MySQL был приобретён.
  • Основной инстанс и его read replicas находятся в состоянии Available.
  • Вы ознакомились с регионами и версиями, поддерживающими database proxy. Подробности см. в Constraints on Database Proxy.

Step 1: Enable Database Proxy

  1. Войдите в консоль управления.
  2. Click в верхнем левом углу и выберите регион и проект.
  3. Click в верхнем левом углу страницы и выберите Database > Relational Database Service.
  4. В списке инстансов нажмите имя целевого инстанса, чтобы перейти на страницу Basic Information.
  5. В панели навигации слева выберите Database Proxy.
  6. На отображаемой странице нажмите Create Database Proxy.
  7. На отображаемой странице задайте необходимые параметры и нажмите Next.

    Table 1 Описание параметра

    Parameter

    Description

    Proxy Name

    Имя прокси должно начинаться с буквы и состоять из 4 до 64 символов. Допускаются только буквы (с учётом регистра), цифры, дефисы (-) и подчёркивания (_).

    Role

    • Read and write: Запросы на чтение и запись разделяются.
    • Read only: Прокси не подключён к вашему основному инстансу и не может принимать запросы на запись.

    Routing Policy

    • Weighted: Вы можете изменить веса вашего DB instance и read replicas после включения Database Proxy.
    • Load balancing: Если выбран, для балансировки нагрузки между read replicas запросы чтения автоматически распределяются между несколькими read replicas на основе количества активных соединений.

    Вы можете изменить политику маршрутизации после создания database proxy. Для получения подробной информации см. Configuring the Delay Threshold and Routing Policy.

    Разрешены чтения на Primary

    Этот параметр доступен только при выборе Load balancing.

    • Yes: Запросы чтения могут быть направлены как к primary instance, так и к read replicas, что увеличивает нагрузку на primary instance. Настройте этот параметр по требованию.
    • No: Запросы чтения направляются только к read replicas, чтобы снять нагрузку чтения с primary instance.

    Новый Instance Class

    Выберите спецификации для proxy instance в соответствии с требованиями сервиса. Вы можете изменить спецификации после создания proxy instance. Для получения подробной информации см. Changing the Instance Class of a Proxy Instance.

    Для получения подробной информации о метриках производительности см. Table 2.

    Подсеть

    Выберите подсеть, в которой находится proxy.

    Proxy Nodes

    Введите целое число от 2 до 8. Вы можете изменить узлы после создания proxy instance. Для получения подробной информации см. Changing the Number of Proxy Nodes.

    Рекомендуется установить количество proxy nodes, равное количеству read replicas, по одному proxy node на одну read replica.

    Set Read Weight

    Этот параметр доступен только если Weighted выбран. Выберите основной инстанс и реплики чтения, которым вы хотите назначить веса.

    Правила настройки весов чтения

    • Запросы чтения распределяются пропорционально настроенному весу чтения. Например, если вы связываете две реплики чтения с прокси и задаёте их весы чтения 100 и 200, все запросы чтения, перенаправляемые к прокси, автоматически маршрутизируются к репликам чтения в соотношении 1:2 (весы чтения для невыбранных инстансов равны 0).
    • Одна реплика чтения может быть связана более чем с одним прокси. Чтобы сбалансировать трафик между репликами чтения вашего основного инстанса, задайте им веса чтения, исходя из весов существующих прокси и объёма трафика, направляемого к репликам чтения.
    • Вы можете задать веса чтения, распределённые между репликами чтения и основным DB‑инстансом после включения Database Proxy. Подробности см. в Configuring the Delay Threshold and Routing Policy.

    Select DB Instances for Load Balancing

    Этот параметр доступен только когда Load balancing выбран. Выберите DB‑инстансы для балансировки нагрузки.

    После выбора Load balancing прокси перенаправляет запросы чтения к узлам базы данных с меньшим количеством активных соединений.

    Вы можете изменить DB‑инстансы для балансировки нагрузки после включения Database Proxy. Подробности см. в Configuring the Delay Threshold and Routing Policy.

  8. Подтвердите конфигурацию database proxy.

    • Чтобы изменить конфигурацию, нажмите Previous.
    • Чтобы отправить запрос, нажмите Submit.

  9. Просмотр и управление прокси на странице Database Proxy.

    Вы можете просмотреть адрес разделения чтения/записи на странице Basic Information. Подключите приложение к DB‑инстансу, используя этот адрес, для разделения запросов чтения и записи.

    Адрес разделения чтения/записи и плавающий IP-адрес DB instance находятся в одном VPC и подсети и являются независимыми друг от друга.

Шаг 2: Предоставить разрешения доступа

Прежде чем использовать прокси базы данных для подключения к экземпляру RDS for MySQL, убедитесь, что текущая учетная запись базы данных имеет разрешение на доступ к адресу прокси.

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

  1. Подключитесь к вашему экземпляру RDS, используя Instance Connection.
  2. Проверьте, содержит ли host вашей учет записи адрес прокси базы данных.

    SELECT user,host FROM mysql.user;

    Если адрес — %, host содержит все CIDR‑блоки.

  3. Если host не содержит CIDR‑блок, в котором расположен прокси базы данных, предоставьте учетной записи разрешение удаленного доступа.

    Например, если вы хотите подключиться к экземпляру RDS for MySQL из диапазона IP‑адресов, начинающегося с 192.168.0, используя пользователя root, вы можете установить host учетной записи в значение 192.168.% на странице управления пользователями Data Admin Service (DAS).

Шаг 3: Проверить правила группы безопасности

Убедитесь, что входящие и исходящие правила позволяют доступ к адресу разделения чтения/записи. Порт по умолчанию — 3306.

  1. На странице Instances нажмите целевой DB instance, чтобы перейти на страницу Basic Information.
  2. В панели навигации выберите Connectivity & Security. В области Security Group Rules нажмите название группы безопасности, чтобы просмотреть правила группы безопасности.
  3. На странице вкладки Inbound Rules разрешите доступ через порт 3306.

    Если такого правила нет, нажмите Add Rule, чтобы добавить его.

Шаг 4: Используйте адрес разделения чтения/записи для подключения к RDS for MySQL Instance

  1. Получите адрес разделения чтения/записи и порт, обратившись к 9.
  2. Войдите в ECS.

    Для получения подробной информации см. раздел "ECS Login" в Elastic Cloud Server User Guide.

  3. Выполните следующую команду для подключения к RDS for MySQL instance через адрес разделения чтения/записи:

    mysql -h <hostIP> -P <port> -u <userName> -p

    Пример:

    mysql -h 192.168.0.61 -P 3306 -u root -p

    Введите пароль учетной записи базы данных, если отображается следующая информация:

    Enter password:

    Table 2 Описание параметра

    Параметр

    Описание

    <hostIP>

    Адрес разделения чтения/записи, полученный в 1.

    <port>

    Порт базы данных, полученный в 1.

    <userName>

    Имя пользователя учетной записи администратора базы данных. Имя пользователя по умолчанию — root.

    Note

    При использовании клиента MySQL 8.0 для доступа к прокси базы данных может отображаться ошибка "auth user failed".

    Добавьте --default-auth=mysql_native_password при подключении к базе данных.

Шаг 5: Проверьте разделение чтения/записи

Вы можете выполнить команду show last route, чтобы проверить результат маршрутизации после выполнения операции чтения.

Следующий пример использует операцию чтения для описания того, как проверить результат маршрутизации запросов чтения.

  1. После подключения к вашему экземпляру RDS for MySQL выполните операцию чтения.

    Пример:

    select 1;

    Figure 1 Выполнение операции чтения


  2. Выполните следующую команду, чтобы проверить результат маршрутизации операции чтения в 1:

    show last route;

    Figure 2 Результат запроса


    IP-адрес в выводе команды является IP-адресом узла, к которому направлена операция чтения. Операции чтения направляются на основной узел или реплики чтения в соответствии с указанной routing policy.

    Note

    Не включайте show last route в код сервиса или многострочные запросы.