[MySQL] Table lock 조회 쿼리
·
Database/MySQL
[MySQL] Table lock 조회 쿼리 SHOW OPEN TABLES WHERE In_use > 0; # MySQL 8.0 SELECT r.trx_id waiting_trx_id, r.trx_mysql_thread_id waiting_thread, r.trx_query waiting_query, b.trx_id blocking_trx_id, b.trx_mysql_thread_id blocking_thread, b.trx_query blocking_query FROM performance_schema.data_lock_waits w INNER JOIN information_schema.innodb_trx b ON b.trx_id = w.blocking_engine_transaction_id INNER..
[CDC] MySQL Debezium Change Data Capture 따라해보기 - 1
·
Infrastructure/CDC
[CDC] MySQL Debezium Change Data Capture 따라해보기 io.apicurio.registry.utils.converter.AvroConverter를 사용해서 설정을 하고 싶었는데 잘 안되서 혹시 아신다면 댓글 부탁 드립니다. 실제 데모 구현한 프로젝트 레포 입니다. https://github.com/sanggi-wjg/spring-cdc-debezium-demo GitHub - sanggi-wjg/spring-cdc-debezium-demo Contribute to sanggi-wjg/spring-cdc-debezium-demo development by creating an account on GitHub. github.com Docker-compose.yaml versio..
[MySQL] GROUP BY Optimization
·
Database/MySQL
[MySQL] GROUP BY Optimization MySQL은 GROUP BY 사용 시 대개는 전체 대상 테이블을 스캔한 후 새로운 임시 테이블을 만든 후 사용을 하도록 되어 있다. 하지만 인덱스 접근이 가능하다면 임시 테이블 생성을 피할 수 있다. GROUP BY에 가장 중요한 인덱스 사용 조건은 컬럼들이 호출한 쿼리 순서대로 저장하고 있는지 이다. 인덱스 사용에 성공한다면, 두가지의 방법이 있다. Loose Index Scan: 모든 범위 조건과 함께 그룹화하는 방법. Tight Index Scan: 범위 스캔 후 결과를 그룹화하는 방법. Loose Index Scan 테이블 t1(컬럼 a, b, c, d, e)이 인덱스로 (a, b, c) 를 가지고 있다고 가정해 보겠다. 인덱스 사용 가능 GR..
[MySQL] ORDER BY Optimization
·
Database/MySQL
MySQL ORDER BY Optimization MySQL Order by 사용시 인덱스를 사용 조건에 충족하다면 인덱스를 이용해서 정렬을 하겠지만 인덱스를 사용할 수 없는 경우에는 filesort를 사용을 한다. ORDER BY 인덱스 사용 충족 조건 Order by는 꼭 인덱스와 매치가 안되더라도 인덱스를 사용할 수도 있다. 각설하고 실제 예시를 통해 알아보자. SELECT * FROM t1 ORDER BY col_a, col_b; 테이블 t1에 복합 인덱스로 index (col_a, col_b) 가 생성되어 있다고 가정을 하자. MySQL의 Optimizer는 실행시 인덱스를 읽는게 효율적이라고 생각 한다면 인덱스를 사용할 것이고 그것을 통해서 추가적인 정렬하는 자원을 방지 할 수도 있다. SEL..
[MySQL] Show Index
·
Database/MySQL
SHOW INDEX Statement SHOW {INDEX | INDEXES | KEYS} {FROM | IN} tbl_name [{FROM | IN} db_name] [WHERE expr] mysql> SHOW INDEX FROM City\G *************************** 1. row *************************** Table: city Non_unique: 0 Key_name: PRIMARY Seq_in_index: 1 Column_name: ID Collation: A Cardinality: 4188 Sub_part: NULL Packed: NULL Null: Index_type: BTREE Comment: Index_comment: ***************..
[MySQL] binlog to SQL(텍스트) 변환
·
Database/MySQL
[MySQL] binlog to SQL 변환 /usr/local/mysql/bin/mysqlbinlog mysql-bin.xxxxxx > binlog.xxxxxx.sql vi binlog.xxxxxx.sql
[Fluentd] MySQL slow log 연동
·
Infrastructure/Fluentd
Fluentd MySQL slow log 연동하기 MySQL slow log MySQL slow log 는 멀티라인입니다. 따라서, conf 를 꿍짞꿍짝 해서 나중에 수정불가한 conf 를 생성 하거나 open soruce 사용해서 연동을 하면 되는데 착하신 분이 미리 mysqlslowquery 라는 것을 만들어 놓아서 이걸로 연동 했습니다. 설치 및 사전 준비 gpasswd mysql -a td-agent apt install -y ruby ruby-dev libc6-dev # 현재 서버에서 사용중인 gem 레포지가 # td-agent-gem 인지 fluentd-gem 인지 gem 인지 먼저 확인하세요 td-agent-gem install fluent-plugin-mysqlslowquery설정 # IN..
Promtheus + MySQL Exporter 연동
·
Infrastructure/Prometheus
MySQL Exporter 설치 및 연동 MySQL Exporter 다운로드 # 버전 MySQL >= 5.6. MariaDB >= 10.2 # 유저 없으면 추가, 있으면 접속 useradd -m -s /bin/bash prometheus su - prometheus # 다운로드 wget https://github.com/prometheus/mysqld_exporter/releases/download/v0.13.0/mysqld_exporter-0.13.0.linux-amd64.tar.gz tar zxvf mysql-5.6.51-linux-glibc2.12-x86_64.tar.gz mv mysqld_exporter-0.13.0.linux-amd64/ mysql_exporter exit MySQL 에 권한 추..
[Ubuntu 20.04] MySQL 5.6.xx 설치
·
OS/Ubuntu
삭제 cd /home rm /var/lib/mysql/ -R rm /etc/mysql/ -R apt-get autoremove -y mysql* --purge apt-get remove -y apparmorMySQL 설치 apt install -y libaio1 libncurses5 groupadd mysql useradd -g mysql mysql wget https://dev.mysql.com/get/Downloads/MySQL-5.6/mysql-5.6.51-linux-glibc2.12-x86_64.tar.gz tar -xvf mysql-5.6.51-linux-glibc2.12-x86_64.tar.gz mv mysql-5.6.51-linux-glibc2.12-x86_64 /usr/local/mysql..