■ MySQL 격리 수준(from Real MySQL 8.0) 여러 트랜잭션이 동시에 처리될 때 특정 트랜잭션이 다른 트랜잭션에서 변경하거나 조회하는 데이터를 볼 수 있게 허용할지 말지를 결정하는 것 크게 "READ UNCOMMITTED" "READ COMMITTED" "REPEATABLE READ" " SERIALIZABLE"로 나뉜다. 하지만 일반적인 데이터베이스에서 READ UNCOMMITTED는 거의 사용하지 않고, SERIALIZABLE또한 동시성이 중요한 데이터베이스에서는 거의 사용되지 않는다. 격리 수준이 높아질수록 성능 개선이나 저하는 발생하지 않는다. ※ 일반적인 온라인 서브스 용도에서는 READ COMMITTED와 REPEATABLE READ 중 하나를 사용합니다. READ UNCOMM..
테이블 손상이 발생할 수 있는 경우 1. InnoDB 테이블이 손상되는 경우는 상당히 희박 - Double write, Checksum 그리고 기타 Validation 로직들과 버그 보완으로 인해서, 실제로 MyISAM에 비해서 InnoDB 테이블 스페이스 및 데이터 파일은 상당히 안정적이다. 2. 대부분의 손상은 인덱스에서 발생 - 많은 사람들이 경험하는 InnoDB 데이터 파일의 손상은 80~90% 정도가 InnoDB 인덱스 (Secondary index)에 발생한 손상인 경우이며, 이 경우에는 단순히 ALTER TABLE 또는 데이터 덤프 및 재 적재만으로 해결된다. 복구 모드 "1 ( SRV_FORCE_IGNORE_CORRUPT )" 참조. 3. 이외 - InnoDB 테이블의 문제점들의 경우는 덤..
Gh-ost란, MySQL에서 online alter 기능이 있지만 아직 완벽하지는 않습니다. 이를 보완하기 위해 percona 의 pt-online-schema-change 스크립트를 사용하기도 하는데요, 원본과 복사본 테이블의 sync 를 trigger 기반으로 맞춘다는 단점이 있습니다. 특수 케이스에서는 일관성 문제도 야기될 수 있고, trigger 가 유발할 수 있는 Lock 으로 인해서 마지막에 swap 할 때 쿼리들이 실패하기도 합니다. 이러한 컨셉은 2009년부터 이어져왔고 큰 변화가 없었습니다. gh-ost 가 이러한 단점을 보완해서 pt-online-schema-change 를 대체할 수 있을지 조심스레 살펴보고 있습니다. 원본과 복사본(ghost table) 간의 sync 를 맞추는데 ..
Orchestrator 구축 이후 Takeover 및 Auto Failover를 설정하겠습니다. Orchestrator 구축 1편 : https://jhdatabase.tistory.com/134 [MySQL - Orchestrator 구축] part 1 Orchestrator란? MySQL용 복제 토폴로지 관리자로써 고가용성 및 복제 관리 툴입니다. 체인을 위아래로 훑으면서 마스터와 슬레이브를 찾아 MySQL 환경의 복제 토폴로지를 검색하는 기능을 제공합니다 jhdatabase.tistory.com Takeover Test ■ Master 확인 현재 Master -> 192.168.100.35 (DB 1번) mysql> show slave status\G; *************************..
Orchestrator란? MySQL용 복제 토폴로지 관리자로써 고가용성 및 복제 관리 툴입니다. 체인을 위아래로 훑으면서 마스터와 슬레이브를 찾아 MySQL 환경의 복제 토폴로지를 검색하는 기능을 제공합니다. 또한 GUI를 통해 복제 토폴로지를 리팩터링하는 데도 사용할 수 있는데, 드래그 앤 드롭 인터페이스를 사용해서 슬레이브를 마스터로 승격할 수 있습니다. 상태 개념을 사용해서 올바른 복구 방법을 지능적으로 선택하고 사용할 적당한 마스터 승격 프로세스를 결정하므로 노드에 장애가 발생할 경우 복구를 지원합니다. Orchestrator 기능 복제 트리의 토폴로지 및 상태를 자동으로 감지하고 모니터링합니다. GUI, CLI 또는 API를 사용하여 상태를 확인하고 작업을 수행할 수 있습니다. 마스터의 자동 ..
MySQL 3node 운영중 Master노드의 리소스 과부화 현상을 해소하고자 Read/Write Split을 하게되었습니다. Proxy서버로 ProxySQL을 사용하여 최종적으로 Write트랜잭션은 Master노드로만, Read 트랜잭션은 모든 노드로 가도록 설정하습니다. 테스트 환경 Hostname IP VIP DB Version proxy 192.168.100.84 proxysql-2.4.4 master 192.168.100.80 192.168.100.88 MySQL 8.0 slave1 192.168.100.81 MySQL 8.0 slave2 192.168.100.83 MySQL 8.0 사전 구성 MySQL서버 3nodes MHA구성 MariaDB [(none)]> show slave hosts\G..
안녕하세요 DB백업 데일리 성공 여부를 받아볼 수 있는 간단한 이메일 스크립트 설정을 해보았습니다. 아래 스크립트를 기반으로 데일리로 받아보고자 하는 정보를 조금씩 수정하여 사용하면 될거 같습니다~ 사전 설정 send mail을 사용하여 구글 메일로 발송 할 계획이라 sendmail 설치가 되어있어야합니다. ■ sendmail 설치 [root@mysql]# yum install -y sendmail sendmail-cf ■ config 수정 [root@mysql]# vi /etc/mail/sendmail.mc -- 52,53라인에 dnl을 삭제 [root@mysql bin]# m4 /etc/mail/sendmail.mc > /etc/mail/sendmail.cf ■ 25번 포트 open 확인 [root@..
Prometheus란, Apache 2 라이센스로 공개되어 있는 오픈소스로 모니터링 툴입니다. 다른 모니터링 도구와 가장 다른 점은 대부분의 모니터링 도구가 Push 방식 즉, 각 서버에 클라이언트를 설치하고 이 클라이언트가 메트릭 데이터를 수집해서 서버로 보내면 서버가 모니터링 상태를 보여주는 방식인데 반해서 Prometheus는 Pull 방식입니다. 그래서 서버가 각 클라이언트를 알고 있어야 하는게 아니라 서버에 클라이언트가 떠 있으면 서버가 주기적으로 클라이언트에 접속해서 데이터를 가져오는 방식입니다. 따라서 모니터링 대상 서버의 모니터링으로 인해 발생하는 부하를 줄여줍니다. 프로메테우스는 Time-series DB이기 때문에 시간과 함께 데이터를 저장합니다. Exporter란 모니터링 대상의 Me..
Cache란 캐시는 고속 저장소로 대용량 데이터, 복잡한 수학적 연산 결과, 정적 컨텐츠 등을 연산 없이 데이터를 불러올 수 있어 CPU 기능 부하와 지연 시간을 줄여줄 수 있고 퍼포먼스를 향상 시킬 수 있습니다. 보통 RAM이나 인메모리 엔진 같이 가볍고 빠른 하드웨어에 설치되어 실행됩니다. 캐시 히트율(cache hit rate)은 요청이 들어왔을 때 캐싱된 데이터가 있는 확률로 들어온 전체 요청 수 대비 캐시가 히트돼서 응답한 개수를 나타냅니다. 캐시 히트율이 높다는 건 그만큼 캐싱 데이터가 쓰여서 성능이 높다는 걸 의미합니다. 하지만 무조건 높다는 게 좋은 건 아닙니다. RDB인 MySQL과 캐시 DB인 Redis는 실시간 싱크(synch)가 이뤄지지 않기에 즉각적인 데이터 반영이 필요한 경우 캐..
MySQL Tunner란 MySQL현재 설정값과 서버의 사양, 사용상태들을 비교하여 MySQL설정을 하는 방법으로, perl 스크립트로 동작하며 현재 설정과 서버의 사양 , 사용 상태들을 비교하여 mysql 의 설정을 어떻게 바꾸면 좋을지 몇 가지 기본 성능 제안과 함께 간단한 형식으로 알려주는 툴입니다. MySQLTuner 는 MySQL / MariaDB / Percona Server에 대해 300 여개의 지표를 지원합니다. MySQL, MariaDB 에서 동작하며, 리눅스에서 동작하나, 윈도우에서는 지원하지 않습니다. 저와같은 초보 DB관리자가 성능개선을 위해 이것저것 알아볼때 빠뜨리는 부분을 확인 할 수 있어 좋습니다. ■ 호환성 목록 [MySQL] MySQL 8 (partial support, p..