「データベースが選択されていない」または「テーブル」db.tableが存在しないPT-Upgrade Runの失敗は、複数のDBからのクエリがTCPDUMPで収集されました

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
.

それから私はこのような2つの奴隷に対してPT-アップグレードを実行しました:

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
.

しかし、どのデータベースに対してクエリを実行する必要があるかを指定していないので、敗者の敗者が鳴りました。

クエリが複数のDBSの間で収集されたときにPT-UPGRADEを使用する必要があるのはどのようにしていますか?これはどこでもマニュアルで指定されていません。

PT-Query-Digestを使用して - フィルタを使用して、特定のデータベースの出力クエリだけを出力し、次に - データベースをPT-Upgradeで指定しますか。データベースごとにすすぎと繰り返します。

ここでのガイダンスが高く評価されているように、私の巨大なtcpdumpキャプチャを解析するのに数時間かかります。

ありがとう!

p.S。

これを使いました出発点としての記事は古くなっています。例えばPT-Query-Digestには - プリントオプションがありません。

役に立ちましたか?

解決

  • あなたが - サンプルを省略するならば、それでも機能しないのですか?

  • (マニュアルから)

PT-Query-Digestがデータベースの報告に失敗することがあることにも注意してください。 TCPDUMP出力を解析するときのクエリ。データベースのみが発見されました 新しいクライアントの最初のConnectイベントで、またはいつ 実行されました。tcpdumpの出力がこれらのどちらも含まれていない場合は、 PT-Query-Digestはデータベースを検出できません。

  • tcpdumpの代わりに一般ログの使用を検討してください。

他のヒント

私は同様の問題があります。私はテーブルが不足していて使い方の声明を欠けています。時々使用文は存在しますが、間違ったデータベースがあります。私は非常に単純な回避策を使います。

(Prelude)私の最初の問題:私のSlow.logは60go long so

です

  1. 私はoption -lで分割されたもので分割されます。

    HEAD -NUMBEROFLINES AB >> AA

  2. あなたの問題の根本であるステートメントを見つける(あなたがviでRAMで1Goを持っていません)

  3. SED

    sed -e '/nameofscriptinyourfilewhichisinthefirstline.php/dent'

  4. nを編集する必要がある行数。 (私の観点からは、開発者はデバッグ目的のためにこれらの情報を表示する必要があり、とにかく私たちの歴史的な枠組みの一部です)。

    1. 発展系に問題を伝え、編集したスローラグを再度実行してください。

    2. もう一項目を見つけるまで、ステップ2から4を繰り返します。この種のコマンドを介してSEDのリストを実行できます

      sed -e '... sed -e '...' | sed - '...'>訂正_aa

    3. FINL号:パーサーがそれらを理解できないので、youseと "%"のクエリは痛みであることがわかりました。 (まだ解決策を探しています)。

      これが私がうれしいのを助けることができるならば。それはきれいではありません、それは長いですが、それは私たちの枠組みに合わないすべての質問を見つけることができますが、どういうわけかProdにそれを作りました。そして私たちのMySQLのバージョンが非常に遅くなっているので、最終的に私のために働くようにすることは私の喜びです。 ;)

      p.S。 :これは私の最初の投稿です。

私たちが終わったのは、テーブル名に基づいてsly.logからクエリをデータベース固有の(RAW)ログファイルに把握することです。次に、--type rawlogと - databaseをPT-Upgradeで指定します。

ライセンス: CC-BY-SA帰属
所属していません dba.stackexchange
scroll top