개요

PXC ?

Percona Xtradb는 mysql 엔진인 innodb에 Galera패치 등을 적용한 DB엔진입니다. 
Percoan Xtradb Cluster는 Active/active의 고가용성을 지원하는 솔루션이며 클러스터를 구축하기 위한 핵심 기술인 Codership Galera 라이브러리를 포함하고 있습니다.
Percona의 동작방식을 이해하기 위해선 Galera 클러스터에 대한 이해가 필요합니다.

http://galeracluster.com/에서 제공되는 오픈소스로 Synchronous replication를 지원하는데,
Synchronous replication를 지원하기 위해서는 Galera cluster Architecture에 대한 이해가 필요하며, Galera는 아래의 그림처럼 Certification Based Replication방식으로 동기화 처리를 합니다.

이미지 참고 - http://galeracluster.com/documentation-webpages/galera-documentation.pdf

 

반면에 Maria DB의 경우에는 Replication시 bin 로그 포지션 추적방식을 기본으로 사용합니다.
 bin 로그 추적방식 : [2022.05.02 - [System Engineering] - [Maria DB] Master - Slave Replication 적용.]

PXC는 위 이미지에서 볼 수 있듯, 트랜젝션 발생시 Synchronous replication도 동시에 일어납니다.

 

따라서 PXC는 binlog를 지우더라도 sync에는 전혀 영향이 없는것을 알 수 있습니다.

 

원인

binlog 저장기간 설정값인  expire_logs_days 가 99로 설정되어있는데도 불구하고 bin로그가 무기한 저장되고 있었습니다.

100이상으로 설정하면 '1292 code Warning (형식 오류)' 이 발생합니다.

해결

설정된값 확인

우선 variables 목록을 보는 mysql문으로 expire_logs_days에 설정된 값을 확인하여줍니다.

expire_logs_days값이 99로 설정되어있는걸 확인할 수 있습니다.

 

 

variable 도큐 확인


이미지 참고 - https://dev.mysql.com/doc/refman/5.6/en/replication-options-binary-log.html

mysql 5.6 document manual에서 expire-logs-days의 설명을보면 지정가능한 최대값이 99이고 기본값은 0 ㅡ무기한저장, no automatic removalㅡ  입니다.

그렇기때문에 100이상은 설정이 불가능하였습니다. (99로 설정되어있던 mysql은 왜 무기한 저장을 하고있었는지 모르겠습니다...버그인가?)

 

MySQL 적용

1. 재기동을 하지않기 글로벌 변수를 cli통해 변경하여 줍니다.

2. 영구 적용을 위해 mycnf도 설정을 변경하여 줍니다
vi /etc/my.cnf

[mysqld]
...
...
expire_logs_days=90

3. 결과 확인
일정 시간이 흐른 후 기존에 있던 binlog들이 사라지고 저장기간이 90일로 설정된것을 확인 할 수 있습니다 (캡처날짜 : 03.29 )

reference 
https://library.gabia.com/contents/infrahosting/2317/

+ Recent posts