2024. 11. 16. 00:30ㆍMySQL/Class
# pt-table-checksum 은 master와 slave의 데이터 정합성이 맞는지 체크하는 percona에서 제공하는 툴입니다.
1. 실행조건
(1) root 권한과 비슷한 계정이 필요합니다. 그래서 super user 가 하나 더 있어야 합니다. (필자는 root 계정을 그대로 썼습니다.)
(2) 모든 서버가 접근이 가능할 수 있도록 호스트를 열어줘야 합니다.
mysql> select user,host from mysql.user;
+------------------+--------------+
| user | host |
+------------------+--------------+
| root | % |
| mhauser | 172.16.173.% |
| replicator | 172.16.173.% |
| mhauser | localhost |
| mysql.infoschema | localhost |
| mysql.session | localhost |
| mysql.sys | localhost |
| root | localhost |
+------------------+--------------+
8 rows in set (0.01 sec)
- 필자는 root@'%' 계정을 하나 더 만들어서 어디서든 접근이 가능할 수 있도록 생성하여 사용했지만 절대 권장하지는 않습니다.
(3) 계정을 만든다면 아래와 같이 되지 않을까 생각됩니다.
mysql> create user percona@'%' identified with mysql_native_password by '1234';
Query OK, 0 rows affected (0.00 sec)
mysql> GRANT ALL PRIVILEGES ON percona.* TO percona@'%';
Query OK, 0 rows affected (0.01 sec)
- 이렇게 권한을 주었지만, 분명 pt-table-checksum 을 실행시켰을 때 binlog-format=STATMENT 관련 에러가 날 것 입니다.
이유는 이것까지 핸들링 할 수 있는 super 권한을 가진 user 가 필요하기 때문입니다. 필요한 권한을 계속 부여하면 될 것입니다.
(4) replicator 계정처럼 모든 master / slave DB에 동일한 계정이 필요합니다.
2. 실행
/mysql/percona/bin/pt-table-checksum --defaults-file=/etc/my.cnf --no-check-binlog-format --no-check-replication-filters --host=172.16.173.132 --user=root --password=1234 --databases=test --socket=/tmp/mysql_8033.sock --chunk-size=1000000
--host : master 의 ip 정보를 입력해주는 것이 좋습니다.
--chunk-size : 테이블이 헤비할 때 사용됩니다. 이것은 메모리의 공간을 좀더 확장을 해준다고 생각하면 될 것 같습니다.
--no-check-binlog-format : binlog-format을 체크하지 않는다입니다.STATEMENT가 아니면 에러를 발생시킵니다.
--no-check-replication-filter : my.cnf에 replication 관련 파라미터 중 skip-error 가 있다면, 에러가 나오기때문에 replication-filter도 체크하지 않습니다.
3. 결과값
해당 결과값을 모두 알지는 못하지만, DIFFS와 ROWS만 알아도 충분(?)하지 않을까 생각됩니다. 다른 결과값에 대해서는 기회가 되면 좀더 알아보도록 하겠습니다^^;
우선 ROWS 는 --host에 적은 DB서버의 전체 로우수를 알려줍니다.
DIFFS는 마스터와 슬레이브의 데이터가 동일한지 체크한 결과값입니다. 0이면 동일한 것이고, 1이면 다르다는 것입니다.
해당 테이블에 대해서 좀 더 집중적으로 핸들링하여 오차 데이터를 찾을 수 있을 것입니다.
4. 결론
master 와 slave 의 모든 테이블, 데이터의 정합성을 하나하나 체크하기는 정말 어렵습니다. 그만큼 다른 데이터를 찾는다는 것은 쉽지가 않습니다. pt-table-checksum을 사용한다면 적어도 데이터가 다른 테이블은 쉽게 체크가 가능하기 때문에 유용한 Tool 이 아닐까 생각합니다.
'MySQL > Class' 카테고리의 다른 글
log-slave-updates (0) | 2024.11.18 |
---|---|
M2(Mac)용 VMWare로 가상화 만들기 - (9) xtrabackup 설치 (2) | 2024.11.17 |
M2(Mac)용 VMWare로 가상화 만들기 - (8) pt-toolkit 설치 (0) | 2024.11.15 |
세션수 확인 (2) | 2024.11.12 |
mha를 위한 ssh 설정 (0) | 2024.11.07 |