MariaDB / MySQL Database Proxy

2017년부터 MariaDB / MySQL Database Proxy를 적용하는 서비스들이 늘어나고 있습니다.

MariaDB에서 제공하는 MaxScale과 MySQL router, Percona에서 기술지원하는 ProxySQL에 대한 간략한 정리를 해 봤습니다.

 

Advertisements

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 마이그레이션 관련 이슈들이 많이 나올 듯 합니다. 중국쪽 투자는 받으면서 중국쪽 의견들을 많이 반영하는거 같기도 합니다.

 

Percona TokuDB

TokuDB를 Percona에서 인수한 이후에 뜸하다가 최근 다시 관심을 가지고 보니 Percona Server에 최적화하고 있습니다.

https://www.percona.com/software/mysql-database/percona-tokudb

 

Percona의 공식 문서를 보면 아래와 같이 Percona Server 5.7을 중심으로 제공을 하고 있습니다.

https://www.percona.com/doc/percona-server/LATEST/tokudb/tokudb_intro.html

Warning

Only the Percona supplied TokuDB engine should be used with Percona Server 5.7. A TokuDBengine downloaded from other sources is not compatible. TokuDB file formats are not the same across MySQL variants. Migrating from one variant to any other variant requires a logical data dump and reload.

 

MariaDB에서 TokuDB 배포는 glibc_214 파일에 포함을 하고 있습니다.

In the MariaDB binary tarballs, only the ones labeled "glibc_214" have TokuDB.

패키지 설치를 할때는 별도의 패키지를 설치해야 합니다.

In MariaDB 5.5.33 and MariaDB 10.0.5, TokuDB is in a separate package called mariadb-tokudb-engine-x.x, where x.x is the MariaDB series (5.5 or 10.0). The package is installed, for example on 5.5, as follows:

 

자세한 사항은 아래 설치 문서를 참고 하시면 됩니다.

https://mariadb.com/kb/en/library/enabling-tokudb/