PT-업그레이드의 쿼리가 TCPDUMP로 수집 된 PT 업그레이드에서 "테이블"DB.TABLE '또는 "TABLE'DB.TABLE '또는"TABLE'DB.TABLE '없음 "이 없습니다.

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
.

쿼리는 여러 데이터베이스간에 실행됩니다.

i 다음이 파일을 다음 명령을 사용하여 pt-query-digest를 통해 실행됩니다.

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

다음과 같은 두 개의 노예에 대해 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 업그레이드를 사용하도록 어떻게되어 왔는가? 이는 문서에서 어디서나 지정되지 않았습니다.

특정 데이터베이스에 대한 쿼리를 출력 한 다음 PT 업그레이드로 --Database를 지정하는 것만으로 pt-query-digest로 -filter를 사용하여 -filter를 사용해야합니다. 데이터베이스 당 헹굼 및 반복하십시오.

내 거대한 TCPDUMP 캡처를 구문 분석하는 데 몇 시간이 걸리므로 여기에있는 모든 지침은 인정 받고 있습니다.

감사합니다!

p.s.

이이 . 기사 출발점 으로서만 구식입니다. 예를 들어, PT-Query-Digest에는 더 이상 - 프린트 옵션이 없습니다.

도움이 되었습니까?

해결책

  • - asmple을 생략하면 작동하지 않습니다 -

  • (수동에서)

또한 pt-query-digest가 데이터베이스를보고하지 못할 수 있습니다. TCPDUMP 출력을 파싱 할 때 쿼리가 쿼리됩니다.데이터베이스가 발견됩니다 새 클라이언트의 초기 연결 이벤트 또는 언제 실행됩니다.TCPDUMP 출력이 이들 중 어느 것도 포함하지 않으면 pt-query-digest는 데이터베이스를 검색 할 수 없습니다.

  • tcpdump 대신 일반 로그를 사용하는 것을 고려하십시오.

다른 팁

비슷한 문제가 있습니다. 나는 테이블을 누락하고 사용법을 놓치고 있습니다. 때로는 사용 문이 있지만 잘못된 데이터베이스가있는 경우가 있습니다. 나는 아주 간단한 해결 방법을 사용합니다.

(Prelude) 첫 번째 문제 : My Slow.log는 60Go 길이

  1. i -l 옵션을 사용하여 분할로 로 편집하는 명령문이 없는지 확인하십시오.

    머리 - Numberoflines ab >> AA는 예를 들어

  2. 문제의 루트 인 명령문을 찾습니다 (숫양이있는 RAM에 1Go를 갖고 싶지 않으려는 경우)

  3. 와 함께 sed

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

  4. n은 편집 해야하는 줄의 수입니다. (내 관점에서 개발자가 디버깅 목적으로 논문 정보를 넣어야하며 어쨌든 우리의 역사적인 프레임 워크의 일부입니다).

    1. 문제를 개발자에게 전달하고 편집 된 Slowlog를 다시 실행하십시오.

    2. 아무도 오류가 더 이상 발견되지 않을 때까지 2 ~ 4 단계를 반복합니다. 이런 종류의 명령을 통해 SED 목록을 실행할 수 있습니다

      sed -e '...'| sed -e '...'| sed - '...'> corelec_aa

    3. Fianl 문제 : 파서가 그들을 이해할 수 없기 때문에 같은 "%"와 같은 쿼리가 통증이 있음을 발견했습니다. (여전히 해결책을 찾고 있습니다).

      이렇게하면 기쁩니다. 깨끗하지는 않지만, 그것은 오랫동안 그것이 우리가 어떻게 든 그것이 그것을 만들었 지 만, 우리의 프레임 워크에 맞지 않는 모든 쿼리를 찾을 수있게 해줍니다. 그리고 우리는 MySQL 버전에서 매우 늦은 이래로, 결국 저를 위해 일하기를 즐겁게하는 것이 나의 기쁨입니다. ;)

      p.s. : 이것은 내 첫 번째 게시물입니다.

우리가 끝난 일은 테이블 이름을 기반으로하는 Slow.log에서 데이터베이스 별 (원시) 로그 파일에 대한 쿼리를 쿼리하는 것입니다.그런 다음 우리는 PT-업그레이드를 사용하여 rawlog와 --database를 지정했습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 dba.stackexchange
scroll top