# Подключение к базе данных

Определение источника должно содержать настройки подключения, включая хост, порт, учетные данные пользователя или специфичные настройки драйвера.

## sql_host

Хост сервера базы данных для подключения. Обратите внимание, что клиентская библиотека MySQL выбирает, подключаться через TCP/IP или через UNIX-сокет, на основе имени хоста. В частности, "localhost" заставит использовать UNIX-сокет (это режим по умолчанию и, как правило, рекомендуемый), а "127.0.0.1" заставит использовать TCP/IP.

## sql_port

IP-порт сервера для подключения.
Для `mysql` по умолчанию используется 3306, а для `pgsql` — 5432.

## sql_db

База данных SQL, которую следует использовать после установления соединения и в рамках которой выполнять дальнейшие запросы.

## sql_user

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

## sql_pass

Пароль пользователя, используемый при подключении. Если пароль содержит символ `#` (который можно использовать для добавления комментариев в файле конфигурации), его можно экранировать с помощью `\`.

## sql_sock

Имя UNIX-сокета для подключения к локальным серверам баз данных. Обратите внимание, что фактическое использование этого значения зависит от настройки `sql_host`.

```ini
sql_sock = /var/lib/mysql/mysql.sock
```

## Специфичные настройки для драйверов

### MySQL

#### mysql_connect_flags

Флаги подключения клиента MySQL. Необязательный параметр, значение по умолчанию — 0 (не устанавливать никаких флагов).

Этот параметр должен содержать целочисленное значение, представляющее сумму флагов. Значение будет передано в mysql_real_connect() как есть. Флаги перечислены в include-файле mysql_com.h. Флаги, представляющие особый интерес с точки зрения индексации, с их соответствующими значениями, следующие:

* CLIENT_COMPRESS = 32; может использовать протокол сжатия
* CLIENT_SSL = 2048; переключиться на SSL после рукопожатия
* CLIENT_SECURE_CONNECTION = 32768; новая аутентификация 4.1
Например, можно указать 2080 (2048+32) для использования как сжатия, так и SSL, или 32768 для использования только новой аутентификации. Изначально эта опция была введена, чтобы иметь возможность использовать сжатие, когда индексатор и mysqld находятся на разных хостах. Сжатие на каналах 1 Гбит/с, скорее всего, увеличит время индексации, хотя и уменьшает сетевой трафик, как в теории, так и на практике. Однако включение сжатия на каналах 100 Мбит/с может значительно улучшить время индексации (сообщалось об улучшении до 20-30% от общего времени индексации). Ваши результаты могут отличаться.

```ini
mysql_connect_flags = 32 # enable compression
```

### Настройки SSL-сертификата

* `mysql_ssl_cert` — путь к SSL-сертификату
* `mysql_ssl_key` — путь к файлу SSL-ключа
* `mysql_ssl_ca` — путь к сертификату CA


### unpack_mysqlcompress

```ini
unpack_mysqlcompress_maxsize = 1M
```

Столбцы для распаковки с использованием алгоритма MySQL `UNCOMPRESS()`. Множественное значение, необязательный параметр, значение по умолчанию — пустой список столбцов.

Столбцы, указанные с помощью этой директивы, будут распакованы индексатором с использованием модифицированного алгоритма zlib, который используется функциями MySQL `COMPRESS()` и `UNCOMPRESS()`. При индексации на машине, отличной от базы данных, это позволяет разгрузить базу данных и сэкономить сетевой трафик. Эта функция доступна только если zlib и zlib-devel были доступны во время сборки.

```ini
unpack_mysqlcompress = body_compressed
unpack_mysqlcompress = description_compressed
```

По умолчанию для распаковки данных используется буфер размером 16 МБ. Это можно изменить, установив параметр `unpack_mysqlcompress_maxsize`.

При использовании unpack_mysqlcompress, из-за особенностей реализации, невозможно определить требуемый размер буфера из сжатых данных. Поэтому буфер должен быть предварительно выделен, и распакованные данные не могут превысить размер буфера.

### unpack_zlib

```ini
unpack_zlib = col1
unpack_zlib = col2
```

Столбцы для распаковки с использованием zlib (также известного как deflate, gunzip). Множественное значение, необязательный параметр, значение по умолчанию — пустой список столбцов. Применяется только к типам источников `mysql` и `pgsql`.

Столбцы, указанные с помощью этой директивы, будут распакованы `indexer` с использованием стандартного алгоритма zlib (называемого deflate и также реализованного в `gunzip`). При индексации на машине, отличной от базы данных, это позволяет разгрузить базу данных и сэкономить сетевой трафик. Эта функция доступна только если zlib и zlib-devel были доступны во время сборки.

### MSSQL

Флаг аутентификации Windows для MS SQL. Определяет, использовать ли учетные данные текущей учетной записи Windows для аутентификации при подключении к MS SQL Server.

```ini
mssql_winauth = 1
```

### ODBC

Источники, использующие ODBC, требуют наличия строки DSN (Data Source Name, имя источника данных), которую можно задать с помощью `odbc_dsn`.

```ini
odbc_dsn = Driver={Oracle ODBC Driver};Dbq=myDBName;Uid=myUsername;Pwd=myPassword
```

Обратите внимание, что формат зависит от используемого конкретного драйвера ODBC.
<!-- proofread -->

