영어프랑스어스페인어

Ad


온웍스 파비콘

pt-archiverp - 클라우드에서의 온라인

Ubuntu Online, Fedora Online, Windows 온라인 에뮬레이터 또는 MAC OS 온라인 에뮬레이터를 통해 OnWorks 무료 호스팅 제공업체에서 pt-archiverp를 실행하세요.

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

프로그램:

이름


pt-archiver - MySQL 테이블의 행을 다른 테이블이나 파일로 보관합니다.

개요


사용법: pt-archiver [OPTIONS] --source DSN --where WHERE

pt-archiver는 MySQL 테이블의 레코드를 니블링합니다. --source 및 --dest 인수는 DSN을 사용합니다.
통사론; COPY가 yes이면 --dest는 --source의 키 값을 기본값으로 사용합니다.

예 :

oltp_server의 모든 행을 olap_server 및 파일로 보관합니다.

pt-archiver --source h=oltp_server,D=test,t=tbl --dest h=olap_server \
--file '/var/log/archive/%Y-%m-%d-%D.%t' \
--여기서 "1=1" --limit 1000 --commit-each

하위 테이블에서 고아 행을 제거(삭제)합니다.

pt-archiver --source h=host,D=db,t=child --purge \
--여기서 '존재하지 않음(SELECT * FROM 상위 WHERE col=child.col)'

위험


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

· 도구 설명서 읽기

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

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

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

기술


pt-archiver는 다음에 설명된 대로 테이블을 보관하는 데 사용하는 도구입니다.
<http://tinyurl.com/mysql-archiving>. 목표는 영향이 적고 전진 전용 작업입니다.
OLTP 쿼리에 큰 영향을 주지 않고 테이블에서 오래된 데이터를 조금씩 제거합니다. 다음을 삽입할 수 있습니다.
동일한 서버에 있을 필요가 없는 다른 테이블로 데이터를 복사합니다. 에 쓸 수도 있습니다.
LOAD DATA INFILE에 적합한 형식의 파일입니다. 아니면 둘 다 할 수 없습니다. 이 경우에는
단지 증분 DELETE입니다.

pt-archiver는 플러그인 메커니즘을 통해 확장 가능합니다. 자신만의 코드를 삽입하여 추가할 수 있습니다.
종속 데이터를 보관하는 데 유용할 수 있는 고급 보관 논리를 적용합니다.
복잡한 비즈니스 규칙 또는 아카이빙 프로세스 중 데이터 웨어하우스 구축 등이 있습니다.

일부 옵션의 경우 값을 신중하게 선택해야 합니다. 가장 중요한 것은 "--limit"입니다.
"--재시도" 및 "--txn-size".

전략은 첫 번째 행을 찾은 다음 일부 인덱스를 앞으로만 스캔하여 더 많은 행을 찾는 것입니다.
효율적으로 행을 만듭니다. 각 후속 쿼리는 전체 테이블을 스캔해서는 안 됩니다. 추구해야 한다
인덱스에 추가한 다음 보관 가능한 행을 더 찾을 때까지 검색합니다. 다음을 사용하여 인덱스 지정
"--source" 인수의 'i' 부분은 이를 위해 중요할 수 있습니다. "--dry-run"을 사용하여
생성된 쿼리를 검사하고 설명하여 효율적인지 확인하세요.
(대부분의 경우 기본값인 PRIMARY 키를 스캔하려고 할 것입니다.) 심지어
더 나은 방법은 실행 전후의 핸들러 상태 카운터의 차이점을 조사하는 것입니다.
쿼리할 때마다 전체 테이블을 스캔하지 않는지 확인하세요.

"--no-ascend"를 사용하면 탐색 후 스캔 최적화를 부분적으로 또는 전체적으로 비활성화할 수 있습니다.
그리고 "--ascend-first". 때로는 다중 열 키의 경우 이것이 더 효율적일 수 있습니다. BE
pt-archiver는 선택하고 스캔하는 인덱스의 시작 부분에서 시작하도록 구축되었음을 인식합니다.
앞으로만 가능합니다. 이로 인해 니블링하려는 경우 긴 테이블 스캔이 발생할 수 있습니다.
선호하는 인덱스가 아닌 다른 인덱스로 테이블의 끝을 삭제합니다. "--source"를 참조하고 읽으십시오.
귀하에게 해당되는 경우 "i" 부분에 대한 문서를 참조하세요.

퍼 코나 엑스트라DB 클러스터


pt-archiver는 Percona XtraDB Cluster(PXC) 5.5.28-23.7 이상에서 작동하지만
클러스터에 보관하기 전에 고려해야 할 세 가지 제한 사항은 다음과 같습니다.

커밋 오류
pt-archiver는 트랜잭션을 커밋할 때 오류를 확인하지 않습니다. PXC에 대한 커밋
실패하지만 이 문제가 발생하면 도구는 아직 트랜잭션을 확인하거나 재시도하지 않습니다.
이런 일이 발생하면 도구가 죽습니다.

MyISAM 테이블
MyISAM 테이블 보관은 작동하지만 PXC의 MyISAM 지원은 아직 실험 단계입니다.
이 릴리스의 시간입니다. PXC, MyISAM 테이블에는 몇 가지 알려진 버그가 있습니다.
"AUTO_INCREMENT" 열. 따라서 보관이 직접적으로 발생하지 않도록 해야 합니다.
또는 MyISAM 테이블에 대한 기본 "AUTO_INCREMENT" 값을 간접적으로 사용하게 됩니다.
예를 들어, "--columns"를 사용하고 "--dest"를 사용하면 이 문제가 발생합니다.
"AUTO_INCREMENT" 열은 포함되지 않습니다. 도구는 이를 확인하지 않습니다!

비클러스터 옵션
특정 옵션은 작동할 수도 있고 작동하지 않을 수도 있습니다. 예를 들어, 클러스터 노드가 클러스터 노드도 아닌 경우
슬레이브인 경우 "--check-slave-lag"는 작동하지 않습니다. 그리고 PXC 테이블은 일반적으로
InnoDB, 그러나 InnoDB는 "INSERT DELAYED"를 지원하지 않으며 "--delayed-insert"는 지원하지 않습니다.
일하다. 다른 옵션도 작동하지 않을 수 있지만 도구는 해당 옵션을 확인하지 않습니다.
실제 클러스터에 보관하기 전에 테스트 클러스터에서 보관을 테스트해야 합니다.

출력


"--progress"를 지정하면 헤더 행과 간격으로 상태 출력이 출력됩니다.
상태 출력의 각 행에는 현재 날짜와 시간, 몇 초가 표시됩니까?
아카이버가 실행 중인지, 아카이버가 아카이브한 행 수

"--statistics"를 지정하면 "pt-archiver"는 도움이 되는 타이밍 및 기타 정보를 출력합니다.
아카이빙 프로세스 중 가장 많은 시간이 걸리는 부분을 식별합니다.

오류 처리


pt-archiver는 신호를 포착하고 정상적으로 종료하려고 시도합니다. 예를 들어, 당신이 그것을 보낸다면
SIGTERM(UNIX 계열 시스템에서는 Ctrl-C)을 사용하면 신호를 포착하고 다음에 대한 메시지를 인쇄합니다.
신호를 보내고 상당히 정상적으로 종료됩니다. "--analyze" 또는 "--optimize"는 실행되지 않습니다.
완료하는 데 시간이 오래 걸릴 수 있기 때문입니다. 다른 모든 코드는 정상적으로 실행됩니다.
통화 포함 after_finish() 모든 플러그인에서("확장" 참조)

즉, 신호가 포착되면 기본 보관 루프를 벗어나 건너뜁니다.
최적화/분석합니다.

옵션


"--dest", "--file" 또는 "--purge" 중 하나 이상을 지정합니다.

"--ignore"와 "--replace"는 함께 사용할 수 없습니다.

"--txn-size"와 "--commit-each"는 상호 배타적입니다.

"--low-priority-insert" 및 "--delayed-insert"는 상호 배타적입니다.

"--share-lock"과 "--for-update"는 상호 배타적입니다.

"--analyze"와 "--optimize"는 동시에 사용할 수 없습니다.

"--no-ascend"와 "--no-delete"는 상호 배타적입니다.

COPY가 yes인 경우 "--dest"의 DSN 값은 "--source"의 값으로 기본 설정됩니다.

--분석하다
유형: 문자열

나중에 "--source" 및/또는 "--dest"에서 ANALYZE TABLE을 실행합니다.

완료 후 ANALYZE TABLE을 실행합니다. 인수는 임의의 문자열입니다. 그 경우
문자 's'가 포함되어 있으면 소스가 분석됩니다. 'd'가 포함된 경우
목적지가 분석됩니다. 둘 중 하나 또는 둘 다를 지정할 수 있습니다. 예를 들어,
다음은 두 가지를 모두 분석합니다.

--분석=ds

보다http://dev.mysql.com/doc/en/analyze-table.html> ANALYZE TABLE에 대한 자세한 내용은

--상승 우선
인덱스의 첫 번째 열만 오름차순입니다.

오름차순 인덱스 최적화("--no-ascend" 참조)를 사용하고 싶지만 사용하지 않는 경우
대규모 다중 열 인덱스를 오름차순으로 오버헤드가 발생하려는 경우 다음을 사용할 수 있습니다.
pt-archiver에게 인덱스의 가장 왼쪽 열만 올라가도록 지시하는 옵션입니다. 이것은 할 수 있다
지수를 전혀 오르지 않는 것보다 상당한 성능 향상을 제공합니다.
전체 지수를 오름차순으로 드는 비용을 피합니다.

이것이 플러그인과 어떻게 상호 작용하는지에 대한 논의는 "확장"을 참조하십시오.

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

--완충기
출력을 "--file"로 버퍼링하고 커밋 시 플러시합니다.

"--file"에 대한 자동 플러시를 비활성화하고 트랜잭션이 발생할 때만 "--file"을 디스크에 플러시합니다.
커밋합니다. 이는 일반적으로 파일이 운영 체제에 의해 블록 플러시됨을 의미합니다.
커밋 사이에 디스크에 대한 암시적 플러시가 있을 수도 있습니다. 기본값은
모든 행 다음에 "--file"을 디스크에 플러시합니다.

위험은 충돌로 인해 데이터가 손실될 수 있다는 것입니다.

"--buffer"를 사용하여 확인한 성능 향상은 약 5~15%입니다.
귀하의 마일리지가 다를 수 있습니다.

--대량 삭제
단일 명령문으로 각 청크를 삭제합니다("--commit-each" 암시).

단일 "DELETE" 문을 사용하여 각 행 청크를 대량으로 삭제합니다. 성명서
청크의 첫 번째 행과 마지막 행 사이의 모든 행을 삭제합니다. 그것은 암시한다
"--commit-each", 한 번에 하나씩 행을 "INSERT"하는 것은 좋지 않은 생각이므로
대량 "DELETE" 전에 커밋하세요.

일반적인 방법은 기본 키로 모든 행을 삭제하는 것입니다. 대량 삭제는 다음과 같습니다.
훨씬 더 빠릅니다. 그들 또한 수도 지원 be 빠른 복잡한 "WHERE" 절이 있는 경우.

이 옵션은 행 청크가 삭제될 때까지 모든 "DELETE" 처리를 완전히 연기합니다.
완성된. 소스에 플러그인이 있는 경우 해당 "before_delete" 메소드는
라고 불리는. 대신 "before_bulk_delete" 메서드가 나중에 호출됩니다.

경고: 소스에 때때로 true를 반환하지 않는 플러그인이 있는 경우
"is_archivable()", 이 옵션의 기능을 이해하는 경우에만 이 옵션을 사용해야 합니다. 만약에
플러그인은 "pt-archiver"에게 행을 보관하지 말라고 지시하지만 여전히 삭제됩니다.
대량삭제!

--[아니요]대량 삭제 제한
기본값: 예

"--bulk-delete" 문에 "--limit"를 추가합니다.

이것은 고급 옵션이므로 자신이 무엇인지 알지 않는 한 비활성화해서는 안 됩니다.
하고 있고 왜! 기본적으로 "--bulk-delete"는 "--limit" 절을 대량 항목에 추가합니다.
SQL 문을 삭제합니다. 어떤 경우에는 다음을 지정하여 이 절을 생략할 수 있습니다.
"--대량 삭제 제한 없음". "--limit"는 계속 지정해야 합니다.

--대량 삽입
LOAD DATA INFILE을 사용하여 각 청크를 삽입합니다("--bulk-delete" "--commit-each" 암시).

"LOAD DATA LOCAL INFILE"을 사용하여 각 행 청크를 삽입합니다. 이보다 훨씬 빠를 수도 있습니다.
"INSERT" 문을 사용하여 한 번에 행을 삽입합니다. 생성하여 구현됩니다.
각 행 청크에 대한 임시 파일을 작성하고 대신 이 파일에 행을 씁니다.
삽입합니다. 청크가 완료되면 행을 업로드합니다.

데이터의 안전을 보호하기 위해 이 옵션은 강제로 대량 삭제를 사용합니다. 그것
행을 행에 삽입하기 전에 발견된 각 행을 삭제하는 것은 안전하지 않습니다.
먼저 목적지. 대량 삭제를 강제하면 다음 때까지 삭제가 대기됩니다.
삽입 성공했습니다.

"--low-priority-insert", "--replace" 및 "--ignore" 옵션은 이 작업에 사용됩니다.
옵션이 있지만 "--delayed-insert"는 그렇지 않습니다.

"LOAD DATA LOCAL INFILE"이 "사용된 명령이 아닙니다" 줄에 오류를 발생시키는 경우
이 MySQL 버전에서 허용됩니다.", "L" DSN 옵션에 대한 설명서를 참조하세요.

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

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

MySQL에서 알려진 문자 세트만 인식된다는 점에 유의하세요. 예를 들어 "UTF8"은
작동하지만 "UTF-8"은 작동하지 않습니다.

"--[no]check-charset"도 참조하세요.

--[아니요]검사 문자 집합
기본값: 예

연결 및 테이블 문자 집합이 동일한지 확인하세요. 이 검사를 비활성화하면 다음과 같은 일이 발생할 수 있습니다.
텍스트가 한 문자 세트에서 다른 문자 세트로 잘못 변환됩니다(보통
utf8 ~ latin1)으로 인해 데이터 손실이나 mojibake가 발생할 수 있습니다. 이 검사를 비활성화하면 다음과 같은 일이 발생할 수 있습니다.
문자 집합 변환을 의도할 때 유용하거나 필요합니다.

--[아니요]검사 열
기본값: 예

"--source"와 "--dest"에 동일한 열이 있는지 확인하세요.

기본적으로 활성화되어 있습니다. pt-archiver가 소스 및 대상 테이블을 확인하게 합니다.
동일한 열이 있습니다. 열 순서, 데이터 유형 등을 확인하지 않습니다.
소스의 모든 열이 대상에 있는지 확인하고 그 반대의 경우도 마찬가지입니다. 만약에
차이점이 있으면 pt-archiver가 오류와 함께 종료됩니다.

이 확인을 비활성화하려면 --no-check-columns를 지정합니다.

--체크-간격
유형: 시간; 기본값: 1초

"--check-slave-lag"가 제공되면 도구가 각 일시 중지되는 시간을 정의합니다.
슬레이브가 뒤처지고 있음을 발견한 순간입니다.
이 확인은 100개 행마다 수행됩니다.

--체크-슬레이브-래그
유형: 문자열; 반복 가능: 예

지정된 DSN의 슬레이브 지연이 "--max-lag"보다 작아질 때까지 보관을 일시 중지합니다. 이것
둘 이상의 슬레이브를 검사하기 위해 옵션을 여러 번 지정할 수 있습니다.

--열
약식: -c; 유형: 배열

보관할 열의 쉼표로 구분된 목록입니다.

가져올 열 목록을 쉼표로 구분하여 지정하고, 파일에 쓰고, 삽입합니다.
대상 테이블. 지정된 경우 pt-archiver는 그렇지 않은 경우 다른 열을 무시합니다.
인덱스를 오름차순으로 만들거나 행을 삭제하려면 "SELECT" 문에 추가해야 합니다.
이러한 추가 열을 내부적으로 가져와 사용하지만
파일이나 대상 테이블에. 그것 하지 플러그인에 전달하세요.

"--기본 키 전용"도 참조하세요.

--커밋-각각
가져온 행과 보관된 행의 각 집합을 커밋합니다("--txn-size" 비활성화).

각 행 집합이 보관된 후 트랜잭션을 커밋하고 "--file"을 플러시합니다.
다음 행 세트를 가져오기 전, 그리고 "--sleep"이 지정된 경우 잠들기 전입니다.
"--txn-size"를 비활성화합니다. "--limit"를 사용하여 트랜잭션 크기를 제어합니다.
"--커밋-각각".

이 옵션은 "--limit"와 "--txn-size"를 동일한 값으로 만드는 지름길로 유용합니다.
하지만 더 중요한 것은 더 많은 정보를 검색하는 동안 트랜잭션이 열려 있는 것을 방지한다는 것입니다.
행. 예를 들어, 시작부터 오래된 행을 보관한다고 가정해 보겠습니다.
"--limit" 1000 및 "--txn-size" 1000이 포함된 대형 테이블. 일정 기간 동안 찾은 후
한 번에 1000개의 행을 보관하면 pt-archiver는 마지막 999개의 행을 찾아서 보관합니다.
그런 다음 다음 SELECT를 실행하여 더 많은 행을 찾습니다. 그러면 나머지 부분이 스캔됩니다.
테이블에 있지만 더 이상 행을 찾지 못합니다. 매우 오랫동안 거래를 진행해 왔습니다.
어쨌든 끝났다고 판단하는 데에만 시간이 걸립니다. "--commit-each"를 사용하면 다음을 방지할 수 있습니다.
이.

--구성
유형: 배열

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

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

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

--지연-삽입
INSERT 문에 DELAYED 수정자를 추가합니다.

INSERT 또는 REPLACE 문에 DELAYED 수정자를 추가합니다. 보다
<http://dev.mysql.com/doc/en/insert.html> 자세한 내용은.

--목적지
유형: DSN

보관할 테이블을 지정하는 DSN입니다.

이 항목은 pt-archiver가 아카이브된 행을 삽입할 테이블을 지정합니다.
"--원천". "--source"와 동일한 key=val 인수 형식을 사용합니다. 가장 많이 누락됨
값의 기본값은 "--source"와 동일한 값이므로 옵션을 반복할 필요가 없습니다.
이는 "--source"와 "--dest"에서 동일합니다. "--help" 옵션을 사용하여 어떤 내용인지 확인하세요.
값은 "--source"에서 복사됩니다.

경고: 기본 옵션 파일(F)에 대한 소켓을 정의하는 DSN 옵션을 사용합니다.
"--source"를 사용하면 pt-archiver가 다른 소켓이 아닌 한 해당 소켓을 사용하여 "--dest"에 연결됩니다.
"--dest"에 대한 소켓이 지정되었습니다. 이는 pt-archiver가 잘못 연결될 수 있음을 의미합니다.
"--dest"에 연결되면 "--source"로 연결됩니다. 예를 들어:

--source F=host1.cnf,D=db,t=tbl --dest h=host2

pt-archiver가 "--dest", host2에 연결되면 "--source"를 통해 연결됩니다.
Host1, 소켓은 host1.cnf에 정의되어 있습니다.

-건조
아무 것도 하지 않고 쿼리를 인쇄하고 종료합니다.

사용할 파일 이름과 SQL 문을 인쇄한 후 pt-archiver가 종료됩니다.

--파일
유형: 문자열

보관할 파일 날짜 형식()-형식과 유사합니다.

보관된 행을 쓸 파일 이름입니다. MySQL의 하위 집합 날짜 형식() 서식
다음과 같이 파일 이름에 코드가 허용됩니다.

%d 일, 숫자(01..31)
%H 시간(00..23)
%i 분, 숫자(00..59)
%m 월, 숫자(01..12)
%s초(00..59)
%Y 연도, 숫자, XNUMX자리

다음과 같은 추가 형식 코드도 사용할 수 있습니다.

%D 데이터베이스 이름
%t 테이블 이름

예:

--file '/var/log/archive/%Y-%m-%d-%D.%t'

파일 내용은 설명된 대로 SELECT INTO OUTFILE에서 사용되는 것과 동일한 형식입니다.
MySQL 매뉴얼에서: 줄 바꿈으로 끝나는 행, 탭으로 끝나는 열, NULL
문자는 \N으로 표시되고 특수 문자는 \로 이스케이프됩니다. 이렇게 하면
LOAD DATA INFILE의 기본 설정으로 파일을 다시 로드합니다.

파일 상단에 열 헤더를 추가하려면 "--header"를 참조하세요. 파일이 자동으로
기본적으로 플러시됩니다. "--버퍼"를 참조하세요.

--업데이트용
SELECT 문에 FOR UPDATE 수정자를 추가합니다.

자세한 내용은 다음을 참조하세요.http://dev.mysql.com/doc/en/innodb-locking-reads.html>.

--헤더
"--file" 상단에 열 헤더를 인쇄합니다.

"--file"로 지정된 파일의 첫 번째 줄로 열 이름을 씁니다. 파일의 경우
존재하지만 헤더를 쓰지 않습니다. 이렇게 하면 LOAD DATA INFILE을 사용하여 파일을 로드할 수 있게 유지됩니다.
더 많은 출력을 추가하는 경우.

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

--높은 우선순위 선택
SELECT 문에 HIGH_PRIORITY 수정자를 추가합니다.

보다http://dev.mysql.com/doc/en/select.html> 자세한 내용은.

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

호스트에 연결합니다.

--무시하다
INSERT 문에는 IGNORE를 사용하세요.

"--dest"에 대한 INSERT가 INSERT IGNORE가 되도록 합니다.

--한계
유형: 정수; 기본값: 1

명령문당 가져오고 보관할 행 수입니다.

행을 검색하는 SELECT 문에서 반환되는 행 수를 제한합니다.
보관소. 기본값은 XNUMX개 행입니다. 한도를 늘리는 것이 더 효율적일 수 있지만
드물게 보관하고 많은 행을 건너뛰는 경우 주의하세요. 이는 잠재적으로
스토리지 엔진, 트랜잭션에 따라 다른 쿼리와 더 많은 경합이 발생합니다.
격리 수준 및 "--for-update"와 같은 옵션.

--현지의
binlog에 OPTIMIZE 또는 ANALYZE 쿼리를 작성하지 마세요.

ANALYZE 및 OPTIMIZE 쿼리에 NO_WRITE_TO_BINLOG 수정자를 추가합니다. "--분석"을 참조하세요.
자세한 내용은.

--낮은 우선순위 삭제
DELETE 문에 LOW_PRIORITY 수정자를 추가합니다.

보다http://dev.mysql.com/doc/en/delete.html> 자세한 내용은.

--낮은 우선순위 삽입
INSERT 또는 REPLACE 문에 LOW_PRIORITY 수정자를 추가합니다.

보다http://dev.mysql.com/doc/en/insert.html> 자세한 내용은.

--최대-흐름-ctl
유형 : 플로트

--max-lag와 다소 유사하지만 PXC 클러스터용입니다. 평균 클러스터 소요 시간 확인
흐름 제어를 위해 일시 ​​중지하고 표시된 백분율을 초과하면 도구를 일시 중지합니다.
옵션에서. 기본값은 흐름 제어 확인이 아닙니다. 이 옵션은 PXC에 사용할 수 있습니다.
버전 5.6 이상.

--최대 지연
유형: 시간; 기본값: 1초

"--check-slave-lag"에 의해 지정된 슬레이브가 지연되면 아카이브를 일시 중지합니다.

이 옵션을 사용하면 pt-archiver가 슬레이브를 가져오려고 할 때마다 슬레이브를 확인하게 됩니다.
또 다른 행. 슬레이브의 래그가 옵션 값보다 크거나 슬레이브가
실행 중이 아닙니다(따라서 지연 시간은 NULL임). pt-table-checksum은 "--check-interval" 동안 휴면 상태입니다.
초 후에 지연을 다시 살펴봅니다. 노예가 잡힐 때까지 반복됩니다.
그런 다음 행을 가져와서 보관합니다.

이 옵션을 사용하면 "--sleep" 또는 "--sleep-coef"가 필요하지 않을 수 있습니다.

--상승하지 않음
오름차순 인덱스 최적화를 사용하지 마십시오.

기본 오름차순 인덱스 최적화로 인해 "pt-archiver"가 반복적으로 최적화됩니다.
"SELECT" 쿼리는 이전 쿼리가 끝난 인덱스를 찾은 다음 스캔합니다.
매번 테이블의 처음부터 스캔하는 대신에 따라 가세요. 이것은
일반적으로 반복 액세스에 적합한 전략이기 때문에 기본적으로 활성화되어 있습니다.

큰 다중 열 인덱스로 인해 WHERE 절이 충분히 복잡해질 수 있습니다.
이는 실제로 덜 효율적일 수 있습니다. 예를 들어 XNUMX열로 구성된 PRIMARY KEY를 생각해 보세요.
(a, b, c, d)에. 마지막 쿼리가 끝난 위치에서 시작하는 WHERE 절은 다음과 같습니다.

어디에서 (a > ?)
또는 (a = ? AND b > ?)
또는(a = ? AND b = ? AND c > ?)
또는(a = ? AND b = ? AND c = ? AND d >= ?)

자리 표시자를 값으로 채우면 메모리와 CPU가 사용되며 네트워크 트래픽이 추가되고
구문 분석 오버헤드로 인해 MySQL이 쿼리를 최적화하기가 더 어려워질 수 있습니다. XNUMX열
key는 큰 문제가 아니지만 모든 열이 "NULL"을 허용하는 XNUMX열 키는
있다.

단순히 행을 제거한다는 것을 알고 있다면 인덱스 오름차순이 필요하지 않을 수도 있습니다.
테이블의 처음부터 덩어리로 시작하되 구멍을 남기지 않으므로
실제로 테이블의 시작 부분이 가장 효율적인 작업입니다.

"--ascend-first"도 참조하세요. 이것이 어떻게 상호 작용하는지에 대한 논의는 "확장"을 참조하십시오.
플러그인으로.

--삭제 불가
보관된 행을 삭제하지 마세요.

"pt-archiver"가 행을 처리한 후 행을 삭제하지 않도록 합니다. 이는 허용되지 않습니다
"--no-ascend", 둘 다 활성화하면 무한 루프가 발생하기 때문입니다.

소스 DSN에 플러그인이 있는 경우 "before_delete" 메소드가 호출됩니다.
"pt-archiver"가 삭제를 실행하지 않더라도. 자세한 내용은 "확장"을 참조하세요.
플러그인.

--최적화
유형: 문자열

나중에 "--source" 및/또는 "--dest"에서 OPTIMIZE TABLE을 실행합니다.

완료 후 OPTIMIZE TABLE을 실행합니다. 옵션 구문은 "--analyze"를 참조하세요.
<http://dev.mysql.com/doc/en/optimize-table.html> OPTIMIZE TABLE에 대한 자세한 내용은 여기를 참조하세요.

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

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

--pid
유형: 문자열

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

--플러그인
유형: 문자열

일반 플러그인으로 사용할 Perl 모듈 이름입니다.

범용 플러그인의 Perl 모듈 이름을 지정합니다. 현재는 이것만 사용됩니다
통계의 경우("--statistics" 참조) "new()" 및 "statistics()" 메서드가 있어야 합니다.

"new( src =" $src, dst => $dst, opts => $o )> 메소드는 소스를 가져오고
연결별 DSN과 마찬가지로 대상 DSN 및 해당 데이터베이스 연결
플러그인은 그렇습니다. 또한 명령줄에 액세스하기 위한 OptionParser 개체($o)를 가져옵니다.
옵션(예: "$o-"get('purge');>).

"statistics(\%stats, $time)" 메소드는 수집된 통계의 해시 참조를 가져옵니다.
보관 작업 및 전체 작업이 시작된 시간입니다.

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

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

--기본 키만
기본 키 열만 해당됩니다.

기본 키 열과 함께 "--columns"를 지정하는 단축키입니다. 이것은
행을 제거하려는 경우 효율성; 전체 행을 가져오는 것을 방지합니다.
"DELETE" 문에는 기본 키 열만 필요합니다. "--purge"도 참조하세요.

--진전
유형 : int

X 행마다 진행 정보를 인쇄합니다.

현재 시간, 경과 시간, X 행마다 보관된 행을 인쇄합니다.

--숙청
보관하는 대신 제거합니다. "--file" 및 "--dest"를 생략할 수 있습니다.

"--file" 또는 "--dest" 인수 없이 보관을 허용합니다. 이는 사실상 제거입니다.
행이 방금 삭제되었기 때문입니다.

행만 제거하려면 테이블의 기본 키 열을 지정하는 것이 좋습니다.
"--기본 키 전용"을 사용합니다. 이렇게 하면 서버에서 모든 열을 가져오는 것이 방지됩니다.
이유없이.

--빠른 삭제
DELETE 문에 QUICK 수정자를 추가합니다.

보다http://dev.mysql.com/doc/en/delete.html> 자세한 내용은. 에 명시된 바와 같이
문서에 따르면 DELETE QUICK 다음에 OPTIMIZE를 사용하는 것이 더 빠를 수도 있습니다.
테이블. 이를 위해 "--optimize"를 사용할 수 있습니다.

--조용한
약식: -q

"--statistics"와 같은 출력을 인쇄하지 마십시오.

"--statistics" 출력을 포함하여 일반 출력을 억제하지만 억제하지는 않습니다.
"--why-quit"의 출력.

--바꾸다
"--dest"에 대한 INSERT가 REPLACE로 기록되도록 합니다.

--재시도
유형: 정수; 기본값: 1

시간 초과 또는 교착 상태당 재시도 횟수입니다.

InnoDB 잠금이 있을 때 pt-archiver가 재시도해야 하는 횟수를 지정합니다.
대기 시간이 초과되었거나 교착 상태입니다. 재시도 횟수가 소진되면 pt-archiver는 다음과 같이 종료됩니다.
오류.

여러 항목을 혼합하여 보관할 때 어떤 일이 발생하길 원하는지 신중하게 고려하세요.
트랜잭션 및 비트랜잭션 스토리지 엔진. "--dest"에 대한 INSERT 및
DELETE from "--source"는 별도의 연결에 있으므로 실제로는 그렇지 않습니다.
동일한 서버에 있더라도 동일한 거래에 참여합니다. 그러나 pt-
아카이버는 코드로 간단한 분산 트랜잭션을 구현하므로 커밋과 롤백이 가능합니다.
두 연결에서 원하는 대로 발생해야 합니다.

현재로서는 트랜잭션 저장소의 오류를 처리하기 위한 코드를 작성하지 않았습니다.
InnoDB 이외의 엔진. 필요한 경우 해당 기능을 요청하세요.

--실행 시간
유형: 시간

나가기 전에 달리는 시간.

선택적 접미사 s=초, m=분, h=시간, d=일; 접미사가 없으면 s가 사용됩니다.

--[아니요] 안전 자동 증가
기본값: 예

최대 AUTO_INCREMENT를 가진 행을 보관하지 마세요.

pt-archiver가 다음과 같은 경우 최신 행을 제거하지 못하도록 추가 WHERE 절을 추가합니다.
단일 열 AUTO_INCREMENT 키를 오름차순으로 만듭니다. 이는 재사용을 방지합니다.
서버가 다시 시작되면 AUTO_INCREMENT 값이 설정되며 기본적으로 활성화됩니다.

추가 WHERE 절에는 현재 자동 증가 열의 최대값이 포함되어 있습니다.
아카이브 또는 제거 작업의 시작입니다. pt-archiver 동안 새 행이 삽입되는 경우
실행 중이면 해당 항목이 표시되지 않습니다.

--보초
유형: 문자열; 기본값: /tmp/pt-archiver-sentinel

이 파일이 있으면 종료합니다.

"--sentinel"로 지정된 파일이 있으면 pt-archiver가 중지됩니다.
보관하고 종료합니다. 기본값은 /tmp/pt-archiver-sentinel입니다. 당신은 이것을 찾을 수도 있습니다
필요한 경우 크론 작업을 정상적으로 중지하는 데 편리합니다. "--stop"도 참조하세요.

--set-vars
유형: 배열

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

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

wait_timeout=10000

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

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

--공유 잠금
SELECT 문에 LOCK IN SHARE MODE 수정자를 추가합니다.

보다http://dev.mysql.com/doc/en/innodb-locking-reads.html>.

--외래 키 검사 건너뛰기
SET FOREIGN_KEY_CHECKS=0을 사용하여 외래 키 검사를 비활성화합니다.

--잠
유형 : int

가져오기 사이의 수면 시간.

SELECT 문 사이에 대기할 시간을 지정합니다. 기본값은 잠을 자지 않는 것입니다.
모두. 트랜잭션은 커밋되지 않으며 "--file" 파일은 플러시되지 않습니다.
자고 있는. 이를 제어하려면 "--txn-size"를 참조하세요.

"--commit-each"를 지정하면 절전 모드 전에 커밋 및 플러시가 발생합니다.

--수면 계수
유형 : 플로트

"--sleep"을 마지막 SELECT 시간의 배수로 계산합니다.

이 옵션을 지정하면 pt-archiver는 마지막 쿼리 시간 동안 절전 모드로 전환됩니다.
SELECT에 지정된 계수를 곱합니다.

이는 SELECT를 제한하는 약간 더 정교한 방법입니다.
SELECT에 소요되는 시간에 따라 각 SELECT 사이의 시간.

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

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

--원천
유형: DSN

보관할 테이블을 지정하는 DSN(필수) 이 인수는 DSN입니다. 보다
구문은 "DSN OPTIONS"입니다. 대부분의 옵션은 pt-archiver가 MySQL에 연결하는 방법을 제어합니다.
하지만 이 도구의 구문에는 몇 가지 확장된 DSN 옵션이 있습니다. D, t, 그리고 나
옵션은 보관할 테이블을 선택합니다.

--source h=my_server,D=my_database,t=my_tbl

a 옵션은 USE를 사용하여 연결의 기본값으로 설정할 데이터베이스를 지정합니다. 만약에
b 옵션이 true이면 SQL_LOG_BIN을 사용하여 이진 로깅을 비활성화합니다. m 옵션
외부 Perl 모듈이 제공할 수 있는 플러그형 작업을 지정합니다. 유일한
필요한 부분은 테이블입니다. 다른 부분은 책의 여러 곳에서 읽을 수 있습니다.
환경(예: 옵션 파일)

'i' 부분은 특별히 언급할 가치가 있습니다. 이는 pt-archiver에게 어떤 인덱스를 사용해야 하는지 알려줍니다.
스캔하여 보관하세요. 이는 SELECT의 FORCE INDEX 또는 USE INDEX 힌트에 나타납니다.
보관 가능한 행을 가져오는 데 사용되는 문입니다. 아무것도 지정하지 않으면 pt-archiver
좋은 인덱스를 자동으로 검색하며 존재하는 경우 "PRIMARY KEY"를 선호합니다. 내
일반적으로 이 방법은 잘 작동하므로 대부분의 경우 다음을 생략해도 됩니다.
'나' 부분.

인덱스는 테이블에 대한 반복 액세스를 최적화하는 데 사용됩니다. pt-archiver는 기억합니다
각 SELECT 문에서 검색한 마지막 행을 사용하여 WHERE를 구성합니다.
절은 지정된 인덱스의 열을 사용하여 MySQL이 시작하도록 허용해야 합니다.
잠재적으로 스캔하는 대신 마지막 항목이 끝난 다음 SELECT
각 연속 SELECT로 테이블의 시작. 외부에서 사용하는 경우
플러그인, 오름차순과 상호 작용하는 방법에 대한 설명은 "확장"을 참조하세요.
색인.

'a' 및 'b' 옵션을 사용하면 명령문이 바이너리를 통해 흐르는 방식을 제어할 수 있습니다.
통나무. 'b' 옵션을 지정하면 지정된 위치에서 바이너리 로깅이 비활성화됩니다.
연결. 'a' 옵션을 지정하면 연결은 지정된 항목을 "사용"합니다.
슬레이브가 바이너리 로그 이벤트를 실행하는 것을 방지하는 데 사용할 수 있는 데이터베이스
"--replicate-ignore-db" 옵션을 사용합니다. 이 두 가지 옵션은 서로 다른 방식으로 사용될 수 있습니다.
동일한 목표를 달성하기 위한 방법: 데이터를 마스터에서 보관하지만 마스터에는 그대로 둡니다.
노예. 예를 들어 마스터에서 제거 작업을 실행하고 이를 방지할 수 있습니다.
선택한 방법을 사용하여 슬레이브에서 발생합니다.

경고: 기본 옵션 파일(F)에 대한 소켓을 정의하는 DSN 옵션을 사용합니다.
"--source"를 사용하면 pt-archiver가 다른 소켓이 아닌 한 해당 소켓을 사용하여 "--dest"에 연결됩니다.
"--dest"에 대한 소켓이 지정되었습니다. 이는 pt-archiver가 잘못 연결될 수 있음을 의미합니다.
"--dest"에 연결하려는 경우 "--source"로 설정합니다. 예를 들어:

--source F=host1.cnf,D=db,t=tbl --dest h=host2

pt-archiver가 "--dest", host2에 연결되면 "--source"를 통해 연결됩니다.
Host1, 소켓은 host1.cnf에 정의되어 있습니다.

--통계
타이밍 통계를 수집하고 인쇄합니다.

pt-archiver가 수행하는 작업에 대한 타이밍 통계를 수집하도록 합니다. 이러한 통계
"--plugin"으로 지정된 플러그인에서 사용할 수 있습니다.

"--quiet"을 지정하지 않으면 "pt-archiver"는 종료 시 통계를 인쇄합니다. 그만큼
통계는 다음과 같습니다.

Started at 2008-07-18T07:18:53, ended at 2008-07-18T07:18:53
소스: D=db,t=테이블
4 선택
삽입 4
4 삭제
작업 횟수 시간 비율
커밋 10 0.1079 88.27
5 0.0047 3.87 선택
4개 삭제 0.0028 2.29
4 0.0028 2.28 삽입
기타 0 0.0040 3.29

처음 두 개(또는 세 개) 줄에는 시간과 소스 및 대상 테이블이 표시됩니다. 그만큼
다음 세 줄은 가져오고 삽입되고 삭제된 행 수를 보여줍니다.

나머지 줄에는 개수와 타이밍이 표시됩니다. 열은 작업, 합계입니다.
해당 작업의 시간이 측정된 횟수, 소요된 총 시간 및 백분율
프로그램의 총 런타임. 행은 총 시간 내림차순으로 정렬됩니다. 그만큼
마지막 행은 어떤 것에도 명시적으로 귀속되지 않은 나머지 시간입니다. 조치는
명령줄 옵션에 따라 다릅니다.

"--why-quit"이 주어지면 동작이 약간 변경됩니다. 이 옵션을 사용하면
더 이상 행이 없기 때문에 종료 이유를 인쇄합니다.

이 옵션에는 Perl의 핵심 부분인 표준 Time::HiRes 모듈이 필요합니다.
합리적으로 새로운 Perl 릴리스.

--멈추다
센티넬 파일을 만들어 인스턴스 실행을 중지합니다.

pt-archiver가 "--sentinel"로 지정된 sentinel 파일을 생성하고 종료하도록 합니다.
이것은 감시하는 실행 중인 모든 인스턴스를 중지하는 효과가 있어야 합니다.
동일한 센티넬 파일.

--txn-크기
유형: 정수; 기본값: 1

트랜잭션당 행 수입니다.

각 트랜잭션의 크기(행 수)를 지정합니다. XNUMX은 거래를 비활성화합니다.
전부. pt-archiver는 이 많은 행을 처리한 후 두 행을 모두 커밋합니다.
"--source" 및 "--dest"가 주어지면 "--file"로 지정된 파일을 플러시합니다.

이 매개변수는 성능에 매우 중요합니다. 라이브 서버에서 보관하는 경우
예를 들어 과중한 OLTP 작업을 수행하는 경우 두 작업 사이에서 적절한 균형을 선택해야 합니다.
트랜잭션 크기 및 커밋 오버헤드. 거래 규모가 클수록 다음과 같은 가능성이 발생합니다.
잠금 경합 및 교착 상태가 더 많이 발생하지만 트랜잭션이 작을수록 더 자주 발생합니다.
커밋 오버헤드가 커질 수 있습니다. 아이디어를 드리기 위해 저는 작은 테스트 세트에서
pt-archiver를 작성하는 동안 작업한 결과 값이 500이므로 보관에 약 2가 걸렸습니다.
내 데스크탑 컴퓨터의 조용한 MySQL 인스턴스에서 1000개 행당 초,
디스크 및 다른 테이블에 보관. XNUMX 값으로 트랜잭션을 비활성화합니다.
자동 커밋을 켜면 성능이 천 행당 38초로 떨어졌습니다.

트랜잭션 스토리지 엔진에서 아카이브하거나 트랜잭션 스토리지 엔진으로 아카이브하지 않는 경우 다음을 수행할 수 있습니다.
pt-archiver가 커밋을 시도하지 않도록 트랜잭션을 비활성화합니다.

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

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

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

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

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

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

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

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

--어디
유형: 문자열

보관할 행을 제한하는 WHERE 절(필수)

보관되는 행을 제한하기 위해 WHERE 절을 지정합니다. 단어를 포함하지 마십시오.
어디. 쉘이 해석하지 못하도록 인수를 인용해야 할 수도 있습니다.
예 :

--여기서 'ts < 현재_날짜 - 간격 90일'

안전을 위해 "--where"가 필요합니다. WHERE 절이 필요하지 않은 경우 다음을 사용하세요.
"--어디" 1=1.

--왜-그만둬
행이 소진되지 않는 한 종료 이유를 인쇄합니다.

실행 이외의 이유로 종료되는 경우 pt-archiver가 메시지를 인쇄하도록 합니다.
보관할 행이 없습니다. "--run-time"을 사용하는 cron 작업이 있는 경우 유용할 수 있습니다.
예를 들어, pt-archiver가 이전에 완료되었는지 확인하려고 합니다.
시간이 부족합니다.

"--statistics"를 지정하면 동작이 약간 변경됩니다. 그것은 인쇄됩니다
더 이상 행이 없기 때문에 종료하는 이유입니다.

이 출력은 "--quiet"이 지정된 경우에도 인쇄됩니다. 그래서 "pt-archiver"를 넣을 수 있습니다
"cron" 작업을 수행하고 비정상적인 종료가 있는 경우 이메일을 받습니다.

dsn 옵션


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

· ㅏ

복사: 아니요

쿼리를 실행할 때 사용할 데이터베이스입니다.

· ㅏ

dsn: 문자 집합; 복사: 예

기본 문자 집합입니다.

· NS

복사: 아니요

true인 경우 SQL_LOG_BIN을 사용하여 binlog를 비활성화합니다.

· NS

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

테이블이 포함된 데이터베이스입니다.

· NS

dsn: mysql_read_default_file; 복사: 예

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

· h

dsn: 호스트; 복사: 예

호스트에 연결합니다.

· 나

복사: 예

사용할 인덱스입니다.

· 엘

복사: 예

LOAD DATA LOCAL INFILE을 명시적으로 활성화합니다.

어떤 이유로 일부 공급업체에서는 --enable-local-infile 없이 libmysql을 컴파일합니다.
명령문을 비활성화하는 옵션입니다. 이로 인해 다음과 같은 이상한 상황이 발생할 수 있습니다.
서버는 LOCAL INFILE을 허용하지만 클라이언트는 이를 사용하는 경우 예외를 발생시킵니다.

그러나 서버가 LOAD DATA를 허용하는 한 클라이언트는 이를 쉽게 다시 활성화할 수 있습니다. 보다
그리고
<http://search.cpan.org/~capttofu/DBD-mysql/lib/DBD/mysql.pm>. 이 옵션은
정확히.

이 옵션을 설정하면 오류가 발생하거나 차이가 발생하는 경우는 발견되지 않았습니다.
동작을 방지하기 위해 이 옵션은 기본적으로 켜져 있지 않습니다.

· 미디엄

복사: 아니요

플러그인 모듈 이름.

· NS

dsn: 비밀번호; 복사: 예

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

· 피

dsn: 포트; 복사: 예

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

· NS

dsn: mysql_socket; 복사: 예

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

· NS

복사: 예

보관할 원본/대상 테이블입니다.

· 유

dsn: 사용자; 복사: 예

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

확장


pt-archiver는 일부 로직 및/또는 일부 로직을 처리하기 위해 외부 Perl 모듈을 연결하여 확장 가능합니다.
행위. 'm'을 사용하여 "--source"와 "--dest" 모두에 대해 모듈을 지정할 수 있습니다.
사양의 일부입니다. 예를 들어:

--source D=테스트,t=test1,m=My::Module1 --dest m=My::Module2,t=test2

그러면 pt-archiver가 My::Module1 및 My::Module2 패키지를 로드하고 생성합니다.
그런 다음 보관 프로세스 중에 해당 인스턴스를 호출합니다.

"--plugin"을 사용하여 플러그인을 지정할 수도 있습니다.

모듈은 다음 인터페이스를 제공해야 합니다.

new(dbh => $dbh, db => $db_name, tbl => $tbl_name)
플러그인 생성자에는 데이터베이스 핸들에 대한 참조가 전달됩니다.
이름, 테이블 이름. 플러그인은 pt-archiver가 플러그인을 연 직후에 생성됩니다.
연결 및 인수에 제공된 테이블을 검사하기 전에. 이는 다음을 제공합니다.
임시 테이블을 생성하고 채우거나 다른 설정 작업을 수행할 수 있는 기회를 플러그인하세요.

before_begin(cols => \@cols, allcols => \@allcols)
이 메소드는 pt-archiver가 행을 통해 반복을 시작하기 직전에 호출되며
보관하지만 다른 모든 설정 작업(테이블 구조 검사,
SQL 쿼리 설계 등). 이것은 pt-archiver가 플러그인에 알리는 유일한 시간입니다.
보관하는 동안 플러그인을 전달할 행의 열 이름입니다.

"cols" 인수는 사용자가 보관하도록 요청한 열 이름입니다.
기본값 또는 "--columns" 옵션을 사용합니다. "allcols" 인수는 열 목록입니다.
pt-archiver가 소스 테이블에서 가져올 모든 행의 이름입니다. 더 많이 가져올 수도 있습니다
자체적으로 사용하려면 일부 열이 필요하기 때문에 사용자가 요청한 열보다 열이 많습니다. 언제
후속 플러그인 함수는 행을 수신하며, 이는 모든 추가 항목을 포함하는 전체 행입니다.
열이 있는 경우 끝에 추가됩니다.

is_archivable(행 => \@row)
이 메서드는 각 행에 대해 호출되어 보관 가능 여부를 결정합니다. 이것
"--source"에만 적용됩니다. 인수는 arrayref로서 행 자체입니다. 만약
메소드가 true를 반환하면 행이 보관됩니다. 그렇지 않으면 건너뜁니다.

행을 건너뛰면 고유하지 않은 인덱스에 대한 문제가 추가됩니다. 일반적으로 pt-archiver는 다음을 사용합니다.
마지막으로 처리된 행을 스캔 시작 위치로 지정하도록 설계된 WHERE 절
다음 SELECT 문을 위해. false를 반환하여 행을 건너뛴 경우
is_archivable(), pt-archiver는 행이 여전히 남아 있기 때문에 무한 루프에 빠질 수 있습니다.
존재합니다. 따라서 "--source" 인수에 대한 플러그인을 지정하면 pt-archiver
WHERE 절을 약간 변경합니다. "보다 크거나 같음"에서 시작하는 대신
"마지막으로 처리된 행"으로 이동하면 "엄격히 큼"으로 시작됩니다. 이렇게 하면 작동합니다.
기본 키와 같은 고유 인덱스에서는 문제가 없지만 기본 키에서는 행을 건너뛸 수 있습니다(구멍이 남음).
고유하지 않은 인덱스 또는 인덱스의 첫 번째 열만 오름차순인 경우.

"pt-archiver"는 "--no-delete"를 지정하면 동일한 방식으로 절을 변경합니다.
다시 무한 루프가 가능하기 때문입니다.

"--bulk-delete" 옵션을 지정하고 이 메서드에서 false를 반환하는 경우,
"pt-archiver"는 원하는 것을 수행하지 못할 수도 있습니다. 행은 보관되지 않지만
삭제되었습니다. 대량 삭제는 행 범위에서 작동하고 어떤 행이 삭제되었는지 알 수 없기 때문입니다.
유지하도록 선택한 플러그인입니다.

"--bulk-insert" 옵션을 지정하면 이 메서드의 반환 값이 영향을 미칩니다.
대량 삽입을 위해 행이 임시 파일에 기록되는지 여부, 따라서 대량 삽입
예상대로 작동합니다. 그러나 대량 삽입에는 대량 삭제가 필요합니다.

before_delete(행 => \@행)
이 메서드는 각 행이 삭제되기 직전에 호출됩니다. 이는 다음에만 적용됩니다.
"--원천". 이는 삭제와 같은 종속성을 처리하기에 좋은 장소입니다.
삭제하려는 행에 외래 키가 있는 항목입니다. 당신은 또한 사용할 수 있습니다
이는 모든 종속 테이블을 재귀적으로 보관하기 위한 것입니다.

이 플러그인 메소드는 "--no-delete"가 지정된 경우에도 호출되지만 다음과 같은 경우에는 호출되지 않습니다.
"--대량 삭제"가 제공됩니다.

before_bulk_delete(first_row => \@row, last_row => \@row)
이 메서드는 대량 삭제가 실행되기 직전에 호출됩니다. 이는 다음과 유사합니다.
인수가 범위의 첫 번째 행과 마지막 행인 경우를 제외하고 "before_delete" 메서드
삭제됩니다. "--no-delete"가 주어져도 호출됩니다.

before_insert(행 => \@행)
이 메서드는 각 행이 삽입되기 직전에 호출됩니다. 이는 다음에만 적용됩니다.
"--대상". 이를 사용하여 여러 테이블에 행을 삽입할 수 있습니다.
ON DUPLICATE KEY UPDATE 절을 사용하여 데이터 웨어하우스에 요약 테이블을 구축합니다.

"--bulk-insert"가 지정되면 이 메서드가 호출되지 않습니다.

before_bulk_insert(first_row => \@row, last_row => \@row, 파일 이름 =>
대량 삽입_파일 이름)
이 메서드는 대량 삽입이 실행되기 직전에 호출됩니다. 이는 다음과 유사합니다.
인수가 범위의 첫 번째 행과 마지막 행인 경우를 제외하고 "before_insert" 메서드
삭제됩니다.

custom_sth(행 => \@row, sql => $sql)
이 메소드는 행을 삽입하기 직전에 호출되지만 "전에_삽입()". 그것
원하는 경우 플러그인이 다른 "INSERT" 문을 지정할 수 있습니다. 반환
값(있는 경우)은 DBI 문 핸들이어야 합니다. "sql" 매개변수는 SQL 텍스트입니다.
기본 "INSERT" 문을 준비하는 데 사용됩니다. 이 메서드는 다음과 같은 경우 호출되지 않습니다.
"--bulk-insert"를 지정합니다.

값이 반환되지 않으면 기본 "INSERT" 문 핸들이 사용됩니다.

이 방법은 "--dest"에 지정된 플러그인에만 적용되므로 플러그인이 그렇지 않은 경우
예상한 대로 수행하려면 대상이 아닌 대상에 대해 지정했는지 확인하세요.
출처.

custom_sth_bulk(first_row => \@row, last_row => \@row, sql => $sql, 파일 이름 =>
$bulk_insert_filename)
"--bulk-insert"를 지정한 경우 이 메소드는 대량 삽입 직전에 호출됩니다.
삽입하지만 "뒤에"before_bulk_insert()"와 주장이 다릅니다.

이 메소드의 반환 값 등은 "custom_sth()" 방법.

after_finish()
이 메소드는 pt-archiver가 아카이브 루프를 종료하고 모든 데이터베이스를 커밋한 후에 호출됩니다.
"--file"을 처리하고 닫고 최종 통계를 인쇄하지만 pt-archiver가 실행되기 전에
ANALYZE 또는 OPTIMIZE("--분석" 및 "--최적화" 참조)

"--source" 및 "--dest" 모두에 대한 플러그인을 지정하면 pt-archiver가 구성하고 호출합니다.
before_begin(), 전화 after_finish() 두 플러그인에서 "--source" 순서로,
"--대상".

pt-archiver는 트랜잭션을 제어하고 플러그인이 커밋하거나 롤하지 않을 것이라고 가정합니다.
데이터베이스 핸들을 되돌립니다. 플러그인 생성자에 전달된 데이터베이스 핸들은
동일한 핸들 pt-archiver가 자체적으로 사용됩니다. "--source"와 "--dest"는 별개라는 점을 기억하세요
핸들.

샘플 모듈은 다음과 같습니다.

패키지 My::모듈;

하위 새 {
내 ( $class, %args ) = @_;
return bless(\%args, $class);
}

서브 before_begin {
내 ( $self, %args ) = @_;
# 나중에 사용할 수 있도록 열 이름을 저장합니다.
$self->{cols} = $args{cols};
}

하위 is_archivable {
내 ( $self, %args ) = @_;
# $args{row}로 고급 논리 수행
1가 돌아;
}

sub before_delete {} # 아무 조치도 취하지 않음
sub before_insert {} # 아무 조치도 취하지 않음
sub custom_sth {} # 아무 조치도 취하지 않음
sub after_finish {} # 아무 조치도 취하지 않음

1;

환경


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

PTDEBUG=1 pt-archiver ... > 파일 2>&1

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

시스템 요구 사항


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

onworks.net 서비스를 사용하여 온라인으로 pt-archiverp를 사용하세요.


무료 서버 및 워크스테이션

Windows 및 Linux 앱 다운로드

  • 1
    DivKit
    DivKit
    DivKit은 오픈 소스 서버 기반입니다.
    UI(SDUI) 프레임워크. 이를 통해 다음을 수행할 수 있습니다.
    서버 소스 업데이트 출시
    다양한 앱 버전. 또한,
    사용된 ...
    DivKit 다운로드
  • 2
    하위 변환기
    하위 변환기
    다양한 사이를 변환하는 유틸리티
    구독 형식. 섀도우로켓 사용자
    ss, ssr 또는 v2ray를 대상으로 사용해야 합니다.
    에 &remark=를 추가할 수 있습니다.
    텔레그램 같은 HT...
    하위 변환기 다운로드
  • 3
    튀기다
    튀기다
    SWASH는 범용 숫자
    비정상을 시뮬레이션하는 도구,
    비 정수압, 자유 표면,
    회전 흐름 및 수송 현상
    연안 해역에서 ...
    SWASH 다운로드
  • 4
    VBA-M(아카이브 - 현재 Github에 있음)
    VBA-M(아카이브 - 현재 Github에 있음)
    프로젝트가 다음으로 이동했습니다.
    https://github.com/visualboyadvance-m/visualboyadvance-m
    기능: 치트 생성 상태 저장멀티
    시스템, gba, gbc, gb, sgb 지원,
    sgb2Tu...
    VBA-M 다운로드(보관됨 - 현재 Github에 있음)
  • 5
    스태커
    스태커
    Linux 시스템 최적화 및 모니터링
    Github 리포지토리:
    https://github.com/oguzhaninan/Stacer.
    대상: 최종 사용자/데스크톱. 사용자
    인터페이스: Qt. 프로그래밍 라...
    스테이서 다운로드
  • 6
    오렌지 폭스
    오렌지 폭스
    TeamWinRecoveryProject(TWRP) 포크
    많은 추가 기능으로 재설계
    더 많은 기능: Treble 및
    트레블이 아닌 ROM최신 Oreo 커널,
    세워짐...
    오렌지폭스 다운로드
  • 더»

Linux 명령

  • 1
    클릭훅
    클릭훅
    aa-clickhook - 클릭 시스템 후크
    AppArmor 설명: 클릭할 때
    패키지가 설치되었습니다. 클릭하면 실행됩니다.
    시스템 및 사용자 후크. 클릭
    AppArmor 시스템 H...
    aa-clickhook 실행
  • 2
    aa-클릭 쿼리
    aa-클릭 쿼리
    aa-clickquery - 쿼리 프로그램
    click-apparmor 설명: 이 프로그램
    click-apparmor를 쿼리하는 데 사용됩니다.
    정보. 사용법: aa-clickquery
    --클릭-프라...
    aa-clickquery 실행
  • 3
    cqrlog
    cqrlog
    CQRLOG - 고급 로깅 ​​프로그램
    햄라디오 운영자 설명: CQRLOG
    기반의 고급 햄 라디오 로거입니다.
    MySQL 데이터베이스. 무선 제어 제공
    바 ...
    cqrlog 실행
  • 4
    크램프스왑
    크램프스왑
    Cramfsswap - CRAM의 스왑 엔디안
    파일 시스템(cramfs) ...
    crampsswap 실행
  • 5
    Fvwm이벤트
    Fvwm이벤트
    FvwmEvent - fvwm 이벤트 모듈...
    FvwmEvent 실행
  • 6
    Fvwm양식
    Fvwm양식
    FvwmForm - Fvwm용 입력 양식 모듈 ...
    FvwmForm 실행
  • 더»

Ad