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

Включение Database Proxy для разделения чтения/записи

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

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

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

Меры предосторожности

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

  • Перед включением Database Proxy оба — основной инстанс и read replicas — должны находиться в состоянии Available.
  • Вы ознакомились с регионами и версиями, поддерживающими Database Proxy. Подробности см. в Constraints on Database Proxy.

Шаг 1: Включить Database Proxy

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

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

    Параметр

    Описание

    Имя прокси

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

    Роль

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

    Политика маршрутизации

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

    Вы можете изменить политику маршрутизации после создания прокси базы данных. Подробнее см. Configuring the Delay Threshold and Routing Policy.

    Reads Allowed on Primary

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

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

    New Instance Class

    Выберите спецификации для прокси‑инстанса в соответствии с требованиями сервиса. Вы можете изменить спецификации после создания прокси‑инстанса. Подробнее см. Changing the Instance Class of a Proxy Instance.

    Подробнее о метриках производительности см. Table 2.

    Subnet

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

    Proxy Nodes

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

    Рекомендуется установить количество прокси‑узлов, равное количеству реплик чтения, по одному прокси‑узлу на одну реплику чтения.

    Set Read Weight

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

    Правила настройки read weights

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

    Выберите DB Instances для Load Balancing

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

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

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

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

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

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

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

    Адрес разделения чтения/записи и floating IP address 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, чтобы перейти на страницу Basic Information.
  2. В панели навигации выберите Connectivity & Security. В области Security Group Rules нажмите название группы безопасности, чтобы просмотреть её правила.
  3. На странице вкладки Inbound Rules разрешите доступ через порт 3306.

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

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

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

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

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

    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 в код сервиса или запросы с несколькими операторами.