Подключение к StarRocks

Данный раздел описывает, как подключиться к StarRocks с помощью MySQL, JDBC и DBeaver.

Параметры подключения

Для подключения к StarRocks требуются следующие параметры.

Параметр Описание Источник в ADH

<fe_host>

Имя хоста или IP-адрес хотя бы одного из Frontend-узлов (FE) StarRocks. Frontend-узлы являются точкой входа для клиентских подключений

  • Узнать, по каким хостам распределены компоненты StarRocks, можно на вкладке Mapping в ADCM.

  • Получить адреса для JDBC и веб-интерфейса StarRocks можно на странице Services → StarRocks → Info.

<query_port>

Порт протокола MySQL на Frontend-узлах, предназначенный для клиентских подключений. В ADH значение по умолчанию — 19030

Services → StarRocks → Components → StarRocks FE → fe.conf → query_port

<user>

Учетная запись пользователя для аутентификации в StarRocks с соответствующими привилегиями

Создайте собственного пользователя или используйте служебную учетную запись из Services → StarRocks → Credentials → Service_user

<password>

Пароль пользователя

Создайте собственного пользователя или используйте служебную учетную запись из Services → StarRocks → Credentials → Service_user password

ПРИМЕЧАНИЕ

При создании кластера StarRocks пользователь root инициализируется с пустым паролем. ADH не управляет паролем пользователя root. Рекомендуется установить пароль пользователя root вручную, как описано в документации StarRocks.

Консольный клиент MySQL

Для подключения к StarRocks можно использовать mysql — стандартный консольный клиент для MySQL. При установке StarRocks ADH также устанавливает как зависимость пакет клиента MySQL или MariaDB (в зависимости от ОС) — каждый из них позволяет подключаться через mysql.

Базовый синтаксис:

mysql -h <fe_host> -P <query_port> -u <user> -p<password>

Пример:

mysql -h 192.0.2.123 -P 19030 -u joe -p123

StarRocks не создает локальный UNIX-сокет, поэтому даже при локальном подключении необходимо явно указывать адрес хоста (например, 127.0.0.1) или передавать опцию --protocol=TCP.

После подключения отобразится стандартное приглашение mysql>:

mysql>

В качестве примера запроса можно выполнить следующую команду:

SELECT current_version();

Вывод показывает текущую версию StarRocks:

+--------------------------+
| current_version()        |
+--------------------------+
| 4.0.10.1-4.4.0-0-1a3b13d |
+--------------------------+
1 row in set (0.01 sec)

JDBC-драйверы

StarRocks использует протокол MySQL wire, поэтому к нему можно подключаться с помощью JDBC-драйвера MySQL. Кроме того, у StarRocks есть собственный JDBC-драйвер, который рекомендуется использовать для взаимодействия со StarRocks.

РЕКОМЕНДАЦИЯ
Фактические адреса для JDBC-подключения зависят от конфигурации вашего кластера и от того, включен ли SSL. Для конкретных FE-узлов StarRocks адреса подключения отображаются в ADCM: Clusters → Services → StarRocks → Info. На этой же странице показан URL с поддержкой отказоустойчивости.

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

Получение JDBC-драйвера MySQL

Скачайте JDBC-драйвер MySQL с Maven Central и добавьте его в classpath вашего приложения. Или добавьте его как зависимость в систему сборки, например:

  • Maven

  • Gradle (Kotlin)

  • Gradle (Groovy)

Добавьте зависимость в файл pom.xml:

<dependency>
    <groupId>com.mysql</groupId>
    <artifactId>mysql-connector-j</artifactId>
    <version>8.0.33</version>
</dependency>

Добавьте зависимость в файл build.gradle.kts:

dependencies {
    implementation("com.mysql:mysql-connector-j:8.0.33")
}

Добавьте зависимость в файл build.gradle:

dependencies {
    implementation 'com.mysql:mysql-connector-j:8.0.33'
}

Получение JDBC-драйвера StarRocks

Скачайте JDBC-драйвер StarRocks с Maven Central и добавьте его в classpath вашего приложения. Или добавьте его как зависимость в систему сборки, например:

  • Maven

  • Gradle (Kotlin)

  • Gradle (Groovy)

Добавьте зависимость в файл pom.xml:

<dependency>
    <groupId>com.starrocks</groupId>
    <artifactId>starrocks-connector-j</artifactId>
    <version>1.1.2</version>
</dependency>

Добавьте зависимость в файл build.gradle.kts:

dependencies {
    implementation("com.starrocks:starrocks-connector-j:1.1.2")
}

Добавьте зависимость в файл build.gradle:

dependencies {
    implementation 'com.starrocks:starrocks-connector-j:1.1.2'
}

Пример использования JDBC

Ниже приведен пример использования JDBC-драйверов для подключения к StarRocks. В примере устанавливаются два отдельных соединения (для каждого из драйверов) и выполняется одна и та же операция — запрашивается список каталогов.

Пример использования JDBC
import java.sql.*;

public class StarRocksDrivers {
    public static void main(String[] args) {
        String host = "192.0.2.171";
        int port = 19030;
        String user = "joe";
        String password = "123";

        String[] urls = {
                String.format("jdbc:mysql://%s:%d", host, port),
                String.format("jdbc:starrocks://%s:%d", host, port)
        };

        for (String url : urls) {
            try (Connection conn = DriverManager.getConnection(url, user, password)) {

                System.out.println(System.lineSeparator() + "Driver: " + conn.getMetaData().getDriverName());
                try (ResultSet rs = conn.getMetaData().getCatalogs()) {
                    System.out.println("Catalogs:");
                    while (rs.next()) System.out.println("  - " + rs.getString(1));
                }
            } catch (Exception e) {
                System.out.println("Error: " + e.getMessage());
            }
        }
    }
}

Результат показывает одно из различий JDBC-драйверов, а именно реализацию получения списка каталогов (getCatalogs). В StarRocks есть собственное понятие каталогов, и его драйвер запрашивает именно их список. В этом примере он возвращает внутренний каталог default_catalog. В отличие от драйвера StarRocks, JDBC-драйвер MySQL возвращает список баз данных (доступных подключающемуся пользователю):

Driver: MySQL Connector/J
Catalogs:
  - information_schema
  - test_db

Driver: StarRocks Connector/J
Catalogs:
  - default_catalog

Высокая доступность с использованием URL-адреса с несколькими хостами

Оба JDBC-драйвера можно настроить на работу со списком адресов, чтобы клиент мог продолжать работу даже в случае недоступности одного из FE-узлов. В URL-строке подключения передайте список хостов, разделенных запятыми (failover URL): если первый хост недоступен, драйвер попытается подключиться к следующему в списке.

Код ниже получает информацию обо всех FE-узлах (с помощью SHOW FRONTENDS) и отображает текущего лидера и статус активности.

Пример использования failover URL
import java.sql.*;

public class StarRocksHAExample {

    public static void main(String[] args) {
        String hosts = "192.0.2.106:19030,192.0.2.171:19030,192.0.2.253:19030";
        String user = "joe";
        String password = "123";
        String url = String.format("jdbc:starrocks://%s", hosts);

        try (Connection conn = DriverManager.getConnection(url, user, password);
             Statement stmt = conn.createStatement()) {

            try (ResultSet rs = stmt.executeQuery("SHOW FRONTENDS")) {
                System.out.println("FE nodes (IP -> Role -> Alive):");
                while (rs.next()) {
                    System.out.printf("%s -> %s -> %s%n",
                            rs.getString("IP"),
                            rs.getString("Role"),
                            rs.getString("Alive"));
                }
            }

        } catch (SQLException e) {
            e.printStackTrace();
        }
    }
}
  1. Запустите приведенный выше код. Вывод выглядит следующим образом:

    FE nodes (IP -> Role -> Alive):
    192.0.2.253 -> FOLLOWER -> true
    192.0.2.171 -> FOLLOWER -> true
    192.0.2.106 -> LEADER -> true
  2. Чтобы имитировать отказ FE-узла, остановите службу FE на хосте-лидере:

    $ sudo systemctl stop starrocks-fe.service
  3. Запустите код снова. Поскольку один из целевых URL-адресов недоступен, драйвер подключается к другому хосту из URL-строки подключения и успешно выполняет запрос. Вывод показывает, что предыдущий лидер недоступен (Alive=false) и что другой узел был выбран лидером:

    FE nodes (IP -> Role -> Alive):
    192.0.2.253 -> FOLLOWER -> true
    192.0.2.171 -> LEADER -> true
    192.0.2.106 -> FOLLOWER -> false

DBeaver

Для подключения к StarRocks также можно использовать DBeaver — инструмент с открытым исходным кодом для работы с базами данных. По умолчанию он использует JDBC-драйвер StarRocks, который будет скачан автоматически, если он еще не установлен.

Чтобы подключиться к StarRocks:

  1. Запустите DBeaver и нажмите Database → New Database Connection.

  2. Выберите StarRocks в окне Connect to a database.

  3. Нажмите Next, укажите параметры подключения и нажмите Finish.

    Настройка подключения к StarRocks в DBeaver
    Настройка подключения к StarRocks в DBeaver
    Настройка подключения к StarRocks в DBeaver
    Настройка подключения к StarRocks в DBeaver
  4. Если подключение установлено успешно, отобразятся каталоги StarRocks с хранящимися в них данными.

    Подключение к StarRocks установлено
    Подключение к StarRocks установлено
    Подключение к StarRocks установлено
    Подключение к StarRocks установлено
Нашли ошибку? Выделите текст и нажмите Ctrl+Enter чтобы сообщить о ней