본문 바로가기

Database

DB 스키마 반영 TOOL(DB 스키마 반영 도구 구축기) #2

이전글.

2019/05/31 - [Paul Granduer Lee /DB] - DB 스키마 반영 TOOL(DB 스키마 반영 도구 구축기) #1_마이다스아이티

 

이전글에 이어 스키마 반영 도구 flyway의 활용법과 percona toolkit 중 스키마 무중단 반영 도구인

pt-onlinept-online-schema-change에 대해 간략하게 소개하고자 한다.

소개 가즈아~

flyway는 현재 DB 웹클라이언트에 연동해서 구축을 해놨다.

 

스키바 반영 메뉴 추가

스키마 반영 메뉴.

스키마 업로드 기능.

스키마 반영 정보 확인.

이렇게 위와 같이 웹서비스로 사용할 수 있게 구현해 놨고, 프로세스만 잘 수립한다면 요긴하게 사용되지 않을까한다.

단, DBA가 해당 도구를 자동화하지 않고 수동으로 작업하는것을 일단 권장한다. 왜냐하면 도구로 인한 장애 포인트가

더 추가가 되는것이기에 혹시 DB 작업에 발생하는 장애가 해당 도구로 인한 장애인지 아닌지 구별하기 힘들수 있기 때문이다.

 

이어서 pt-onlinept-online-schema-change 도구에 대해 소개하고자한다.

수 많은 DBA들 그리고 개발자는 고민한다. 데이터가 많이 쌓여있는 테이블 스키마의 변경에 대해...

왜냐하면 데이터가 방대해질수록 스키마 변경이 오래걸리고 그에 따라 서비스에 영향이 발생하기 때문이다.

 

해당 도구는 그 고민을 처리하는데 도움을 준다.

처리 방식은 간단하다. 스키마 변경 대상의 테이블을 복제하고 복제하는 동안 변경되는 데이터에 대해 트리거로 동기화를 한다. 후에 원본 테이블과 복제테이블의 데이터가 일치할때 스키마 변경이 완료된 테이블과 원본 테이블의 테이블 명을 switching 하여 테이블 변경을 이뤄낸다.

 

다운로드.

https://www.percona.com/downloads/percona-toolkit/LATEST/

사이트에서 toolkit 최신 버전 gzip 파일 다운로드

 

서버에 설치.

tar xvzf percona-toolkit-3.0.13_x86_64.tar.gz

perl 라이브러리가 설치되어야 실행가능하므로 아래와 같이 perl 설치

sudo yum install perl-DBI
sudo yum install perl-DBD-MySQL
sudo yum install perl-TermReadKey
sudo yum install perl perl-IO-Socket-SSL perl-Time-HiRes
sudo yum install perl-devel

의존성 오류가 발생 하는 경우
yum install perl-Digest-MD5

 

압축 해제 후 아래와 같이 명령 실행하면 /usr/local 하위에 설치됨.

(사실 압축파일 풀었을때 모든 파일이 포함되어 있는데 아래와 같이 다시 인스톨하는 것은 아마 local단 경로에서 global 실행이 가능하도록 하기 위해서가 아닌가함)

perl ./Makefile.PL
make
sudo make install
#bashrc을 열어서
vim ~/.bashrc

# 아래 코드를 등록
alias pt-online-schema-change="/home/ec2-user/percona-toolkit-3.0.12/bin/pt-online-schema-change"

 

사용법.

pt-online-schema-change --alter "<alter 명령어>" D=<데이터베이스>,t=<테이블> \
--no-drop-old-table \
--chunk-size=500 \
--chunk-size-limit=600 \
--host=<DB 호스트 또는 IP> \
--port=3306 \
--user=<권한이 있는 계정> \
--p=<패스워드> \
--progress=time,30 \
--max-load="Threads_running=100" \
--critical-load="Threads_running=1000" \
--chunk-index=PRIMARY \
--charset=UTF8 \
--execute

 

사용 예제.

pt-online-schema-change --alter "change column test2 test2 int(10)" D=test,t=test \
--no-drop-old-table \
--chunk-size=500 \
--chunk-size-limit=600 \
--host=paul.grandeur.lee.rds.web \
--port=3306 \
--user=test \
--p=1q2w3e4r \
--progress=time,30 \
--max-load="Threads_running=100" \
--critical-load="Threads_running=1000" \
--chunk-index=PRIMARY \
--charset=UTF8 \
--execute

 

많은 블로거에 사용법이 나열되어 있으나, 이상하게 실행할때 오류가 발생했다. 

여러 옵션이 존재하고 해당 옵션을 전부 연구한것은 아니나 현재 작성되어 있는 예제대로 한다면 동작하는데 이상은 없을 것이다.

 

해당 도구도 이와 같이 웹으로 구현해논 상태이다.(feat. 코드장인 log.agree.pak)

 

 

 

다음편에서는 위와 dba의 슬로우 쿼리 분석 방법에 대해 소개하고자한다.

그리고 pt-online-schema-change 말고 gho-st라는 다른 형태의 무중단 반영 도구를 연구중인데 그에 대한 소개도 할 수 있다. 

 

끝.