«Никакая не выбрана база данных» или «Таблица».

dba.stackexchange https://dba.stackexchange.com/questions/103198

  •  26-09-2020
  •  | 
  •  

Вопрос

Я собирал запросы на нашем мастере, используя следующую команду tcpdump:

tcpdump -i any -s 65535 -x -n -nn -q -tttt 'port 3306' > tcpdump.tcp
.

Запросы выполняются среди нескольких баз данных.

Я затем запустил этот файл через PT-Query-digest, используя следующую команду:

pt-query-digest --output=slowlog --no-report --sample 100 --type tcpdump tcpdump.tcp > slow.log
.

Тогда я запустил PT-Upgrade против двух рабских работ:

pt-upgrade --user user --ask-pass --run-time=1h --upgrade-table percona.pt_upgrade h=10.1.1.1 h=10.1.1.2 slow.log
.

Но у меня есть куча сбоев, поскольку не отображается, какая база данных запроса должна быть выполнена.

Как можно использовать PT-Upgrade, когда запросы собираются среди нескольких DBS? AFAICT Это не указано в документации в любом месте.

Вы должны использовать --filter с PT-Query-digest, чтобы просто выводить запросы для конкретной базы данных, а затем указать --database с PT-UPGRADE? Промыть и повторить в базу данных.

Требуется несколько часов для анализа моего гигантского захвата TCPDUMP, поэтому любое руководство здесь ценится.

Спасибо!

p.s.

Я использовал это Статья в качестве отправной точки, но она устарела. например PT-Query-digest не имеет опции --печатаю.

Это было полезно?

Решение

    .
  • Это все еще не работает, если вы опустите - обратный?

  • (из руководства)

Также обратите внимание, что PT-Query-digest может не сообщить об базе данных для Запросы при разборке выхода TCPDUMP.База данных обнаружена только в исходных событиях Connect для нового клиента или когда есть выполнено.Если выход TCPDUMP не содержит ни один из них, то PT-Query-digest не может обнаружить базу данных.

    .
  • Подумайте, используя общий журнал вместо TCPDUMP?

Другие советы

У меня есть подобная проблема. Я имею пропущенные таблицы и отсутствующие statments. Иногда оператор использования присутствует, но с неправильной базой данных. Я использую довольно простой обходной путь.

(prelude) Мой первый вопрос: мой slow.log длиной 60го, так что

  1. Я разбиваю его с разделением с опцией.

    head neumberObleflines ab >> AA Например

  2. Найти оператор, который является корнем вашей проблемы (открытый с меньшим количеством, не хочу иметь 1Ого в оперативной памяти с vi)

  3. sed это с

    sed -e '/nameofscriptinyourfilewhichisInthefirstline.php/ ,+nd'

  4. с числом строк, которые вам нужно редактировать. (С моей точки зрения разработчик должен поставить эту дискуссию для целей отладки и в любом случае является частью нашей исторической структуры).

    1. Сообщите проблему разработчику и снова запустите отредактированный SlowLog.

    2. Повторите шаги 2 по 4, пока не найдете больше ошибок тезисов. Вы можете запустить ваш список SED через эту команду

      Sed -e '...' | Sed-E '...' | SED - '...'> revent_aa

    3. Проблема Fianl: я обнаружил, что запросы с подобными и «%» являются болью, потому что парсер не может их понять. (Все еще ищет решение).

      Если это может помочь, я рад. Это не чисто, это давно, но он позволяет мне найти все запросы, которые не соответствуют нашим каркасам, хотя они каким-то образом сделали его. И поскольку мы очень опаздываем в наших версиях MySQL, мое удовольствие заставить их работать на меня в конце концов. ;)

      P.S. : Это мой первый пост.

Что мы в итоге делаем, - это запрашивает запросы от slow.log на основе имени таблицы в файлах журнала для конкретной базы данных (RAW).Затем мы указываем --type RawLog и --датабаза с PT-UPGRADE.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с dba.stackexchange
scroll top