pt-table-checksum이란?
- percona 사에서 제공하는 percona tools 중 하나
- 원래는 maatkit tools 의 부분인 mk-table-checksum
- 마스터와 리플리케이션이 일치하는지를 파악하기 위한 도구
설치
다음 URL을 참고해서 percona tools를 설치한다.
http://www.percona.com/doc/percona-toolkit/2.0/installation.html
동작방법
- 마스터 서버에 데이터베이스 'percona' 그 안에 'checksums'를 생성한다.
- 마스터 서버의 각 테이블의 checksum을 확인해 checksums에 기록해둔다.
- 리플리케이션을 통해서 테이블 checksums이 전파되면 pt-table-checksum은 각 슬레이브로 접근해서 슬레이브의 데이터와 리플리케이션을 통해서 만들어진 슬레이브의 'checksums' 테이블 간의 checksum을 비교한다.
- 그 결과를 화면에 출력한다.
권한
pt-table-checksum을 사용하려면 이 명령을 실행할 때 사용하는 계정이 각 서버마다 있어야 하고, 최소 아래와 같은 권한을 가지고 있어야 한다.
- process
- replication slave
- replication client
- select
- insert
- update
- delete
- create
다음 명령을 마스터에서 실행해서 checksum을 확인할 계정을 생성한다.
이 명령은 슬레이브로 전파되면서 리플리케이션에 참여하는 모든 서버에 동일한 계정을 생성한다.
아래 명령은 다음을 전제로 한다.
- 복제에 참여하는 모든 서버가 192.168.0.* 의 대역에 있다.
- pt-table-checksum은 replicawatch라는 계정을 이용한다.
CREATE USER 'replicawatch'@'192.168.0.%' IDENTIFIED BY '111111'; GRANT CREATE, SELECT, INSERT, UPDATE, DELETE, PROCESS, REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'replicawatch'@'192.168.0.%'; flush privileges;
실행
마스터의 host가 192.168.0.14이고 사용자가 test, 비밀번호가 database_password라고 할 때 아래와 같이 명령을 입력한다.
pt-table-checksum h=192.168.0.14,u=test2,p='database_password';
DIFFS 항목 중 0이 아닌 값이 나오면 실서버와 리플리케이션 간에 동기화에 문제가 발생한 것이다.
이런 경우 pt-table-sync를 이용해서 동기화를 할 수 있다.