Облачная платформа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: Вы можете изменить веса вашего DB‑инстанса и реплик чтения после включения Database Proxy.
    • Load balancing: Если выбран, для балансировки нагрузки между репликами чтения запросы чтения автоматически распределяются между несколькими репликами чтения на основе количества активных соединений.

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

    Разрешены чтения на первичном

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

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

    Новый класс инстанса

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

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

    Подсеть

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

    Прокси‑узлы

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

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

    Установить вес чтения

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

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

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

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

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

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

    Вы можете изменить 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, используя этот адрес, чтобы разделять запросы чтения и записи.

    Адрес разделения чтения/записи и плавающий 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 нажмите целевой экземпляр БД, чтобы перейти на страницу 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;

    Рисунок 1 Выполнение операции чтения


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

    show last route;

    Рисунок 2 Результат запроса


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

    Note

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