MySQL Tunner란 MySQL현재 설정값과 서버의 사양, 사용상태들을 비교하여 MySQL설정을 하는 방법으로, perl 스크립트로 동작하며 현재 설정과 서버의 사양 , 사용 상태들을 비교하여 mysql 의 설정을 어떻게 바꾸면 좋을지 몇 가지 기본 성능 제안과 함께 간단한 형식으로 알려주는 툴입니다. MySQLTuner 는 MySQL / MariaDB / Percona Server에 대해 300 여개의 지표를 지원합니다. MySQL, MariaDB 에서 동작하며, 리눅스에서 동작하나, 윈도우에서는 지원하지 않습니다. 저와같은 초보 DB관리자가 성능개선을 위해 이것저것 알아볼때 빠뜨리는 부분을 확인 할 수 있어 좋습니다. ■ 호환성 목록 [MySQL] MySQL 8 (partial support, p..
Master 서버로는 Read & Write 작업을하고 Slave 서버로는 Read 작업을하여 select 쿼리에 대한 부하분산 구성을 하고 sysbench를 이용해 부하테스트를 진행하여 ProxySQL 툴과의 성능 비교를 진행하였습니다. 읽기와 쓰기 분리 기술을 구현하는 방법에는 여러 가지가 있습니다. 읽기 및 쓰기가 분리된 lua 파일이 포함되어 있습니다. 이 파일은 mysql-proxy를 사용하여 읽기 및 쓰기 분리를 달성하는 데 사용해야 하는 파일이기도 합니다. 구문 분석을 위해 lua 파서가 필요합니다. 따라서 루아 파서를 설치해야 합니다. ■ config 파일 생성 [root@mysqlproxy mysql-proxy]# mkdir /usr/local/mysql-proxy/conf/ [root@..
MySQL proxy이란 네트워크 프로토콜을 사용하여 네트워크를 통해 MySQL의 서버와 클라이언트 사이의 통신을 제공하는 애플리케이션이다. 기본적인 구성에서 클라이언트의 쿼리를 MySQL 서버로 전달하고 서버의 응답을 클라이언트에게 반환한다. 기본 구성 외에도 클라이언트와 서버간 통신을 모니터링하고 변경할 수 있다. 클라이언트에서 쿼리를 가로 채서 서버에 보낸 쿼리 목록에 추가 쿼리를 삽입하고 서버에서 반환 할 때 추가 결과를 제거 할 수 있다. proxy 서버를 구축 이유 보안 : 익명의 사용자가 서버에 직접 접근하는 것을 막는다. 속도 : proxy 서버는 사용자의 요청을 cache 해서, 동일한 요청이 들어오면 cache의 자원을 반환한다. 이는 서비스의 속도를 높여준다. ACL : 사이트 접근에..
phpMyAdmin 은 PHP로 개발 된 오픈소스이고, 웹 기반의 MySQL 관리 툴 입니다. 웹에서 편리하게 DB 관리를 해보기 위해 이번 테스트를 진행했습니다. ■ 사전 mysql db설치 & httpd설치 mysql> select @@version; +-----------+ | @@version | +-----------+ | 8.0.28 | +-----------+ 1 row in set (0.00 sec) [root@myadmin ~]# yum -y install epel-release [root@myadmin ~]# yum -y install httpd ■ php 설치 ※ php설치할 당시 phpMyAdmin을 구동하기 위한 관련 패키지를 진행하지 않은 접속이 불가합니다. 따라서 나머지 php..
pt-online-change-schema 이란, Mysql에서 몇억건 이상의 대량의 데이터를 갖고 있는 테이블을 수정 하는것은 어렵습니다. 단순히 alter table을 해버리면 4시간, 5시간 이상 수행되기 떄문에 이를 해결 하기 위해 create select(CTAS) 방법을 사용합니다. MySQL은 특히나 온라인 스키마 변경이 취약합니다. 물론 5.6부터는 online alter기능이 포함되어 있다고는 하나 100% 완벽하게 모든 상황을 온라인스럽게 제공해주지도 않고 그렇다하더라도, 일정 트래픽 이상의 데이터 변경이 이루어지는 경우, 게다가 슬레이브 지연을 염두한다면 꺼려지는 상황이 있습니다. (마스터에서 온라인 스키마 변경이 이루어졌을지라도, 이 관련 alter구문이 슬레이브로 넘어갔을 때는, ..
Online DDL 작업 정보 계측 memory ※ 사전 조건 performance_schema=ON MariaDB [(none)]> show variables like 'performance_schema'; +--------------------+-------+ | Variable_name | Value | +--------------------+-------+ | performance_schema | ON | +--------------------+-------+ ■ Performance_schmea.setup_instruments 조회 mysql> select substring_index(name,'/',1) as cate, count(*) as cnt from performance_schema.s..
Online DDL이란 테이블의 구조를 변경(스키마 변경)을 실행하는 도중에도, INSERT나 UPDATE와 같은 DML들을 실행할 수 있도록 해주는 기능입니다. MySQL 서버에서 Online DDL이 지원되지 않았던 시절에는 pt-online-schema-change와 같은 3-rd party 도구들을 이용해야 했지만, (이런 도구들은 불필요한 작업이 너무 많이 수반되어 서비스 영향도가 높은 편이어서) 이제는 대부분의 경우 MySQL 서버의 Online DDL을 이용합니다. InnoDB에서 지원하는 online ddl 알고리즘 - copy - inplace - instant (mysql 8.0) ■ Copy - 변경된 스키마가 적용된 임시 테이블을 생성하여 기존 테이블의 데이터를 복사한 후 테이블 이..
※ analyze table 1. optimizer가 사용하는 통계정보의 갱신처리입니다. 2. InnoDB에서는 자발(자동)적으로 통계 정보를 갱신하기 때문에 크게 필요없다고 합니다. MyISAM의 경우는 카디날리티가 정확하게 갱신되어 있지만 InnoDB는 아주 부정확하고 analyze table을 실행하면 빈번이 값이 바뀐다. InnoDB의 경우 자동으로 갱신되는 조건은 아래와 같다. - 전에 인덱스 통계정보를 갱신한후 테이블의 전체행수의1/16이 갱신된경우 - 전에 인덱스 통계정보를 갱신한후 20억행이상이 갱신된경우 3. analyze table은 랜덤으로 페이지를 8회추출해서 그 페이지내에 포함된 행 데이타를 조사해서 인덱스의 통계정보를 근사치로 갱신한다. 근사치이지만 옵티마이저가 사용하기 위한 통..
현재의 Master+Slave1,2,3 MHA 구성에서 Slave 2,3을 MHA에서 제외시킨 뒤 LoadBalancer를 통해 Slave 2,3을 select 용 부하분산을 할 예정입니다. 여기서 가장 중요한 점은 was단에서 read와 write를 각 IP별로 나눠줄 수 있어야합니다. 먼저 확인 후 진행하시길 바랍니다. 최종적으로 MHA manager + Master + Slave1 이 write작업 및 고가용성을 지원하며, Slave2 + Slave3은 read 부하분산용으로 사용 예정입니다. 따라서 write용 IP는 MHA의 VIP가 서비스 IP가 되며, read용 IP는 Loadbalancer의 도메인이 됩니다. ■ Slave2,3 MHA에서 제외 (mgr) [root@jh-mgr ~]# vi..
part1에 이어 구축 진행 및 failover테스트를 하도록 하겠습니다. part1 : https://jhdatabase.tistory.com/101 [MySQL - 4node MHA 구축] part 1. 그동안 master-slave 구조에서의 mha는 2node가 보통입니다. 이번 포스팅에선 총 4node를 구성할 예정이며 master와 slave 3대를 구축하여 LB를 통해 부하분산이 최종 목표입니다. 테스트 환경 Hostname Public I. jhdatabase.tistory.com ■ MHA scripts 수정 [root@jh-mgr ~]# cp /root/mha4mysql-manager-0.57/samples/scripts/master_ip_failover /var/log/masterha..