pt-deadlock-loggerp - 클라우드의 온라인

Ubuntu Online, Fedora Online, Windows 온라인 에뮬레이터 또는 MAC OS 온라인 에뮬레이터와 같은 여러 무료 온라인 워크스테이션 중 하나를 사용하여 OnWorks 무료 호스팅 공급자에서 실행할 수 있는 pt-deadlock-loggerp 명령입니다.

프로그램:

이름


pt-deadlock-logger - MySQL 교착 상태를 기록합니다.

개요


사용법: pt-deadlock-logger [옵션] DSN

pt-deadlock-logger는 지정된 DSN에서 MySQL 교착 상태에 대한 정보를 기록합니다. 정보
"STDOUT"으로 인쇄되며 "--dest"를 지정하여 테이블에 저장할 수도 있습니다. 그만큼
도구는 "--run-time" 또는 "--iterations"가 지정되지 않는 한 영원히 실행됩니다.

host1에서 교착 상태를 인쇄합니다.

pt-교착 상태 기록기 h=host1

host1에서 교착 상태를 한 번 인쇄한 다음 종료합니다.

pt-deadlock-logger h=host1 --반복 1

host1의 교착 상태를 host2의 percona_schema.deadlocks에 저장:

pt-deadlock-logger h=host1 --dest h=host2,D=percona_schema,t=교착 상태

위험


Percona Toolkit은 성숙하고 실제 세계에서 입증되었으며 잘 테스트되었지만 모든 데이터베이스
도구는 시스템과 데이터베이스 서버에 위험을 초래할 수 있습니다. 이 도구를 사용하기 전에
부디:

· 도구 설명서 읽기

· 도구의 알려진 "버그" 검토

· 비프로덕션 서버에서 도구 테스트

· 프로덕션 서버 백업 및 백업 확인

기술


pt-deadlock-logger는 "SHOW"를 폴링 및 구문 분석하여 MySQL 교착 상태에 대한 정보를 인쇄합니다.
ENGINE INNODB STATUS". 새로운 교착 상태가 발생하면 "STDOUT"으로 인쇄되며,
지정되어 "--dest"에 저장됩니다.

새 교착 상태만 인쇄됩니다. 각 교착 상태에 대한 지문은 다음을 사용하여 생성됩니다.
교착 상태의 서버, ts 및 스레드 값(이러한 열이 지정되지 않은 경우에도
"--열"). 지문이 마지막 지문과 다른 경우 교착 상태가 인쇄됩니다.
교착 상태의 지문.

"--dest" 문은 "INSERT IGNORE"를 사용하여 중복 교착 상태를 제거합니다.
교착 상태는 모든 "--반복"에 대해 저장됩니다.

출력


"--quiet"가 지정되지 않은 경우 새 교착 상태는 "STDOUT"에 인쇄됩니다. 오류 및 경고
"STDERR"로 인쇄됩니다.

"--columns" 및 "--tab"도 참조하십시오.

이노디비 경고 세부 사항


InnoDB의 출력은 구문 분석하기 어렵고 때로는 올바르게 수행할 방법이 없습니다.

경우에 따라 모든 정보(예: 사용자 이름 또는 IP 주소)가
교착 상태 정보. 이 경우 도구가 해당 열에 입력할 항목이 없습니다.
교착 상태 출력이 너무 긴 경우일 수도 있습니다.
잠금) 전체가 잘립니다.

일반적으로 교착 상태에 관련된 두 개의 트랜잭션이 있지만 더 많은 잠금이 있습니다.
그것보다; 주기를 생성하려면 최소한 트랜잭션보다 하나 더 많은 잠금이 필요합니다.
대기 그래프. pt-deadlock-logger는 트랜잭션을 인쇄합니다(항상 InnoDB에서 XNUMX개).
대기 그래프에 그보다 더 많은 트랜잭션이 있는 경우에도 출력) 및 채움
자물쇠에. 출력할 잠금 정보를 선택할 때 waited-for-hold를 선호하지만
잠시만 생각하면 나머지는 알아낼 수 있습니다. 하나의 대기와 보류가 표시되는 경우
잠금, 당신은 같은 잠금을보고 있으므로 물론 당신은 모두 wait-for를 보는 것을 선호합니다
잠그고 자세한 정보를 얻으십시오. 두 개의 대기 중인 잠금이 동일한 테이블에 있지 않은 경우
두 개 이상의 트랜잭션이 교착 상태에 관련되었습니다.

마지막으로 공백이 있는 사용자 이름은 InnoDB에서 인용되지 않기 때문에
도구는 일반적으로 이러한 사용자 이름의 두 번째 단어를 호스트 이름으로 잘못 보고합니다.

옵션


이 도구는 추가 명령줄 인수를 허용합니다. "시놉시스" 및 사용법을 참조하십시오.
자세한 내용은 정보를 참조하십시오.

-- 묻고 통과
MySQL에 연결할 때 암호를 묻습니다.

--문자셋
짧은 형식: -A; 유형: 문자열

기본 문자 집합입니다. 값이 utf8이면 STDOUT에서 Perl의 binmode를 utf8로 설정하고,
mysql_enable_utf8 옵션을 DBD::mysql에 전달하고 SET NAMES UTF8을 실행합니다.
MySQL에 연결합니다. 다른 모든 값은 utf8 레이어 없이 STDOUT에서 binmode를 설정합니다.
MySQL에 연결한 후 SET NAMES를 실행합니다.

--교착 상태 제거
유형: 문자열

이 테이블을 사용하여 작은 교착 상태를 만듭니다. 이것은 일반적으로 지우는 효과가 있습니다.
그렇지 않으면 "SHOW INNODB의 전체 출력을 소비하는 거대한 교착 상태를
STATUS". 테이블이 존재하지 않아야 합니다. pt-deadlock-logger는
다음 구조:

테이블 생성 percona_schema.clear_deadlocks(
INT 기본 키
) 엔진=InnoDB

테이블을 생성하고 약간의 교착 상태가 발생한 후 도구는 테이블을 삭제합니다.
또.

--열
유형: 배열; 기본값: 서버, ts, 스레드, txn_id, txn_time, 사용자, 호스트 이름, ip, db,
tbl, idx, lock_type, lock_mode, wait_hold, 희생자, 쿼리

열은 다음과 같습니다.

섬기는 사람
교착 상태가 발생한 (소스) 서버. 다음과 같은 경우 유용할 수 있습니다.
많은 서버에서 교착 상태를 추적하고 있습니다.

ts 마지막으로 감지된 교착 상태의 날짜 및 시간입니다.


SHOW FULL의 연결 ID와 동일한 MySQL 스레드 번호
프로세스 목록.

txn_id
InnoDB가 두 개의 부호 없는 정수로 표현하는 InnoDB 트랜잭션 ID입니다. 나
그것들을 하나의 숫자로 곱했습니다.

txn_time
교착 상태가 발생했을 때 트랜잭션이 활성화된 시간입니다.

사용자
연결의 데이터베이스 사용자 이름입니다.

호스트 이름
연결의 호스트입니다.

ip 연결의 IP 주소입니다. "--numeric-ip"를 지정하면 다음으로 변환됩니다.
부호 없는 정수.

db 교착 상태가 발생한 데이터베이스.

tbl 교착 상태가 발생한 테이블.

idx 교착 상태가 발생한 인덱스입니다.

잠금 유형
교착 상태를 일으킨 잠금에서 트랜잭션이 보유한 잠금 유형입니다.

잠금 모드
교착 상태를 일으킨 잠금의 잠금 모드입니다.

wait_hold
트랜잭션이 잠금을 대기 중인지 또는 잠금을 보유하고 있는지 여부. 보통 당신은
두 개의 대기 중인 잠금이 표시됩니다.

희생자
트랜잭션이 교착 상태 피해자로 선택되어 롤백되었는지 여부.

질문
교착 상태를 일으킨 쿼리입니다.

--구성
유형: 배열

이 쉼표로 구분된 구성 파일 목록을 읽으십시오. 지정된 경우 첫 번째 항목이어야 합니다.
명령줄의 옵션입니다.

--생성 대상 테이블
"--dest"로 지정된 테이블을 생성합니다.

일반적으로 "--dest" 테이블은 이미 존재할 것으로 예상됩니다. 이 옵션은 pt-
deadlock-logger는 제안된 테이블 구조를 사용하여 테이블을 자동으로 생성합니다.

--데몬화
배경으로 포크하고 껍질에서 분리하십시오. POSIX 운영 체제 전용.

--데이터 베이스
약식: -D; 유형: 문자열

이 데이터베이스에 연결합니다.

--기본 파일
약식: -F; 유형: 문자열

주어진 파일에서 mysql 옵션만 읽으십시오. 절대 경로 이름을 지정해야 합니다.

--목적지
유형: DSN

교착 상태를 저장할 위치에 대한 DSN 최소한 데이터베이스(D)와 테이블(t)을 지정하십시오.

누락된 값은 소스 호스트의 동일한 값으로 채워지므로 다음을 수행할 수 있습니다.
교착 상태를 동일한 데이터베이스에 저장하는 경우 일반적으로 이 인수의 대부분을 생략합니다.
그들이 일어나는 서버.

모든 정보를 저장하려면 다음 테이블 구조를 제안합니다.
pt-deadlock-logger는 교착 상태에 대해 추출할 수 있습니다.

CREATE TABLE 교착 상태(
섬기는 사람 이륜 전차(20) NULL이 아님,
ts 타임스탬프 NOT NULL 기본 CURRENT_TIMESTAMP,
스레드 int 부호 없는 NOT NULL,
txn_id bigint unsigned NOT NULL,
txn_time smallint unsigned NOT NULL,
사용자 이륜 전차(16) NULL이 아님,
호스트 이름 이륜 전차(20) NULL이 아님,
ip 이륜 전차(15) NOT NULL, -- 또는 ip int unsigned NOT NULL
db 이륜 전차(64) NULL이 아님,
tbl 이륜 전차(64) NULL이 아님,
idx 이륜 전차(64) NULL이 아님,
잠금 유형 이륜 전차(16) NULL이 아님,
잠금 모드 이륜 전차(1) NULL이 아님,
wait_hold 이륜 전차(1) NULL이 아님,
피해자 tinyint unsigned NOT NULL,
쿼리 텍스트 NOT NULL,
기본 키(서버,ts,스레드)
) 엔진=InnoDB

"--columns"를 사용하면 저장하지 않으려는 열을 생략할 수 있습니다.

--도움
도움말을 표시하고 종료합니다.

--주인
짧은 형식: -h; 유형: 문자열

호스트에 연결합니다.

--간격
유형: 시간; 기본값: 30

교착 상태를 확인하는 빈도입니다. "--run-time"이 지정되지 않은 경우 pt-deadlock-logger
영원히 실행되며 모든 간격에서 교착 상태를 확인합니다. "--run-time"도 참조하십시오.

--반복
유형 : int

교착 상태를 확인하는 횟수입니다. 기본적으로 이 옵션은 정의되지 않습니다.
무한반복을 의미합니다. 이 도구는 항상 "--run-time"으로 종료됩니다.
이 옵션에 대해 지정된 값에 관계없이. 예를 들어 도구가 종료됩니다.
"--run-time 1m --iterations 1 --interval 4"으로 30분 후 4회 반복
30초 간격으로 2분 실행 시간보다 긴 1분이 소요됩니다.

--통나무
유형: 문자열

데몬화될 때 모든 출력을 이 파일로 인쇄합니다.

--숫자-ip
IP 주소를 정수로 표현하십시오.

--비밀번호
짧은 형식: -p; 유형: 문자열

연결할 때 사용할 비밀번호입니다. 비밀번호에 쉼표가 포함된 경우 이스케이프해야 합니다.
백슬래시 포함: "exam\,ple"

--pid
유형: 문자열

주어진 PID 파일을 생성합니다. PID 파일이 이미 존재하고 도구가 시작되지 않습니다.
포함된 PID가 현재 PID와 다릅니다. 그러나 PID 파일의 경우
존재하고 여기에 포함된 PID가 더 이상 실행되지 않으면 도구가 PID를 덮어씁니다.
현재 PID가 있는 파일 PID 파일은 도구가 종료될 때 자동으로 제거됩니다.

--포트
약식: -P; 유형: 정수

연결에 사용할 포트 번호입니다.

--조용한
교착 상태에 빠지지 마십시오. 오류 및 경고만 "STDERR"로 인쇄합니다.

--실행 시간
유형: 시간

종료하기 전에 실행하는 시간입니다. 기본적으로 pt-deadlock-logger는 영원히 실행되며 다음을 확인합니다.
"--interval"초마다 교착 상태가 발생합니다.

--set-vars
유형: 배열

이 쉼표로 구분된 "변수=값" 쌍 목록에서 MySQL 변수를 설정합니다.

기본적으로 도구는 다음을 설정합니다.

wait_timeout=10000

명령줄에 지정된 변수는 이러한 기본값을 재정의합니다. 예를 들어,
"--set-vars wait_timeout=500"을 지정하면 기본값 10000이 무시됩니다.

도구는 경고를 인쇄하고 변수를 설정할 수 없는 경우 계속합니다.

--소켓
짧은 형식; 유형: 문자열

연결에 사용할 소켓 파일입니다.

--탭
탭을 사용하여 공백 대신 열을 구분하십시오.

--사용자
약식: -u; 유형: 문자열

현재 사용자가 아닌 경우 로그인을 위한 사용자입니다.

--번역
버전을 표시하고 종료합니다.

--[no]버전 확인
기본값: 예

Percona Toolkit, MySQL 및 기타 프로그램의 최신 버전을 확인하십시오.

이것은 두 가지 추가 기능이 있는 표준 "자동 업데이트 확인" 기능입니다.
특징. 먼저 이 도구는 로컬 시스템의 다른 프로그램 버전을 확인합니다.
자체 버전에 추가. 예를 들어 모든 MySQL 서버의 버전을 확인합니다.
Perl 및 Perl 모듈 DBD::mysql에 연결됩니다. 둘째, 확인하고 경고한다.
알려진 문제가 있는 버전에 대해. 예를 들어 MySQL 5.5.25에는 치명적인 버그가 있었고
5.5.25a로 재발매되었습니다.

모든 업데이트 또는 알려진 문제는 도구의 일반 출력 전에 STDOUT에 인쇄됩니다.
이 기능은 도구의 정상적인 작동을 방해해서는 안 됩니다.

자세한 내용은 다음을 방문하십시오. .

dsn 옵션


이러한 DSN 옵션은 DSN을 만드는 데 사용됩니다. 각 옵션은 "option=value"와 같이 주어집니다.
옵션은 대소문자를 구분하므로 P와 p는 동일한 옵션이 아닙니다. 있을 수 없다
"=" 앞이나 뒤에 공백이 있고 값에 공백이 포함되어 있으면 따옴표로 묶어야 합니다.
DSN 옵션은 쉼표로 구분됩니다. 자세한 내용은 percona-toolkit 맨페이지를 참조하십시오.

· ㅏ

dsn: 문자 집합; 복사: 예

기본 문자 집합입니다.

· NS

dsn: 데이터베이스; 복사: 예

기본 데이터베이스.

· NS

dsn: mysql_read_default_file; 복사: 예

주어진 파일에서 기본 옵션만 읽기

· h

dsn: 호스트; 복사: 예

호스트에 연결합니다.

· NS

dsn: 비밀번호; 복사: 예

연결할 때 사용할 비밀번호입니다. 비밀번호에 쉼표가 포함된 경우 이스케이프해야 합니다.
백슬래시 포함: "exam\,ple"

· 피

dsn: 포트; 복사: 예

연결에 사용할 포트 번호입니다.

· NS

dsn: mysql_socket; 복사: 예

연결에 사용할 소켓 파일입니다.

· NS

교착 상태 정보를 저장할 테이블입니다.

· 유

dsn: 사용자; 복사: 예

현재 사용자가 아닌 경우 로그인을 위한 사용자입니다.

환경


환경 변수 "PTDEBUG"는 STDERR에 대한 자세한 디버깅 출력을 활성화합니다. 사용하려면
디버깅하고 모든 출력을 파일로 캡처하려면 다음과 같이 도구를 실행하십시오.

PTDEBUG=1 pt-deadlock-logger ... > 파일 2>&1

주의: 디버깅 출력은 방대하고 수 메가바이트의 출력을 생성할 수 있습니다.

시스템 요구 사항


Perl, DBI, DBD::mysql 및 모든 시스템에 설치해야 하는 몇 가지 핵심 패키지가 필요합니다.
합리적으로 새로운 버전의 Perl.

onworks.net 서비스를 사용하여 온라인에서 pt-deadlock-loggerp 사용



최신 Linux 및 Windows 온라인 프로그램