Offcanvas

데이터센터 / 애플리케이션

마이SQL 관리자를 위한 오픈소스 추천 툴 5가지

2017.12.18 Michael Coburn  |  InfoWorld

데이터베이스 관리자(DBA)에게 데이터베이스 실행 성능을 최상으로 유지하는 일은 접시 돌리기와 비슷하다. 민첩성, 집중력, 빠른 대응, 냉철한 두뇌가 필요하고 가끔은 위기 상황을 알리는 구경꾼의 외침도 필요하다. 데이터베이스는 거의 모든 애플리케이션의 성공적인 운영을 위한 핵심 요소다. 따라서 조직의 데이터를 책임지는 DBA라면 데이터베이스 관리 프로세스를 능률화하고 일상적인 유지관리 작업을 간소화하는 신뢰할 만한 툴을 반드시 갖춰야 한다. DBA에게는 원활한 시스템 운영을 위한 유용한 툴이 필요하다.

그렇다면 MySQL 관리자를 위한 검증된 툴은 무엇일까? 필자가 선정한 MySQL 관리자를 위한 최고의 오픈소스 툴 5가지를 살펴보고 일상적인 MySQL 관리 작업 측면에서 각각의 가치에 대해 알아보자. 각 툴에는 깃허브(GitHub) 리포지토리 링크와 현재 기준 깃허브 별점을 첨부했다.

Image Credit : GettyImagesBank

Mycli
Mycli 프로젝트는 MySQL 명령줄 자동 완성 및 구문 하이라이트 기능을 제공한다. 관리자에게 가장 인기 있는 MySQL 툴 중 하나다.

많은 MySQL DBA는 점프 호스트, 이중 요소 인증과 같은 보안 제약으로 인해 명령줄로 시스템에 접근할 수밖에 없다. 이러한 경우 MySQL 워크벤치(Workbench), Monyog 등의 편리한 GUI 툴을 사용할 수 없다.

명령줄에서는 대부분의 시간을 검정색 바탕에 흰 글씨의 터미널 화면을 보면서 보낸다. 그래서 Mycli의 가장 좋은 점 중 하나는 풍부한 구문 하이라이트 기능이다. 이 기능을 통해 예를 들어 WHERE 절에서 함수 및 연산자를 쿼리 문자열과 시각적으로 구분할 수 있다. 1줄짜리 짧은 쿼리에서는 별 효용성이 없겠지만, 두 개 이상 테이블을 대상으로 JOIN 연산을 수행하는 쿼리에서는 큰 효과를 발휘한다. 인덱싱된 열을 사용해서 JOIN하기? WHERE 절에서 선행 와일드카드를 사용해 필터링하기? Mycli는 여러 줄의 쿼리와 구문 하이라이트를 지원하므로 쿼리를 검토하거나 최적화할 때 원하는 부분으로 즉각 이동할 수 있다. 여러 가지 구문 하이라이트 색상표 중에서 선택하거나 직접 만들 수 있다.

Mycli의 또 다른 핵심 기능은 스마트 완성이다. 테이블이나 열 이름의 앞 몇 글자만 입력한 후 맥락 인식 목록에서 선택하면 된다. 더 이상 WHERE 절에서 열 이름이 생각나지 않아 현재 입력을 포기하고 SHOW CREATE TABLE을 실행할 필요가 없다!



Mycli를 사용하면 \fs를 사용해서 즐겨 사용하는 쿼리의 별칭을 지정할 수 있다(예: \fs myAlias myQuery). 이렇게 해 두면 필요할 때마다 \f myAlias를 사용해 해당 쿼리를 실행할 수 있으므로 아주 편리하다.

Mycli 프로젝트는 BSD 3 라이선스를 사용한다. 기여자는 44명, 커밋 수는 1200회, 별 수는 5,000개다.

Gh-ost
MySQL DBA의 99%는 MySQL 테이블을 변경하면서 프로덕션에 미칠 영향을 두려워한다. 그렇다면 Gh-ost(GitHub Online Scheme Migration)를 사용해 보자. Gh-ost는 쓰기 차단이 없고 트리거를 사용하지 않으면서 MySQL 스키마를 변경할 수 있으며, 마이그레이션을 일시 중지하고 재개하는 기능까지 제공한다.

그게 왜 중요한가? MySQL 5.6에는 새로운 ALTER TABLE ... ALGORITHM=INPLACE DDL(데이터 정의 언어) 기능이 포함되므로 인덱스 추가(B-트리)와 같은 일반적인 작업에서 쓰기를 차단하지 않고 테이블을 수정하는 것이 가능해졌다. 그러나 쓰기(DML 문)가 차단되는 조건이 아직 몇 가지 남아 있는데, 대표적인 경우가 FULLTEXT 인덱스 추가, 테이블스페이스 암호화, 열 유형 변환이다.

퍼코나(Percona)의 pt-online-schema-change를 비롯해 인기 있는 다른 온라인 스키마 변경 툴은 마스터에 세 가지 트리거 집합(INSERT, UPDATE, DELETE)을 구현해 섀도 복사본 테이블을 변경 사항과 동기화하는 방식으로 작동한다. 이 경우 쓰기 증폭 탓에 약간의 성능 불이익이 발생하지만 더 중요한 점은 7가지 메타데이터 잠금 인스턴스가 필요하다는 것이다. 이는 사실상 DML(데이터 조작 언어) 이벤트를 교착상태에 빠지게 한다.

Gh-ost는 바이너리 로그를 사용해 작동하므로 트리거 방식의 단점이 없다. 마지막으로 Gh-ost는 활동을 사실상 0 이벤트로 스로틀링할 수 있으므로 서버의 부담이 커지면 스키마 마이그레이션을 잠시 동안 중지했다가 사용량이 줄어들 때 재개할 수 있다.

그렇다면 Gh-ost는 어떻게 작동할까? 기본적으로 Gh-ost는 복제본(슬레이브)에 연결되어 마스터를 식별하고 마스터에 마이그레이션을 적용한다. binlog_format=ROW에서 소스 테이블에 대한 변경 사항을 복제본에 받고, 로그를 구문 분석하고, 마스터의 섀도 테이블에서 재실행될 문을 변환한다. 복제본의 행 수를 추적하고 원자적 컷오버(테이블 전환)를 수행해야 할 시점을 파악한다.



Gh-ost는 마스터에서(슬레이브의 유무와 관계없이) 마이그레이션을 직접 실행하고 마스터의 binlog_format=ROW 이벤트를 읽은 다음 이를 섀도 테이블에 다시 적용하는 대안 모드도 제공한다.

마스터에 영향을 미치지 않고 복제본에서만 마이그레이션을 실행하는 마지막 옵션은 마이그레이션을 테스트하거나 검증할 때 유용하다. 참고로 스키마에 외래 키가 있는 구성은 지원되지 않으므로 Gh-ost가 정상 작동하지 않을 수 있다.



Gh-ost의 전신은 oak-online-alter-table이다. 퍼코나 CEO 피터 자이체프가 쓴 Gh-ost와 pt-online-schema-change의 성능 비교에 대한 글과 그에 대해 OAK 툴킷 및 Gh-ost 제작자이자 유지 관리자인 실로미 노아크의 답글을 볼 수 있다.

Gh-ost 프로젝트는 MIT 라이선스를 사용한다. 기여자는29명, 커밋은 1,000회에 근접하고 별 수는 3,000개다.

PhpMyAdmin
MySQL 툴 중에서 가장 오래되고 가장 성숙한 프로젝트 중 하나는 웹을 통해 MySQL을 관리하는 데 사용되는 유명한 PhpMyAdmin 툴이다. PhpMyAdmin을 사용하면 DBA는 MySQL 데이터베이스 개체, 즉 데이터베이스와 테이블, 뷰, 필드, 인덱스를 탐색하고 수정할 수 있다. 십여 가지 이상의 형식을 사용한 데이터 내보내기, MySQL 사용자 및 권한 수정, 그리고 필자가 가장 즐겨 사용하는 애드혹 쿼리 실행 옵션이 있다.



Status(상태) 탭은 지정된 데이터베이스 인스턴스에 대한 질의, 연결/프로세스 및 네트워크 트래픽을 동적 도표로 표시하며 Advisor(어드바이저) 탭은 잠재적 성능 문제 목록과 그 문제를 해결하기 위한 권장 사항을 보여준다.



PhpMyAdmin은 GPLv2 라이선스를 사용한다. 기여자 수가 800명 이상인 거대 프로젝트이며 커밋 수는 무려 11만 2,000회에 이르고 별 수는 2,700개다. https://demo.phpmyadmin.net/master-config/에서 온라인 데모를 볼 수 있다.

Sqlcheck

SQL 안티 패턴은 쿼리 속도를 저하시킬 수 있다. 숙련된 DBA와 개발자도 안티 패턴을 찾아 해결하기 위해 코드를 붙잡고 씨름하는 경우가 많다. Sqlcheck는 빌 카윈의 책 “SQL 안티 패턴: 데이터베이스 프로그래밍의 함정 피하기(SQL Anti-patterns: Avoiding the Pitfalls of Database Programming)”의 내용과 일맥상통한다. 카윈은 안티 패턴을 다음과 같은 네 가지 범주로 분류했다.

1. 논리적 데이터베이스 설계
2. 물리적 데이터베이스 설계
3. 쿼리
4. 애플리케이션 개발



Sqlcheck는 저, 중 고위험으로 분류되는 다양한 위험 수준에 대응할 수 있다. 이를 통해 성능 영향이 가장 큰 쿼리를 우선 처리할 수 있으므로 안티 패턴의 수가 많을 때 유용하다. 개별 쿼리를 파일로 모은 다음 툴에 인수로 전달하기만 하면 된다.

필자는 PMM 데모 환경에서 샘플을 가져와 다음 출력을 생성했다.

[michael@fedora ~]$ sqlcheck —file_name PMMDemoQueries.txt
+————————————————————————-+
| SQLCHECK |
+————————————————————————-+
> RISK LEVEL :: ALL ANTI-PATTERNS
> SQL FILE NAME :: output
> COLOR MODE :: ENABLED
> VERBOSE MODE :: DISABLED
> DELIMITER :: ;
————————————————————————-
==================== Results ===================

————————————————————————-
SQL Statement: select table_schema, table_name, table_type, ifnull(engine, ‘none’) as engine,
ifnull(version, ‘0’) as version, ifnull(row_format, ‘none’) as row_format,
ifnull(table_rows, ‘0’) as table_rows, ifnull(data_length, ‘0’) as data_length,
ifnull(index_length, ‘0’) as index_length, ifnull(data_free, ‘0’) as data_free,
ifnull(create_options, ‘none’) as create_options from information_schema.tables
where table_schema = ‘innodb_small’;
[output]: (HINTS) NULL Usage
[Matching Expression: null]
...
==================== Summary ===================
All Anti-Patterns and Hints :: 7
> High Risk :: 0
> Medium Risk :: 0
> Low Risk :: 2
> Hints :: 5


Sqlcheck는 아파치 라이선스 2.0을 사용한다. 기여자는 5명, 커밋 횟수 187회, 별 수는 1400개다.

오케스트레이터(Orchestrator)
오케스트레이터는 고가용성 및 복제 관리 툴이다. 체인을 위아래로 훑으면서 마스터와 슬레이브를 찾아 MySQL 환경의 복제 토폴로지를 검색하는 기능을 제공한다. 또한 GUI를 통해 복제 토폴로지를 리팩터링하는 데도 사용할 수 있는데, 드래그 앤 드롭 인터페이스를 사용해서 슬레이브를 마스터로 승격할 수 있다. 아주 안전한 작업이다. 사실 오케스트레이터는 시스템 문제를 방지하기 위해 모든 비정상적 작업을 거부한다.

상태 개념을 사용해서 올바른 복구 방법을 지능적으로 선택하고 사용할 적당한 마스터 승격 프로세스를 결정하므로 노드에 장애가 발생할 경우 복구를 지원한다.



오케스트레이터는 실로미 노아크가 깃허브에서 제공하는 또다른 툴이다. 아파치 라이선스 2.0이 적용된다. 기여자는 34명, 커밋 횟수는 2,780회, 별 수는 900개다.

접시 돌리기
앞서 도입부에서 MySQL 관리자의 역할이 접시 돌리기 묘기를 부리는 사람과 비슷하다는 말을 했다. 상태가 불안정해지고 주의가 필요할 때 구경꾼의 비명 소리는 종종 도움이 된다. PMM(Percona Monitoring and Management)가 바로 이 역할을 한다. 주의가 필요한 부분을 하이라이트함으로써 데이터베이스 관리자가 데이터베이스 문제를 파악해 해결하도록 돕는다.

PMM은 오케스트레이터를 포함한 여러 가지 우수한 오픈소스 툴을 수용해서 종합적인 데이터베이스 모니터링 및 관리 기능을 제공한다. 그래픽을 통해 데이터베이스 서버 상태에 관한 이해하기 쉬운 시각적 단서를 제공하며 MySQL, 마리아DB, 몽고DB 서버를 지원한다. 공개 데모를 직접 사용해 보자!

필자가 꼽은 5가지 툴, 그리고 퍼코나의 모든 소프트웨어와 마찬가지로 PMM 역시 완전히 무료이며 퍼코나 웹 사이트 또는 깃허브에서 다운로드할 수 있는 오픈소스 소프트웨어다.

지금까지 설명한 각 툴은 MySQL 관리자 역할의 여러 가지 측면에서 도움을 준다. 데이터베이스 관리 툴 모음에서 한 자리를 차지할 만하며 각 프로젝트에 참여한 기여자들의 경험과 기술을 활용할 수 있게 해준다. 무료 오픈소스며 각자 환경의 필요에 따라 조정하거나 기본 상태 그대로 사용할 수 있다. 아직 이 유용한 툴을 사용해본 적이 없다면 현재 사용 중인 방법과 툴에 비해 더 유리한 점이 있는지 한번씩 살펴보길 권한다. editor@itworld.co.kr

CIO Korea 뉴스레터 및 IT 트랜드 보고서 무료 구독하기
추천 테크라이브러리

회사명:한국IDG 제호: CIO Korea 주소 : 서울시 중구 세종대로 23, 4층 우)04512
등록번호 : 서울 아01641 등록발행일자 : 2011년 05월 27일

발행인 : 박형미 편집인 : 천신응 청소년보호책임자 : 한정규
사업자 등록번호 : 214-87-22467 Tel : 02-558-6950

Copyright © 2024 International Data Group. All rights reserved.