Can't create federated table


#1

Пытаюсь подключить по документации к MariaDB мантикру, но что то вот не получается, что я делаю не так? Получаю ошибку
#1434 - Can't create federated table. Foreign data src error: database: 'DB' username: 'FEDERATED' hostname: '127.0.0.1'

MariaDB в докере latest
Manticore тоже в докере latest
С сетями без заморочек --network=host так что они друг друга видят по 127.0.0.1, проблем со связью нет.
В марии предварительно выполнил: INSTALL SONAME 'ha_federatedx';, далее посмотрел какой на самом деле в образе по умолчанию есть rt индекс и написал следующее:

CREATE TABLE t1
(
    id          BIGINT NOT NULL,
    gid  		INTEGER UNSIGNED NOT NULL,
    query       VARCHAR(3072) NOT NULL,
    INDEX(query)
) ENGINE=FEDERATED DEFAULT CHARSET=utf8 CONNECTION='mysql://FEDERATED@127.0.0.1:9306/DB/testrt';

Пробовал так же нормальный Ip машины: 192.168.88.71

CREATE TABLE t1
(
    id          BIGINT NOT NULL,
    gid  		INTEGER UNSIGNED NOT NULL,
    query       VARCHAR(3072) NOT NULL,
    INDEX(query)
) ENGINE=FEDERATED DEFAULT CHARSET=utf8 CONNECTION='mysql://FEDERATED@192.168.88.71:9306/DB/testrt';

Были ещё кучи других вариантов где id unsigned integer, варианты с “not null” и без для обоих (id, gid), но всё безтолку, результат один:
#1434 - Can't create federated table. Foreign data src error: database: 'DB' username: 'FEDERATED' hostname: '127.0.0.1'

mysql> describe testrt;
+---------+--------+------------+  
| Field   | Type   | Properties |  
+---------+--------+------------+  
| id      | bigint |            |  
| title   | field  |            |  
| content | field  |            |  
| gid     | uint   |            |  
+---------+--------+------------+  
4 rows in set (0.00 sec)           

#2

Отбой, разобрался, надо было вместо:

использовать: INSTALL SONAME 'ha_federated';


#3

Правда есть проблема, запрос вида SELECT * FROM t1 роняет MariDB в коредамп.:cry::cry::cry:


#4

А нет случайно docker-compose ямлика и сопутствующих файлов, на которых воспроизводится проблема?


#5

Я постараюсь собрать тогда все кейсы и докер файлы, были ещё обнаружены проблемы с переполнением буфера, когда в колонке query выводится просто случайный кусок памяти, когда id и прочие int атрибуты индекса становились нулями. Тут ещё такой момент, federated в марии считается устаревшим плагином и более не разрабатывается, ему на смену пришёл federatedX, который они официально рекомендуют использовать вместо federated. Проблема может быть и в нём (federated), а мантикора, к сожалению, не работает с federatedX. :frowning:


#6

Спасибо. А можете ещё рассказать почему вам важно использовать Manticore через Federated? Мы получаем не очень много отзывов об этой интеграции и было бы интересно узнать почему она кажется важной в вашем случае.


#7

В моём случае я считаю это очень удобным, когда делается один запрос в марию, с объединением таблицы марии с результатами из мантикоры, как минимум это гораздо быстрее работает чем если сделать отдельный запрос в мантикору, получить список id и сделать запрос в марию передав этот список и получить результат, объединённый запрос так же позволяет экономить на написании этой лишней логики с тасканием id через клиента между сервисами, но на вкус и цвет все фломастеры разные. Я так же предпочитаю работать с базами (не важно какими) через орм, в данном случае, в таблицах марии у меня хранится большой, мноогоуровневый json с кучей текстовых и числовых атрибутов, который я и индексирую в мантикоре… Получить через орм массив нужных мне записей через JOIN запрос с federated таблицей, после чего орм в сущности через мапперы разбирает этот json на внутренние объекты, это просто очень удобно… К слову с мантикорой я тоже через орм работаю, инсерты в индекс делает орм. И это тоже очень удобно, правда для инсертов я использую прямое соединение с мантикорой уже, а не через марию.

В идеале, я вообще предпочёл бы чтоб всё работало через одно соединение конечно, т.е. мария в данном случае была бы неким “прокси”, я пытался поэкспериментировать в этом направлении используя CONNECT плагин представляя мантикору другим mysql сервером, но там оказалось всё грустно, он выполняет много запросов которые для mysql норма, а в мантикоре этот синтаксис не поддерживается. А так это было бы вообще супер если инсерты в мантикору можно было бы проксировать… Ну да ладно, это мало кому нужно…