MariaDB / MySQL 소개 및 가이드 문서

회사에서 배포하던 문서들을 slideshare에 공개 했습니다.
https://www.slideshare.net/ohnew/presentations

1월에 올린 자료들은 아래와 같습니다.

* presentations
– MariaDB 소개
– MariaDB 10.2 소개 및 구축사례
– Percona 소개
– MariaDB HA 솔루션
– database proxy (MariaDB, MySQL, Percona)
– MMM (Multi-Master Replication Manager)
– MHA (Master High Availability Manager and tools for MySQL) 가이드
– Galera cluster 표준 제안서
– MySQL / MariaDB 암호화 (TDE)

* documents
– Enterprise open source databases
– XtraBackup 가이드
– MySQL NDB cluster 가이드

Advertisements

Enterprise Open Source Database 비교

작년에 MariaDB에서 엔터프라이즈 오픈소스 데이터베이스에 대해서 비교한 자료가 있었습니다. 한글로 번역한것이 있어서 공유합니다.

 

오픈소스 데이터베이스들은 subscription 정책으로 엔터프라이즈 기능들을 제공합니다. 비교 대상으로는 MariaDB 10.3 / MySQL Enterprise / Enterprise DB Postgres 제품들입니다.

MariaDB에서 만든 문서이기에 MariaDB가 좋은 관점으로 쓰여 있습니다.

MariaDB가 10.3부터 오라클 데이터베이스의 마이그레이션을 중점으로 기능을 추가하고 있어서 해당 비교도 오라클 호환성 관련한 내용이 많습니다.

 

Percona 서버 엔진별 파일 크기 비교

Percona Server for MySQL 5.7.20 서버에 MyRocks 엔진이 GA 되어서 InnoDB와 TokuDB하고 파일 사이즈를 비교해 봤습니다.

 

아래 테이블을 만들어서 2,621,440 rows를 insert 했습니다.

CREATE TABLE oi_rocksdb (
c1 bigint(20) NOT NULL AUTO_INCREMENT,
c2 datetime DEFAULT NULL,
c3 varchar(20) DEFAULT NULL,
PRIMARY KEY (c1)
) ENGINE=ROCKSDB

 

데이터 파일 크기를 비교해 보면 아래와 같습니다.

InnoDB 159,383,552 100%
InnoDB Compressed 75,497,472 47%
TokuDB fast 33,554,432 21%
TokuDB small 16,777,216 11%
RocksDB 18,718,486 12%

 

InnoDB에 비해서 MyRocks엔진의 데이터 파일 크기가 12%입니다. 압축률이 좋긴하네요.

압축률이 제일 좋은것인 TokuDB의 row_format을 small로 사용하느것입니다.

InnoDB 압축을 사용하면 50%가량의 파일 사이즈를 줄일 수 있지만 TokuDB나 RocksDB의 압축이 월등히 좋습니다.

안정성으로 보면 MyRocks엔진은 아직 검증이 많이 안되서 TokuDB를 사용하는게 좋겠습니다.

MariaDB 10년

linkedin에 Michael Monty Widenius ( https://www.linkedin.com/in/montywi/ )가 MariaDB 10년이라고 올라왔습니다.

MariaDB가 10년이 된거네요.

wikipedia를 찾아보니 “On 16 January 2008, MySQL AB announced that it had agreed to be acquired by Sun Microsystems for approximately $1 billion. ” 이런 내용이 있네요.

https://en.wikipedia.org/wiki/MariaDB

 

MySQL도 찾아 봤습니다.

https://en.wikipedia.org/wiki/MySQL

 

Percona는 2006년에 시작을 했네요.

https://en.wikipedia.org/wiki/Percona_Server_for_MySQL

 

Percona 5.7.20 서버 MyRocks 설치

Percona Server for MySQL 5.7.20에서 MyRocks 엔진이 GA로 나왔다고 해서 설치를 해 봤습니다.

설치 이후에 기본 엔진으로 올라 오지는 않습니다.

mysql> show engines;
+--------------------+---------+----------------------------------------------------------------------------+--------------+------+------------+
| Engine | Support | Comment | Transactions | XA | Savepoints |
+--------------------+---------+----------------------------------------------------------------------------+--------------+------+------------+
| MEMORY | YES | Hash based, stored in memory, useful for temporary tables | NO | NO | NO |
| MRG_MYISAM | YES | Collection of identical MyISAM tables | NO | NO | NO |
| PERFORMANCE_SCHEMA | YES | Performance Schema | NO | NO | NO |
| BLACKHOLE | YES | /dev/null storage engine (anything you write to it disappears) | NO | NO | NO |
| CSV | YES | CSV storage engine | NO | NO | NO |
| TokuDB | YES | Percona TokuDB Storage Engine with Fractal Tree(tm) Technology | YES | YES | YES |
| InnoDB | DEFAULT | Percona-XtraDB, Supports transactions, row-level locking, and foreign keys | YES | YES | YES |
| ARCHIVE | YES | Archive storage engine | NO | NO | NO |
| MyISAM | YES | MyISAM storage engine | NO | NO | NO |
| FEDERATED | NO | Federated MySQL storage engine | NULL | NULL | NULL |
+--------------------+---------+----------------------------------------------------------------------------+--------------+------+------------+

MyRocks 설치는 아래와 같이 할 수 있습니다.

mysql> install plugin rocksdb soname 'ha_rocksdb.so';
Query OK, 0 rows affected (2.03 sec)

 

확인은 show engines 이용해서 할 수 있습니다.

mysql> show engines;
+--------------------+---------+----------------------------------------------------------------------------+--------------+------+------------+
| Engine | Support | Comment | Transactions | XA | Savepoints |
+--------------------+---------+----------------------------------------------------------------------------+--------------+------+------------+
| ROCKSDB | YES | RocksDB storage engine | YES | YES | YES |
| MRG_MYISAM | YES | Collection of identical MyISAM tables | NO | NO | NO |
| PERFORMANCE_SCHEMA | YES | Performance Schema | NO | NO | NO |
| BLACKHOLE | YES | /dev/null storage engine (anything you write to it disappears) | NO | NO | NO |
| CSV | YES | CSV storage engine | NO | NO | NO |
| TokuDB | YES | Percona TokuDB Storage Engine with Fractal Tree(tm) Technology | YES | YES | YES |
| InnoDB | DEFAULT | Percona-XtraDB, Supports transactions, row-level locking, and foreign keys | YES | YES | YES |
| ARCHIVE | YES | Archive storage engine | NO | NO | NO |
| MyISAM | YES | MyISAM storage engine | NO | NO | NO |
| FEDERATED | NO | Federated MySQL storage engine | NULL | NULL | NULL |
| MEMORY | YES | Hash based, stored in memory, useful for temporary tables | NO | NO | NO |
+--------------------+---------+----------------------------------------------------------------------------+--------------+------+------------+

 

2017 MySQL / MariaDB / Percona 기술지원

2017년도에 기술지원 했던 일들이 어떤 것들이 있었는지 정리를 해 보려고 합니다.

 

작년초에 newsql인 ClustrixDB에 대한 기술검토를 했었습니다. 오픈소스가 아닌 사용제품으로 cluster 구성으로 엔진은 다르지만 SQL 사용이 MySQL과 같이 사용할 수 있습니다. 국내에 몇몇 사례들이 생기고 있는것으로 압니다.

 

MHA 관련해서 AWS 환경에서 구축 지원을 했었고요. domain 방식의 failover에 대한 이슈를 팀 내부를 통해서 기술 공유를 받았습니다.

 

CDC 솔루션인 AR(Attunity Replica)를 tungsten 대신으로 사용하기 위한 기술 검토를 했었기도 했습니다. 실제로 구축을 해 본적이 없어서 기술적 이해를 해보지는 못했습니다.

 

기존 회사의 주요 엔터프라이즈 고객사들에 대한 기술지원 이외에 다양한 스타트업과 수도권 이외의 지역에 대한 지역 확대와 업종에 대한 확대가 있었네요. 처음 접하는 환경과 이슈들이 꽤 있었습니다. 자체적으로 해결을 해보다가 안될 경우에 지원을 가는 경우가 많아서 쉽지 않은 상황들이 많은것이 어렵기는 합니다.

 

MariaDB ColumnStore가 2016년말에 나온 이후에 2017년 4월부터 기술지원을 시작을 했습니다. 기존 오픈소스 테이터베이스들이 OLTP에 중점을 뒀었다면 ColumnStore 엔진은 OLAP 데이터에 적합합니다. 상용 columnar 데이터베이스들이 안정적이고 성능이 좋기는 하지만, 가성비로 사용을 한다면 괜찮은 대안이 될 수 있습니다.

 

금융쪽에서 Percona Server for MySQL을 사용 하면서 관련한 내부 기술 공유도 있었습니다. semi sync 방식의 replication과 MHA를 이용한 무중단 아키텍처에 대한 좋은 경험이었습니다.

 

TokuDB 기술지원을 하기도 했습니다. MariaDB에서 Percona 서버로 마이그레이션 관련해서 여러 이슈들이 있었던것을 하나씩 해결해 나가면서 여러 경험들을 할 수 있었습니다.

 

업종으로 보면 금융(은행, 비트코인)과 공공쪽에서 관심을 가지면서 미팅을 했었고요.

데이터 크기로 보면 1TB 이상의 데이터들을 사용하는곳이 점점 많아지면서 관련 작업들에 대한 기술적 노하우들이 더 필요하다고 느끼게 됐습니다. Percona 서버로 10TB 이상 사용하는곳도 있었네요. 데이터 건수로는 70억건 이상까지도 잘 운영하는곳이 있었고요.

 

MySQL / MariaDB / percona 오픈소스 데이터베이스들의 경쟁이 2018년에는 더 치열하지 않을까 합니다. 현재 발표된 MySQL 8.0 / MariaDB 10.3 로드맵들과 Percona에서 MyRocks를 1월부터 내놓으면서 관심이 가기 시작합니다.

Percona Server for MySQL 5.7.20 with MyRocks

https://www.percona.com/about-percona/newsroom/press-releases/percona-announces-general-availability-percona-server-mysql-5-7-2

 

Percona에서 Percona Server for MySQL 5.7.20 버전이 나왔습니다.

MyRocks 엔진이 GA인것이 핵심으로 보입니다. (MariaDB는 alpha 입니다.)

 

MyRocks엔진은 facebook에서 사용하고 있는 오픈소스 엔진입니다. SSD에 최적화된 성능이 강점인 엔진입니다. MyRocks 엔진에 대한 자세한 내용은 아래 웹페이지들을 참고 하시면 됩니다.

http://myrocks.io/

https://mariadb.com/kb/en/library/myrocks/

db-engines.com 2017년 12월 순위

https://db-engines.com/en/ranking/relational+dbms

 

database의 순위를 알려주는 db-engines.com의 2017년 12월 순위를 찾아봤습니다.

어제 linkedin에서 MariaDB 관계자가 링크를 올렸길래 봤더니 MariaDB가 Top 10에 올라왔습니다.

1,2위는 Oracle / MySQL가 계속 유지를 하고 있고요. Top 10 순위는 거의 변동이 없는데요. MariaDB가 많이 올라 왔네요.

Percona 서버는 1위가 내려가서 47위이네요.

clustrix는 87위로 많이 내려 갔네요.

OLAP database인 ClickHouse가 69위로 많이 올라 왔네요.

MariaDB가 Top10에 진입하게 된것이 ColumnStore엔진의 영향일수도 있겠네요.

 

opensource database MySQL 생태계가 더 커지고 있다고 봐야 겠네요.

MariaDB 10.4 로드맵

MariaDB 10.4 계획이 나왔습니다.

https://mariadb.com/kb/en/library/plans-for-mariadb-104/

 

현재 GA는 10.2.11이 최신이고요. 10.3은 alpha 개발중입니다.

알리바바 등의 투자를 받으면서 적극적인 방향으로 가는 듯 합니다.

 

10.4의 내용중에 개인적으로 관심이 가는 것들은 아래와 같습니다.

Compatibility

  • Oracle stage 2
  • CONNECT BY – AliSQL & MariaDB corporation & MariaDB foundation
  • MSSQL (?)

Distributed Storage Engine (stage 1 of 4)

  • Write scaling
  • Planning to be done in November-December

 

아직 10.3도 제대로 확인이 안되긴 했지만, 10.4까지 나오면 Oracle 마이그레이션 관련 이슈들이 많이 나올 듯 합니다. 중국쪽 투자는 받으면서 중국쪽 의견들을 많이 반영하는거 같기도 합니다.