MySQL & Maria
-
가끔 대용량 작업을 LIMIT 처리 없이 작업을 하다가 이슈가 발생하게 되었을 때 해당 SESSION을 KILL 하는 경우들이 발생한다. 이때 DML 작업 시간이 길었던 만큼 ROLLBACK 작업이 길어지는데 이때 해당 테이블에 DML, DDL작업이 불가능하게 되며 이로 인해 서비스 문제가 발생하게 되는 경우가 있다. ROLLBACK 시간을 산정하여 이슈에 어떻게 대처할지를 선택 해야 한다. EX) ROLLBACK을 기다릴지, 새로운 장비를 사용할지 등등 이번엔 Rollback이 완료 되는데 얼마큼의 시간이 걸리는지 확인하는 방법에 대해 작성해 보려 한다. DMLRollback 데이터를 쌓기 위해서 적당히 큰 테이블에 전체 UPDATE 수행[test]> update lee_test set reason=..
[ DML ] Rollback 시간 산정가끔 대용량 작업을 LIMIT 처리 없이 작업을 하다가 이슈가 발생하게 되었을 때 해당 SESSION을 KILL 하는 경우들이 발생한다. 이때 DML 작업 시간이 길었던 만큼 ROLLBACK 작업이 길어지는데 이때 해당 테이블에 DML, DDL작업이 불가능하게 되며 이로 인해 서비스 문제가 발생하게 되는 경우가 있다. ROLLBACK 시간을 산정하여 이슈에 어떻게 대처할지를 선택 해야 한다. EX) ROLLBACK을 기다릴지, 새로운 장비를 사용할지 등등 이번엔 Rollback이 완료 되는데 얼마큼의 시간이 걸리는지 확인하는 방법에 대해 작성해 보려 한다. DMLRollback 데이터를 쌓기 위해서 적당히 큰 테이블에 전체 UPDATE 수행[test]> update lee_test set reason=..
2025.01.03 -
음.. 이번에는 쿼리를 짤때 자주 사용되는 AND / OR 논리 연산에 대한 우선 순위에 대해 작성해보려고 합니다. 많은 분들이 잘 알고 계시겠지만 이 우선순위에 의해서 원하는 결과 값이 아닌 다른 값이 나올수 있다는 점!!! AND / OR ? AND: 두 조건이 모두 참인 레코드를 검색 OR : 두 조건중 하나라도 참인 레코드 예제 쿼리를 통해 AND / OR 연산자의 우선 순위를 보겠습니다. 1. 2페이지에 해당하는 데이터중 Title에 'Test'가 포함된 데이터 select * from ( select rownum rn, bro, title, wirter from board where title like '%Test%' and rownum 10; 2. tit..
AND / OR 논리 연산자 우선 순위음.. 이번에는 쿼리를 짤때 자주 사용되는 AND / OR 논리 연산에 대한 우선 순위에 대해 작성해보려고 합니다. 많은 분들이 잘 알고 계시겠지만 이 우선순위에 의해서 원하는 결과 값이 아닌 다른 값이 나올수 있다는 점!!! AND / OR ? AND: 두 조건이 모두 참인 레코드를 검색 OR : 두 조건중 하나라도 참인 레코드 예제 쿼리를 통해 AND / OR 연산자의 우선 순위를 보겠습니다. 1. 2페이지에 해당하는 데이터중 Title에 'Test'가 포함된 데이터 select * from ( select rownum rn, bro, title, wirter from board where title like '%Test%' and rownum 10; 2. tit..
2023.12.08 -
오늘은 MySQL MyISAM 엔진의 테이블들을 InnoDB 엔진의 테이블로 변경하는 내용에 대해서 포스팅할 예정입니다. MySQL Dev에 작성된 지침들을 확인해 보면서 진행하도록 하겠습니다. https://dev.mysql.com/doc/refman/8.0/en/converting-tables-to-innodb.html MySQL :: MySQL 8.0 Reference Manual :: 15.6.1.5 Converting Tables from MyISAM to InnoDB 15.6.1.5 Converting Tables from MyISAM to InnoDB If you have MyISAM tables that you want to convert to InnoDB for better reliabi..
[ MySQL ] MyISAM to InnoDB오늘은 MySQL MyISAM 엔진의 테이블들을 InnoDB 엔진의 테이블로 변경하는 내용에 대해서 포스팅할 예정입니다. MySQL Dev에 작성된 지침들을 확인해 보면서 진행하도록 하겠습니다. https://dev.mysql.com/doc/refman/8.0/en/converting-tables-to-innodb.html MySQL :: MySQL 8.0 Reference Manual :: 15.6.1.5 Converting Tables from MyISAM to InnoDB 15.6.1.5 Converting Tables from MyISAM to InnoDB If you have MyISAM tables that you want to convert to InnoDB for better reliabi..
2023.05.26 -
모니터링 스크립트 TOP을 이용해서 MySQL의 Top10 Thread_OS_ID 확인 Thread_OS_ID를 이용하여 MySQL Query 수행 Thread_OS_ID, Processlist_ID, Query 출력 실행 시 password 변수 변경하여 사용 [root@db-test1 ~]# cat lee.sh #!/bin/bash password='wl@2020Toaxj' ### Search Top10 MySQL Thread_OS_ID lee=`top -b -n 1 -H -p \`ps -ef | grep mysqld | grep -v "mysqld_safe" | grep -v "grep" | awk '{print $2}'\` | grep -v "Threads\|top\|KiB\|%Cpu(s)\|PI..
[ MySQL ] CPU 부하 Query 모니터링모니터링 스크립트 TOP을 이용해서 MySQL의 Top10 Thread_OS_ID 확인 Thread_OS_ID를 이용하여 MySQL Query 수행 Thread_OS_ID, Processlist_ID, Query 출력 실행 시 password 변수 변경하여 사용 [root@db-test1 ~]# cat lee.sh #!/bin/bash password='wl@2020Toaxj' ### Search Top10 MySQL Thread_OS_ID lee=`top -b -n 1 -H -p \`ps -ef | grep mysqld | grep -v "mysqld_safe" | grep -v "grep" | awk '{print $2}'\` | grep -v "Threads\|top\|KiB\|%Cpu(s)\|PI..
2023.03.10 -
MySQL 5.7 이후부는 Online DDL을 지원하게 되었습니다. Online DDL시 장애를 줄이기 위해서 알아두면 좋은 환경설정에 대해 포스트팅 해보도록 하겠습니다. ■ Online DDL시 아래 작업들이 발생하게 됩니다. - online ddl시 row log buffer에 DDL이후의 데이터 변경사항을 저장하게 된다. - row log buffer는 sort_buffer_size 시스템 변수에 정의된 크기만큼씩 할당하며, 최대 innodb_online_alter_log_max_size 만큼 증가하게 된다. - innodb_online_alter_log_max_size ⇒ ONLINE DDL 중 DML문을 적재하는 Size 이다. 대부분 ONLINE DDL 중 해당 파라미터를 1G로 설정하고 진..
[ MySQL ] innodb_onlin_alter_log_max_size 중요성MySQL 5.7 이후부는 Online DDL을 지원하게 되었습니다. Online DDL시 장애를 줄이기 위해서 알아두면 좋은 환경설정에 대해 포스트팅 해보도록 하겠습니다. ■ Online DDL시 아래 작업들이 발생하게 됩니다. - online ddl시 row log buffer에 DDL이후의 데이터 변경사항을 저장하게 된다. - row log buffer는 sort_buffer_size 시스템 변수에 정의된 크기만큼씩 할당하며, 최대 innodb_online_alter_log_max_size 만큼 증가하게 된다. - innodb_online_alter_log_max_size ⇒ ONLINE DDL 중 DML문을 적재하는 Size 이다. 대부분 ONLINE DDL 중 해당 파라미터를 1G로 설정하고 진..
2023.02.27 -
MySQL를 운영하다 보면 DIsk 교체나 특정이유로 인해 데이터 디렉터리 경로를 변경하는 경우가 있습니다. 오늘은 데이터 디렉토리를 변경하는 방법에 대해 포스팅해 보겠습니다~ ■ 현재 Datadir 확인 1. MYSQL 들어가서 확인 mysql> select @@datadir; +-------------+ | @@datadir | +-------------+ | /data/data/ | +-------------+ 1 row in set (0.00 sec) 2.ps로 확인 [root@maria ~]# ps -ef | grep mysql root 6412 1 0 Feb20 ? 00:00:00 /bin/sh /mysql/bin/mysqld_safe --user=mysql mysql 6959 6412 0 F..
[ MySQL ] MySQL 데이터 디렉토리 변경MySQL를 운영하다 보면 DIsk 교체나 특정이유로 인해 데이터 디렉터리 경로를 변경하는 경우가 있습니다. 오늘은 데이터 디렉토리를 변경하는 방법에 대해 포스팅해 보겠습니다~ ■ 현재 Datadir 확인 1. MYSQL 들어가서 확인 mysql> select @@datadir; +-------------+ | @@datadir | +-------------+ | /data/data/ | +-------------+ 1 row in set (0.00 sec) 2.ps로 확인 [root@maria ~]# ps -ef | grep mysql root 6412 1 0 Feb20 ? 00:00:00 /bin/sh /mysql/bin/mysqld_safe --user=mysql mysql 6959 6412 0 F..
2023.02.21 -
■ Opening Tables? Trying to open a table. Usually very quick unless the limit set by table_open_cache has been reached, or an ALTER TABLE or LOCK TABLE is in progress. 테이블을 열려고 합니다. table_open_cache에 의해 설정된 한계에 도달하거나 ALTER TABLE 또는 LOCK TABLE이 진행 중이 아니라면 일반적으로 매우 빠릅니다. ■ 결론 Opening Table State의 경우 Table_open_cache < open_tables 상태이며 새로운 Table이 open될떄 발생하게된다. 해결방안 show global status where variabl..
[ MySQL ] Openging Table 상태■ Opening Tables? Trying to open a table. Usually very quick unless the limit set by table_open_cache has been reached, or an ALTER TABLE or LOCK TABLE is in progress. 테이블을 열려고 합니다. table_open_cache에 의해 설정된 한계에 도달하거나 ALTER TABLE 또는 LOCK TABLE이 진행 중이 아니라면 일반적으로 매우 빠릅니다. ■ 결론 Opening Table State의 경우 Table_open_cache < open_tables 상태이며 새로운 Table이 open될떄 발생하게된다. 해결방안 show global status where variabl..
2023.02.17 -
Docker Compose를 이용해서 이전에 포스팅했던 Docker Image를 빌드한후 DB Replicatoin 올리는 방법을 작성해보곗습니다. 간략하게 요약하면 아래 순으로 실행이됩니다. Docker hub에 올려논 Docker Image를 통해서 → Docker file을 만들고 → Docker Compose를 이용하여 Replication 설계 https://github.com/dkwlfowh/docker_mysql8_repl ■ Docker-Compose 설치 [root@pmm-server ~]# sudo curl -L "https://github.com/docker/compose/releases/download/1.24.1/docker-compose-$(uname -s)-$(uname -m)..
[ MySQL ] Container DB Replication ( Using. Docker-compose )Docker Compose를 이용해서 이전에 포스팅했던 Docker Image를 빌드한후 DB Replicatoin 올리는 방법을 작성해보곗습니다. 간략하게 요약하면 아래 순으로 실행이됩니다. Docker hub에 올려논 Docker Image를 통해서 → Docker file을 만들고 → Docker Compose를 이용하여 Replication 설계 https://github.com/dkwlfowh/docker_mysql8_repl ■ Docker-Compose 설치 [root@pmm-server ~]# sudo curl -L "https://github.com/docker/compose/releases/download/1.24.1/docker-compose-$(uname -s)-$(uname -m)..
2023.02.15