1 глобальный конфиг для подключение к mysql

include = /etc/manticoresearch/mysql.inc

source news {
    ******
}

Содержимое:

  type          = mysql
  sql_host    = localhost
  sql_user    = ****
  sql_pass    = ****
  sql_db       = ****

Выполняю
sudo indexer --all --rotate

Результат:

using config file '/etc/manticoresearch/manticore.conf'...
FATAL: failed to parse config file '/etc/manticoresearch/manticore.conf': ERROR: invalid section type 'common' in /etc/manticoresearch/manticore.conf line 11 col 9.

Вопрос в том, возможно ли конфик сделать 1, или в одном месте прописать подключение к базе данных. Глобально задать, чтобы в каждом source не прописывать подключение к mysql…

@Zuldek да, можно это сделать через наследование: Server settings > Inheritance of table and source declarations | Manticore Search Manual
Т.е. делаешь блок, например, common или connection, в нем прописываешь данные для подключения, а далее наследуешь их под source.
Хорошо сочетается с автоматизацией, например, Ansible.
Еще вот это может быть полезным под конфигурацию: Server settings > Scripted configuration | Manticore Search Manual, допустимо так же по bash.

1 Like

В данный момент делаю следующим образом, для создания каждой таблицы прописываю:

source news {

  type            = \*\*\*\*\*
  sql_host     = \*\*\*\*\*
  sql_user     = \*\*\*\*\*
  sql_pass    = \*\*\*\*\*
  sql_db        = \*\*\*\*\*
  sql_query   = \*\*\*\*\*

}

index indexnews {

  type     = plain
  source = news
  \*\*\*\*\*

}

Не понимаю, как в моем случаи сделать 1 блок конфига, который станет возможно подключать в каждом source

table parent {

  type           = \*\*\*\*\*
  sql_host    = \*\*\*\*\*
  sql_user    = \*\*\*\*\*
  sql_pass    = \*\*\*\*\*
  sql_db        = \*\*\*\*\*

}

news child:parent {
   sql_query     = \*\*\*\*\*
   sql_attr_uint = comment
}

Что та совсем не то делаю…

Не совсем так.
Данные для подключения задаются только в секции source.
А далее в секции table указывается параметр source = source.

Например так:

source common_connection {
  type            = \\*\*\\\**\\*\*\\\**\\\*
  sql*\_host     = \\\*\\\*\\\*\\\*\\\*
  sql\_*user     = \\*\*\\\**\\*\*\\\**\\\*
  sql*\_pass    = \\\*\\\*\\\*\\\*\\\*
  sql\_*db        = \\*\*\\\**\\*\*\\\**\\\*
}

Затем идет блок source:

source news:common_connection {
  sql*\_query   = \\\*\\\*\\\*\\\*\\\*
}

Далее блок table:

index indexnews {
  type     = plain
  source = news
  \*\*\*\*\*
}

Теперь у нас есть 1 общий блок source - common_connection, который можно аналогичным образом подключить в других source. При этом параметры подключения не нужно указывать в блоке index или table.

1 Like