Подключение к StarRocks
Данный раздел описывает, как подключиться к StarRocks с помощью MySQL, JDBC и DBeaver.
Параметры подключения
Для подключения к StarRocks требуются следующие параметры.
| Параметр | Описание | Источник в ADH |
|---|---|---|
<fe_host> |
Имя хоста или IP-адрес хотя бы одного из Frontend-узлов (FE) StarRocks. Frontend-узлы являются точкой входа для клиентских подключений |
|
<query_port> |
Порт протокола MySQL на Frontend-узлах, предназначенный для клиентских подключений.
В ADH значение по умолчанию — |
Services → StarRocks → Components → StarRocks FE → fe.conf → query_port |
<user> |
Учетная запись пользователя для аутентификации в StarRocks с соответствующими привилегиями |
Создайте собственного пользователя или используйте служебную учетную запись из Services → StarRocks → Credentials → Service_user |
<password> |
Пароль пользователя |
Создайте собственного пользователя или используйте служебную учетную запись из Services → StarRocks → Credentials → Service_user password |
|
ПРИМЕЧАНИЕ
При создании кластера 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 вашего приложения. Или добавьте его как зависимость в систему сборки, например:
Добавьте зависимость в файл 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 вашего приложения. Или добавьте его как зависимость в систему сборки, например:
Добавьте зависимость в файл 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. В примере устанавливаются два отдельных соединения (для каждого из драйверов) и выполняется одна и та же операция — запрашивается список каталогов.
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) и отображает текущего лидера и статус активности.
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();
}
}
}
-
Запустите приведенный выше код. Вывод выглядит следующим образом:
FE nodes (IP -> Role -> Alive): 192.0.2.253 -> FOLLOWER -> true 192.0.2.171 -> FOLLOWER -> true 192.0.2.106 -> LEADER -> true
-
Чтобы имитировать отказ FE-узла, остановите службу FE на хосте-лидере:
$ sudo systemctl stop starrocks-fe.service -
Запустите код снова. Поскольку один из целевых 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:
-
Запустите DBeaver и нажмите Database → New Database Connection.
-
Выберите StarRocks в окне Connect to a database.
-
Нажмите Next, укажите параметры подключения и нажмите Finish.
Настройка подключения к StarRocks в DBeaver
Настройка подключения к StarRocks в DBeaver -
Если подключение установлено успешно, отобразятся каталоги StarRocks с хранящимися в них данными.
Подключение к StarRocks установлено
Подключение к StarRocks установлено