Size: a a a

2021 August 19

S

Syntax Highlight Bot in MySQL
источник
2021 August 20

R

Roman in MySQL
Доброго дня коллеги! Прошу подсказать в какую сторону копать по проблеме с mysqlrouter. Один из 3х роутеров пишет в лог вот такое, при этом соответственно не коннектит клиентов. Роутер находится на той же машине, что и мастер БД. (innodb cluster). 3301 это порт на котором висит сама mysql. 3306 - роутер.
2021-08-20 10:40:35 routing DEBUG [7fa746ffd700] [routing:cluster_com_rw] fd=37 connection accepted at 0.0.0.0:3306
2021-08-20 10:40:35 routing DEBUG [7fa74cb2f700] fd=37: trying 10.10.80.128:3301 (10.10.80.128:3301)
2021-08-20 10:40:35 routing DEBUG [7fa74cb2f700] [routing:cluster_com_rw] fd=37 connected 10.10.80.128:35474 -> 10.10.80.128:3301 as fd=41
2021-08-20 10:40:35 routing INFO [7fa74cb2f700] [routing:cluster_com_rw] 10.10.80.128:35474 closed connection before finishing handshake

Пробовал bootstrap force, пробовал сносить роутер со всеми его директориями и по новой деплоить - толку нет.
источник

R

Roman in MySQL
При этом 2 остальных роутера на других 2х нодах в полном порядке и никаких проблем не испытывают. Если перекинуть мастера на другую ноду - толку нет. Проблемный роутер ведет себя так же.
источник

s

svart in MySQL
я никогда не юзал mysqlrouter, но выглядит подозрительно, что роутер ходит в мускул не в 127.0.0.1, а через  ipv4 и готов поспорить, что порт 3301 у вас не открыт. вероятно это и есть причина. попробуйте сменить 10.10xxx  на 127.0.0.1
источник

R

Roman in MySQL
порт открыт
источник

R

Roman in MySQL
так сделано специально, чтобы можно было с избранных адресов ходить мимо роутера в случае необходимости.
источник

R

Roman in MySQL
telnet 10.10.80.128 3301
Trying 10.10.80.128..
Connected to 10.10.80.128.
Escape character is '^]'.
J
8.0.25 □□  G>+Q
k □           9y M.'KFT caching_sha2_password ^CConnection closed by foreign host
источник

s

svart in MySQL
понятно. бывает еще что могут версии протоколов не совпадать и тогда handshake может валиться тоже. если с этим все в порядке, то нужно искать человека, который работал с mysqlrouter
источник

s

svart in MySQL
да, я верю вам
источник

R

Roman in MySQL
хм... версия роутера и mysql совпадают, плюс, 2 других роутера аналогичные - закатывалось ансиблом.
Прошу уточнить, про какие протоколы речь?
источник

R

Roman in MySQL
может в эту сторону копать нужно...
источник

s

svart in MySQL
под протоколом тут нужно понимать формат пакетов, которые посылают друг другу mysqlrouter and mysql, чтобы авторизиваться. если все одинаково, то это не должно быть проблемой
источник

R

Roman in MySQL
не вполне понимаю где это посмотреть...
источник

R

Roman in MySQL
в логах mysql пусто на этот предмет. Только general log еще включал
источник

s

svart in MySQL
это сеть. я мог бы предложить вам tcpdump и потом смотреть кто не так. в general log ничего не будет. вам нужно смотреть логи сервера и, возможно поменять log_error_verbosity
источник

R

Roman in MySQL
Спасибо! Действительно судя по исходникам эта ошибка выплывает из за несовпадения протокола клиента и сервера т.е. роутера и мускуля.
Только категорически не понятно почему это происходит :)
источник

R

Roman in MySQL
тут видно
https://dev.mysql.com/doc/dev/mysql-server/latest/protocol__splicer_8h_source.html
искать на странице по фразе  "closed connection before finishing handshake"
источник

IZ

Ilia Zviagin in MySQL
Надо просто чтобы сервак и рутер одной версии были (одну версию протокола использовали)
источник

R

Roman in MySQL
8.0.25 и мускуль и роутер
источник

R

Roman in MySQL
на разницу в минорках уже напарывался ранее, но там более вменяемая ошибка в логах была
источник