pt online schema change는 하나의 트랜잭션으로 된 DDL 문을 나누어 처리하는 방식으로,

master와 Slave 간의 GAP을 줄이기 위한 용도로 사용된다.

-> 트리거를 활용해 copy 테이블에 적용한 뒤 마지막에 원본 테이블과 copy 테이블을 스위칭 하는 방식.

 

* 특징

- FK는 사용이 불가능하다.

- `(백틱)은 제거한다.

- 처리하는 소요시간이 오래 걸린다.

- 작업 전 디스크 여유량이 있는지 확인한다.

- Rename 구문은 사용이 불가능ㄹ하다.

- PK 혹은 Unique key가 반드시 필요하다.

- 락에 자유롭다.

 

/usr/bin/pt-online-schema-change \
--alter "add column 컬럼명 datetime null;" D=maldive_production,t=account_auth_infos \
--no-drop-old-table \
--no-drop-new-table \
--chunk-size=500 \
--chunk-size-limit=600 \
--defaults-file=/db/mysql/conf/my.cnf \
--socket=/tmp/mysql.sock \
--host=127.0.0.1 \
--port=3306 \
--user=kadba \
--ask-pass \
--progress=time,5 \
--max-load="Threads_running=100" \
--critical-load="Threads_running=1000" \
--chunk-index=PRIMARY \
--charset=UTF8MB4 \
--tries create_triggers:20:0.5,drop_triggers:20:0.5,copy_rows:20:0.25,swap_tables:20:0.5,update_foreign_keys:20:0.5 \
--sleep-time-us=50000 \
--print-sql \
--prompt-before-copy \
--set-vars innodb_lock_wait_timeout=10 \
--execute

 

Print Friendly and PDF Posted by JJ*
: