열린기술자 님의 글 80
MaxScale로 읽기 쓰기 자동 분리하기
복제는 걸어뒀는데 애플리케이션이 읽기와 쓰기를 전부 마스터로 보내는 경우를 현장에서 자주 본다. 슬레이브는 놀고 마스터만 부하를 받는다. 커넥션 풀을 둘로 나눠 코드에서 분기하는 방법도 있지만, 장…
MariaDB가 메모리를 먹다 OOM으로 죽을 때
운영 중인 MariaDB가 어느 날 로그도 없이 사라지고, 다시 시작하면 또 멀쩡히 돈다. 메모리 설정을 올렸다가 이런 일을 겪은 DBA가 꽤 많다. mysqld를 죽인 건 DB 자신이 아니라 커널…
ORA-04031로 shared pool이 터질 때
운영 중인 Oracle에서 갑자기 세션들이 에러를 토하며 멈추는데, 로그를 열어 보면 ORA-04031이 찍혀 있는 경우가 있다. 제가 현장에서 이 에러를 만날 때 열에 아홉은 메모리를 더 줘서 해…
새벽마다 Communications link failure가 날 때
운영하다 보면 유독 새벽 시간대에만 애플리케이션 로그에 Communications link failure 가 찍히는 경우를 만난다. 낮에는 멀쩡하다가 트래픽이 거의 없는 새벽 2시, 4시에만 터지고…
Data Pump로 Oracle 스키마 통째 이관하기
스키마 하나를 통째로 다른 서버로 옮겨달라는 요청은 DBA라면 주기적으로 받는다. 개발 DB를 스테이징으로 복제하거나, 낡은 장비의 스키마를 신규 인스턴스로 넘길 때다. 예전엔 exp/imp로 하던…
MariaDB Galera로 3노드 동기 복제 구성
운영하다 보면 마스터 한 대에 슬레이브 여러 대를 붙인 비동기 복제로는 아쉬운 순간이 온다. 장애가 나면 어느 슬레이브를 승격할지 사람이 판단해야 하고, 승격 전까지 쓰기가 멈춘다. 그럴 때 후보로…
Oracle 통계정보가 오래돼 쿼리가 느려질 때
운영하다 보면 코드도 그대로고 데이터량도 크게 안 늘었는데 특정 쿼리만 어느 날부터 느려지는 상황을 마주친다. 인덱스도 멀쩡하고 바인드 값도 평소와 같은데 실행계획만 바뀌어 있다. 이런 신고를 받으…
MariaDB 10.6에서 11.4 업그레이드
운영 중인 MariaDB 10.6이 슬슬 손이 가는 시점이 왔다. 10.6도 LTS라 아직 지원 기간이 남았지만, 11.4가 새 LTS로 자리를 잡으면서 신규 장비는 11.4로 깔고 기존 장비만 1…
MariaDB/MySQL DDL이 'Waiting for table metadata lock'으로 멈출 때 원인 찾고 푸는 법
운영 중인 서비스에 컬럼 하나 추가하려고 ALTER TABLE 을 던졌는데 커서만 깜빡이고 프롬프트가 안 돌아온 경험은 DBA라면 한 번쯤 겪는다. 더 곤란한 건 그 사이에 해당 테이블을 읽으려던 …
MariaDB innodb_buffer_pool_size 사이징과 재시작 후 캐시 워밍업
InnoDB로 돌아가는 MariaDB 서버를 넘겨받으면 가장 먼저 확인하는 값 중 하나가 innodb_buffer_pool_size 다. 물리메모리 64GB짜리 장비인데 이 값이 기본값 그대로 12…
PostgreSQL 설치 방법
1. 개요 2. apt 설치 및 삭제 2.1. 설치 Ubuntu 기준으로 하여, apt로 설치한다. $ sudo apt install postgresql Reading package lists...…
MySQL datetime을 원하는 문자열로 표시
1. 개요 2. 사용방법 SELECT DATE_FORMAT(created, "%Y-%m-%d") created FROM mytable;