본문 바로가기

전체 글

(13)
[짧은 기록] X DevAPI란 MySQL 서버를 Document DB처럼 사용하기 위해 MySQL 5.7.12 버전부터 X Plugin이라는 신규 컴포넌트가 도입되었다. X 플러그인은 도큐먼트 스토어용 MySQL 서버를 위해 반드시 필요한 플러그인이며, MySQL 서버가 X Protocol을 사용해서 클라이언트와 통신할 수 있도록 해준다. 여기서 X 플러그인이 활성화(8.0 default) 되어 있는 MySQL 서버와 상호작용을 할 수 있도록 클라이언트측에 제공되는 것이 X DevAPI이다. ​ MySQL 도큐먼트 스토어에 연결하기 위해서는 MySQL 서버 인스턴스에 X DevAPI 세션을 생성해야 하는데, 애플리케이션에서 드라이버를 통해 생성할 수도 있지만 인터렉티브한 모드를 제공하는 MySQL Shell을 통해 세션을 생성해보도록..
MySQL 인덱스 컨디션 푸시다운(Index condition pushdown)에 대해서 silver 테이블의 인덱스가 ix_seq_createdat_updatedat(seq, created_at, updated_at)으로 생성되어 있을 때, 쿼리에서 인덱스를 사용할 수 있는 컬럼은 seq와 created_at까지이다. SELECT * FROM silver WHERE seq = ? AND created_at BETWEEN ? AND ? AND updated_at < ? ​​ 그런데 MySQL에서는 인덱스 컨디션 푸시다운(Index condition pushdown)이라는 기능으로 updated_at까지 인덱스를 사용할 수 있게끔 만들어준다. 위 쿼리에서 인덱스를 사용할 수 있는 컬럼은 seq, created_at이지만 updated_at 컬럼이 인덱스 구성 컬럼에 포함되어 있기 때문에 인덱스..
[공유] mysql command-line client 실행 파일 RedHat 계열 리눅스와 Mac OS에서 각각 빌드한 mysql command client 실행 파일을 공유해본다. https://github.com/godtechwak/mysql-server-custom/tree/ba577d1f1f5cb766171b70eb890e5b103b461c51/mysql-command-cli mysql_silver_mac.tar.gz ## 압축 해제 $ tar xvf mysql_silver_mac.tar.gz ## 기존 mysql 바이너리 파일 이름 변경 $ sudo cp /opt/homebrew/opt/mysql-client/bin/mysql /opt/homebrew/opt/mysql-client/bin/mysql_origin ## 압축 해제한 바이너리 파일을 실행 경로로 ..
[MySQL] pt-osc를 활용한 online 테이블 파티션 변경 MySQL 서버에서 파티션 테이블을 생성했는데 얼마 지나지 않아(데이터가 쌓인 시점에서) 파티션 생성 조건을 변경해야하는 일이 생겼다. 파티션을 변경하는 경우 기존 파티션에 존재하던 데이터는 삭제되기 때문에 이를 나이스하게 해결할 방법이 필요했다. 단순히 데이터를 백업했다가 그 데이터를 다시 재구성된 파티션 테이블로 옮기는 방법은 작업 시간동안 발생한 DML과의 순서(PK)를 보장할 수 없을 뿐더러, 데이터를 옮기고 rename하고, 다시 데이터를 검증하고 ..여러 복잡한 문제들이 있었다. 아쉽지만 pt-online-schema-change에도 뭔가 이를 지원하는 기능이 따로 존재하지 않았다. ​ 하지만, ​ MySQL 서버의 Online DDL을 instant 또는 inplace, nolock 옵션으로..
MySQL Aborted connection error mysql 서버를 사용하다보면 error log에 아래의 [Note]성 오류 메세지가 쌓이는 것을 확인할 수 있다. 2023-02-03T20:37:56.060168Z 2176 [Note] [MY-010914] [Server] Aborted connection 2176 to db: 'information_schema' user: 'admin' host: '172.16.250.97' (Got an error reading communication packets). (sql_connect.cc:835) 2023-02-03T20:39:03.160983Z 2177 [Note] [MY-010914] [Server] Aborted connection 2177 to db: 'information_schema' user..
MySQL Command Line Clinet에 Online DDL 모니터링 기능 추가 Online DDL 모니터링 MySQL 클라이언트에서 Online DDL로 인덱스를 추가하다보면 작업이 생각외로 꽤 오랜 시간동안(상대적이지만) 수행되는 경우가 많다. 서비스 운영 중에는 언제 끝날지 모르는 인덱스 추가 작업으로 인해 심장이 덜컥 내려앉을 때도 있다. 다행히 MySQL 서버에서는 Online DDL 진행 상황을 모니터링 할 수 있는 기능을 제공한다. 아래 명령을 별도의 세션에서 수행하면 Online DDL 작업이 어느 정도까지 진행되었는지 확인할 수 있다. (ref. https://dev.mysql.com/doc/refman/8.0/en/monitor-alter-table-performance-schema.html) mysql> SELECT EVENT_NAME, WORK_COMPLETED..
Aurora MySQL 3.05.0 스토리지 확장 테스트 Aurora MySQL 3.05.0 스토리지 확장 테스트를 이야기 하기에 앞서 Aurora 스토리지 아키텍처에 대해서 간략하게 이야기 하고 무엇을 위해 테스트를 진행했는지 살펴보도록 하자. Aurora 스토리지 아키텍처 Aurora의 스토리지 서버들은 로컬 디스크 SSD를 가지고 있는 EC2 서버들이 수백대로 구성되어 있다. 이 EC2 서버들이 1개의 Aurora 서비스에 종속되어 있는 것이 아니라 여러 개의 Aurora 서비스가 1개의 EC2 서버를 사용하고 있는 형태라고 볼 수 있다. 스토리지 볼륨은 1개 이상의 스트라이프 세트들(Stripe Sets)로 구성되어 있고, 1개의 스트라이프 세트(Stripe Set)는 16개의 보호 그룹들(Protection Groups)로 구성되어 있다. (이후부터는..
MySQL 버그 리포트 찾는 방법(MySQL 8.0 Default Collation) MySQL 서버의 릴리즈 노트를 보면, 워크로그나 (WL #1232) 버그 리포트 번호 (Bug #2123432) 가 릴리즈된 내용 뒤에 적혀있는 것을 본적이 있을 것이다. 그런데 이 워크로그나 버그리포트 내용을 찾으려고 할 때, 사이트에서는 해당 내용을 찾을 수 없는 경우가 대다수이다. ​ 예를 들어 MySQL 8.0.1 버전에 다음과 같은 내용이 릴리즈 되어서 버그 리포트 사이트에서 관련 내용을 검색하고자 한다. 나올까? 안나온다. The default collation for the `utf8mb4` character set has changed from `utf8mb4_general_ci` to `utf8mb4_0900_ai_ci`; `utf8mb4_general_ci` does not handl..