#database #clickhouse
#База данных #clickhouse
Вопрос:
Недавно мне пришлось добавить clickhouse в наш технологический стек, но, к сожалению, я не нашел хороших, простых и быстрых руководств для своих нужд, и после некоторых проб и ошибок мне удалось сделать это самостоятельно. Чтобы помочь другим, я решил поделиться своим опытом.
Итак, как развернуть и настроить удаленный экземпляр ClickHouse DB с помощью docker?
Ответ №1:
Настройка ClickHouse
Это руководство по настройке для развертывания ClickHouse с помощью docker на удаленных серверах.
Установка
В вашей удаленной системе должен быть предварительно установлен docker.
Сервер
Выполните следующую команду:
$ docker run -d --name some-clickhouse-server -p 8123:8123 --ulimit nofile=262144:262144 --volume=$HOME/some_clickhouse_database:/var/lib/clickhouse yandex/clickhouse-server
Сервер ClickHouse использует порт 8123 в качестве порта по умолчанию, но вы можете использовать любой другой открытый порт, но не забудьте предоставить порт для внешней сети. Сервер поставляется с пользователями по умолчанию без пароля.
Клиент
Выполните следующую команду на сервере, чтобы подключиться к серверу clickhouse с пользователем по умолчанию.
$ docker run -it --rm --link some-clickhouse-server:clickhouse-server yandex/clickhouse-client --host clickhouse-server
Конфигурация
Откройте контейнер docker сервера clickhouse
$ docker exec -it some-clickhouse-server bash
1. Включите управление доступом и учетными записями на основе SQL для default
пользователя.
В контейнере docker сервера clickhouse:
$ cd etc/clickhouse-server
Прокомментируйте следующую строку в user.xml файл для включения контроля доступа:
<access_management>1</access_management>
Обратите внимание, что эта операция небезопасна, и после завершения работы вам следует изменить управление доступом на :
<access_management>0</access_management>
2. Прослушивание других сетей:
В etc/clickhouse-server/config.xml
комментарии, <listen_host>::</listen_host>
чтобы разрешить удаленные подключения. Вы должны увидеть, что порт открыт в системной сети:
root@myvm:~# lsof -i :8123
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
docker-pr 1141768 root 4u IPv6 53989091 0t0 TCP *:8123 (LISTEN)
Создание базы данных с пользователями
В этой части мы создаем простую базу данных и пользователей. Затем мы предоставляем этому пользователю права доступа к базе данных.
Существует два типа синхронизации, и они могут дополнять друг друга:
1. Создание пользователя
CREATE USER IF NOT EXISTS user1 IDENTIFIED WITH PLAINTEXT_PASSWORD BY 'pass1'
Вы можете проверить пользователей с SHOW USERS
помощью команды.
2. Создание базы данных
CREATE DATABASE IF NOT EXISTS db1
Вы можете проверить базы данных с помощью этой SHOW DATABASES
команды.
3. Предоставьте пользователю права доступа к базе данных
Вы можете предоставить пользователям ограниченные или все привилегии.
GRANT ALL PRIVILEGES ON db1.* TO user1
4. Подключитесь к базе данных вместе с новыми пользователями
Теперь мы можем подключиться к серверу с помощью созданной учетной записи.
$ docker run -it --rm --link some-clickhouse-server:clickhouse-server yandex/clickhouse-client --host clickhouse-server -u user1 --password pass1
Убедитесь, что у пользователей есть все разрешения и есть доступ к базам данных:
:) SHOW GRANTS
:) SHOW DATABASES
Создание примерной таблицы
Clickhouse поддерживает SQL .
Чтобы создать таблицу:
:) USE db1
:) CREATE TABLE names (
id UInt64,
name String,
created DateTime
) ENGINE = MergeTree()
PRIMARY KEY id
ORDER BY id;
:) SHOW TABLES
Вот оно. Вы можете подключаться к базам данных из других сетей с помощью clickhouse-client и вашего пользователя / пароля.
Ответ №2:
Пожалуйста, клонируйте этот проект и следуйте инструкциям согласно README.md досье. После запуска docker compose у вас будет 2 фрагмента и 2 реплики clickhouse.