본문 바로가기

MySQL/MySQL Admin

(10)
pt-online-schema-change(pt-OSC)의 chunk_size_limit 함정 pt-osc를 많은 케이스에 쓰리라 생각이 됩니다. 저도 한때 많이 썼구요. 다만, pt-osc의 옵션에서 잘 못 알고 있는 케이스가 있어서 여기서 말하고자 합니다. pt-osc의 큰 이점 중 하나는 alter를 실행시켰을때 progress가 나오면서 진행도를 알 수 있다는 것입니다. 제가 이 글에서 언급하려는 옵션을 잘 못 사용하게 되면 progress를 볼 수 없습니다. where 조건을 제대로 사용하지 못하기 때문이죠. where 조건을 사용하지 않으면 select를 한번에 해서 insert할때 문제가 되며 마지막 시점에 commit이 밀리는 등 application에 문제를 일으킬 수 있습니다. 실제로 대량의 트랜잭션이 있을 때, 15초까지 commit이 밀렸습니다. 예제 pt-osc comman..
mysql_config_editor 설정하기 정말 또 다시 오랜만에 글을 적게 되네요 ㅎ 우연치 않게 블로그를 보시는 분을 만나고 나서.. 다시 시작해야겠구나 생각을 해가지고 ㅋㅋㅋ 신기방기한 만남이었습니다. 이직 한 이후에 회사에서 생소하게 쓴 mysql_config_editor를 설명해 보려합니다. 전에 회사에서는 5.5 version을 썼기 때문에 존재하지 않았지만 MySQL 5.6에서는 지원을 하고 있는 tool?이어서 유용하게 쓰고 있습니다. mysql_config_editor는 무엇일까요? - mysql_config editor는 mysql 5.6.6 이후 버전에 생성이 된 유틸리티입니다. 제가 5.5.*을 쓰면서 접하지 못했던 이유가 여기에 있습니다. - 해당 유틸리티는 암호화 문서인 .mylogin.cnf에 합법적으로 login 정보..
mysql parameter innodb_locks_unsafe_for_binlog innodb_locks_unsafe_for_binlog Command-Line Format --innodb_locks_unsafe_for_binlog System Variable Name innodb_locks_unsafe_for_binlog Variable Scope Global Dynamic Variable No Permitted Values Type boolean Default OFF 이 값은 InnoDB의 gap locking과 index-row locking 두 가지를 포함하는 next-key locking을 컨트롤 합니다. 값에 따라 조금 헷갈릴 수 있는데 boolean 값이기 때문에 0/1로 설정 가능하고 0일경오 parameter 비활성화. 즉 next-key locking을 쓰겠다는 것(..
Mysql isolation Level 설정 지난번에 말한 Transaction에서 isolation을 다루어 보려고 합니다. 제가 말하는 것은 mysql 기준입니다. 다른 dbms에서는 다르게 동작할 수 있음을 먼저 말씀 드립니다. 트랜잭션에 대한 많은 parameter가 있는데 하나하나 살펴보겠습니다. http://dev.mysql.com/doc/refman/5.5/en/set-transaction.html mysql에서는 isolation level을 조절 할 수 있습니다. isolation은 이전에 독립성이라고 했습니다. show variable status ‘tx_isolation’; 이라는 명령어로 현재 값을 알 수 있는데요. default value는 REPEATABLE-READ입니다. 그럼 그 외의 값은 무엇이고 또 그 값이 독립성을..
Mysql prompt 변경하기! 이번에는 mysql prompt를 바꿔보도록 하겠습니다 ㅎ 별로 신경을 안 썼었는데 테스트하려고 보니 시간출력하기가 참 애매해서 이렇게 올리네요 ㅎ oracle이나 mariadb같은경우 어떤 database를 쓰고 있는지 어떤 유저인지를 출력하게끔 하는 게 있는데요. mysql도 있습니다. 선언하는 방법에는 여러 가지가 있습니다. 방법 1 : MYSQL_PS1 환경변수를 shell에서 선언을 해줍니다. shell> export MYSQL_PS1="(\u@\h) [\d]> " 방법 2 : Mysql에 접속할 때 --prompt 선언을 해줍니다. shell> mysql --prompt="(\u@\h) [\d]> " 방법 3 : 저는 config가 /etc/my.cnf에 있습니다. 이럴 경우 [mysql] 그..
Transaction이란? Transaction이란? 사전적 의미로는 거래, 매매, 처리(과정)을 뜻하는데 데이터베이스에서도 최소한의 처리 단위로 쓰이게 됩니다. 그 처리를 완료를 하게 되면 commit을 하게 되고 어떠한 이유로 처리이전으로 다시 되돌아 가는 것을 rollback이라고 합니다. 좀 더 쉽게 다가가 보면 흔히 쓰는 word, ppt, 한글문서를 생각해 보면 됩니다. ms-word나 한글문서를 작성을 다하고 저장버튼을 클릭을 하게 되면? 파일이 문서로 저장이 되게 됩니다. 하나의 처리과정이 끝난 것이죠(commit). 하지만 작성 중에 어떠한 에러나 이유로 인해서 저장이 안된 채로 문서가 닫혀버리면 이전에 저장한 것만 남고 새로 작성한 것들은 사라지게 됩니다(rollback). 이런 것처럼 “transaction은 ..
percona toolkit - pt-online-schema-change dry-run and print 또 다시 percona toolkit 중에 pt-online-schema-change에 대해 설명하려합니다. 이번엔 실제 사례 중 과정을 보기 위해 dry-run과 print를 주어서 볼 건데요. 총 세가지가 섞여 있습니다. pt-online-schema-change의 기능구현이 되어 있는 perl과 mysql 실제로 들어가는 쿼리, 그리고 툴을 돌렸을 때의 로그. 세가지인데 perl Query 굵은 글씨는 Shell Log라고 보시면 됩니다. 그리고 테스트 할 테이블은 제가 벤치마킹하느라 sysbench로 만들어 놓은 테이블인데 1000만건이 들어있는 테이블입니다. [root@MONDB mysql]# pt-online-schema-change --alter "drop index k" D=chung,t=..
percona toolkit - pt-online-schema-change 옵션 정리 이 문서는 percona 측에서 제공하는 pt-online-schema-change에 대해 올린 document를 제가 번역 한 것입니다. 틀린부분이 있을 수 있는데 그럴경우 댓글로 달아주시면 감사하겠습니다 ㅎ OUTPUT¶ Tool이 STDOUT로 활동한 것에 대해 정보를 출력합니다. 그래서 데이터 카피를 하는 도중에 무엇을 하고 있는지 볼 수 있습니다. STDERR를 통해--progress옵션으로 출력됩니다. --print.를 명시하면 추가 정보를 얻을 수 있습니다. 만약 --statistics를 명시하면 내부적으로 다양한 것에 대한 카운트가 출력됩니다. # Event Count # ====== ===== # INSERT 1 OPTIONS¶ --dry-run and --execute are mutua..