MariaDB ColumnStore Single 설치 (CentOS7)

CentOS7 리눅스에 일반 사용자 계정으로 MariaDB ColumnStore를 Single 설치는 아래와 같이 합니다.

### MariaDB ColumnStore non-root user install
## CentOS Linux release 7.2.1511 (Core)
## MariaDB ColumnStore 1.0.10
## – single / internal storage
## – install_dir : /opt/

# yum -y install boost
# yum -y install expect perl perl-DBI openssl zlib file sudo libaio rsync snappy net-tools perl-DBD-MySQL

# adduser maria -u 416
# groupadd -g 815 dbroot
# usermod -g dbroot maria

# cat ~/.profile
export COLUMNSTORE_INSTALL_DIR=/opt/mariadb/columnstore
export PATH=$COLUMNSTORE_INSTALL_DIR/bin:$COLUMNSTORE_INSTALL_DIR/mysql/bin:/usr/sbin:$PATH
export LD_LIBRARY_PATH=$COLUMNSTORE_INSTALL_DIR/lib:$COLUMNSTORE_INSTALL_DIR/mysql/lib/mysql

# visudo
maria ALL=(ALL) NOPASSWD: ALL
#Defaults requiretty

# vi /etc/security/limits.conf
maria hard nofile 65536
maria soft nofile 65536

# chmod 777 /tmp
# chmod 777 /dev/shm

# cd /opt
# wget https://downloads.mariadb.com/ColumnStore/1.0.10/centos/x86_64/7/mariadb-columnstore-1.0.10-1-centos7.x86_64.bin.tar.gz
# tar xvfz mariadb-columnstore-1.0.10-1-centos7.x86_64.bin.tar.gz
# chown -R maria:dbroot mariadb
# ./mariadb/columnstore/bin/post-install –installdir=/opt/mariadb/columnstore
# /opt/mariadb/columnstore/bin/postConfigure -i /opt/mariadb/columnstore

# . /opt/mariadb/columnstore/bin/columnstoreAlias
# mcsadmin getsysteminfo
# mcsmysql

MariaDB (MySQL) 테이블 컬럼 data type 비교

MariaDB(MySQL)를 운영하다보면 예전 스키마와 비교를 해서 달라진 것들을 찾아야 할때가 있습니다.

information_schema에서 columns 테이블을 이용하면 아래 query로 테이블간에 다른 컬럼을 확인할 수 있습니다.

-- column의 data type 다른것 찾기
select a.table_name, a.column_name, a.data_type, a.column_type, b.table_name, b.column_name, b.data_type, b.column_type
from (
 select table_name, column_name, data_type, column_type from information_schema.columns where table_schema = 'ohnew' ) as a
inner join (
 select table_name, column_name, data_type, column_type from information_schema.columns where table_schema = 'ohnew_20170815' ) as b on a.table_name = b.table_name and a.column_name = b.column_name
where a.data_type <> b.data_type or a.column_type <> b.column_type
;

-- table의 column 갯수가 다른것 찾기
select a.table_name, a.column_cnt, b.table_name, b.column_cnt
from (
 select table_name, count(*) as column_cnt from information_schema.columns where table_schema = 'ohnew' group by table_name) as a
inner join (
 select table_name, count(*) as column_cnt from information_schema.columns where table_schema = 'ohnew_20170815' group by table_name) as b on a.table_name = b.table_name
where a.column_cnt <> b.column_cnt
;

 

위 쿼리는 ohnew라는 데이터베이스와 ohnew_201708 복원 데이터베이스간의 컬럼 비교 입니다. information_schema를 이용하면 좀 더 다양한 확인이 가능합니다.

MRO(Microsoft R Open)에서 MariaDB 연동하기

VisualStudio에서 MRO(Microsoft R Open)를 사용해서 MariaDB 연동을 할 수 있습니다.

연동과 관련해서 기본적인 정보는 MariaDB 웹사이트에서 참고를 했습니다.

https://mariadb.com/kb/en/mariadb/r-statistical-programming-using-mariadb-as-the-background-database/

 

Windows 환경에서 아래 프로그램들을 설치 합니다.

 

VisualStudio 메뉴에서 “R 도구 : R 대화형” 창을 실행합니다.

연동과 관련한 샘플 코드는 아래와 같습니다.

> install.packages("devtools")
Installing package into ‘C:/Users/corenet/Documents/R/win-library/3.3’
(as ‘lib’ is unspecified)
also installing the dependencies ‘mime’, ‘openssl’, ‘httr’, ‘memoise’, ‘whisker’, ‘digest’, ‘rstudioapi’, ‘git2r’, ‘withr’
trying URL 'https://mran.revolutionanalytics.com/snapshot/2016-11-01/bin/windows/contrib/3.3/mime_0.5.zip'
Content type 'application/zip'
 length 37486 bytes (36 KB)
downloaded 36 KB
trying URL 'https://mran.revolutionanalytics.com/snapshot/2016-11-01/bin/windows/contrib/3.3/openssl_0.9.5.zip'
Content type 'application/zip'
 length 3041433 bytes (2.9 MB)
downloaded 2.9 MB
trying URL 'https://mran.revolutionanalytics.com/snapshot/2016-11-01/bin/windows/contrib/3.3/httr_1.2.1.zip'
Content type 'application/zip'
 length 279235 bytes (272 KB)
downloaded 272 KB
trying URL 'https://mran.revolutionanalytics.com/snapshot/2016-11-01/bin/windows/contrib/3.3/memoise_1.0.0.zip'
Content type 'application/zip'
 length 23304 bytes (22 KB)
downloaded 22 KB
trying URL 'https://mran.revolutionanalytics.com/snapshot/2016-11-01/bin/windows/contrib/3.3/whisker_0.3-2.zip'
Content type 'application/zip'
 length 64813 bytes (63 KB)
downloaded 63 KB
trying URL 'https://mran.revolutionanalytics.com/snapshot/2016-11-01/bin/windows/contrib/3.3/digest_0.6.10.zip'
Content type 'application/zip'
 length 169707 bytes (165 KB)
downloaded 165 KB
trying URL 'https://mran.revolutionanalytics.com/snapshot/2016-11-01/bin/windows/contrib/3.3/rstudioapi_0.6.zip'
Content type 'application/zip'
 length 50945 bytes (49 KB)
downloaded 49 KB
trying URL 'https://mran.revolutionanalytics.com/snapshot/2016-11-01/bin/windows/contrib/3.3/git2r_0.15.0.zip'
Content type 'application/zip'
 length 2995624 bytes (2.9 MB)
downloaded 2.9 MB
trying URL 'https://mran.revolutionanalytics.com/snapshot/2016-11-01/bin/windows/contrib/3.3/withr_1.0.2.zip'
Content type 'application/zip'
 length 41304 bytes (40 KB)
downloaded 40 KB
trying URL 'https://mran.revolutionanalytics.com/snapshot/2016-11-01/bin/windows/contrib/3.3/devtools_1.12.0.zip'
Content type 'application/zip'
 length 432207 bytes (422 KB)
downloaded 422 KB
package ‘mime’ successfully unpacked and MD5 sums checked
package ‘openssl’ successfully unpacked and MD5 sums checked
package ‘httr’ successfully unpacked and MD5 sums checked
package ‘memoise’ successfully unpacked and MD5 sums checked
package ‘whisker’ successfully unpacked and MD5 sums checked
package ‘digest’ successfully unpacked and MD5 sums checked
package ‘rstudioapi’ successfully unpacked and MD5 sums checked
package ‘git2r’ successfully unpacked and MD5 sums checked
package ‘withr’ successfully unpacked and MD5 sums checked
package ‘devtools’ successfully unpacked and MD5 sums checked

The downloaded binary packages are in
 C:\Users\corenet\AppData\Local\Temp\Rtmps5hd4q\downloaded_packages

> devtools::install_github("rstats-db/DBI")
Downloading GitHub repo rstats-db/DBI@master
from URL https://api.github.com/repos/rstats-db/DBI/zipball/master
Installing DBI
"C:/PROGRA~1/MIE74D~1/RCLIEN~1/R_SERVER/bin/x64/R" --no-site-file --no-environ --no-save --no-restore --quiet CMD \
 INSTALL "C:/Users/corenet/AppData/Local/Temp/Rtmps5hd4q/devtools316445712257/rstats-db-DBI-f8c97f2" \
 --library="C:/Users/corenet/Documents/R/win-library/3.3" --install-tests

* installing *source* package 'DBI' ...
** R
** tests
** preparing package for lazy loading
** help
*** installing help indices
** building package indices
** installing vignettes
** testing if installed package can be loaded
* DONE (DBI)

> install.packages("Rcpp")
Installing package into ‘C:/Users/corenet/Documents/R/win-library/3.3’
(as ‘lib’ is unspecified)
trying URL 'https://mran.revolutionanalytics.com/snapshot/2016-11-01/bin/windows/contrib/3.3/Rcpp_0.12.7.zip'
Content type 'application/zip'
 length 3265183 bytes (3.1 MB)
downloaded 3.1 MB
package ‘Rcpp’ successfully unpacked and MD5 sums checked

The downloaded binary packages are in
 C:\Users\corenet\AppData\Local\Temp\Rtmps5hd4q\downloaded_packages

> devtools::install_github("rstats-db/RMariaDB")
Downloading GitHub repo rstats-db/RMariaDB@master
from URL https://api.github.com/repos/rstats-db/RMariaDB/zipball/master
Installing RMariaDB
Installing 1 package: BH
Installing package into ‘C:/Users/corenet/Documents/R/win-library/3.3’
(as ‘lib’ is unspecified)
trying URL 'https://mran.revolutionanalytics.com/snapshot/2016-11-01/bin/windows/contrib/3.3/BH_1.60.0-2.zip'
Content type 'application/zip'
 length 15529292 bytes (14.8 MB)
downloaded 14.8 MB
package ‘BH’ successfully unpacked and MD5 sums checked

The downloaded binary packages are in
 C:\Users\corenet\AppData\Local\Temp\Rtmp04yXqs\downloaded_packages
"C:/PROGRA~1/MIE74D~1/RCLIEN~1/R_SERVER/bin/x64/R" --no-site-file --no-environ --no-save --no-restore --quiet CMD INSTALL \
 "C:/Users/corenet/AppData/Local/Temp/Rtmp04yXqs/devtools105c21b41a26/rstats-db-RMariaDB-e8b68a2" --library="C:/Users/corenet/Documents/R/win-library/3.3" --install-tests

* installing *source* package 'RMariaDB' ...
** libs
rm -f RMariaDB.dll MariaBinding.o MariaConnection.o MariaResult.o MariaRow.o MariaTypes.o MariaUtils.o RcppExports.o connection.o driver.o result.o win32/timegm.o
"C:/PROGRA~1/MIE74D~1/RCLIEN~1/R_SERVER/bin/x64/Rscript.exe" "../tools/winlibs.R"
c:/Rtools/mingw_64/bin/gcc -m64 -I"C:/PROGRA~1/MIE74D~1/RCLIEN~1/R_SERVER/include" -DNDEBUG -I../windows/libmariadbclient-2.3.3/include/mariadb -I"C:/Users/corenet/Documents/R/win-library/3.3/Rcpp/include" -I"C:/Users/corenet/Documents/R/win-library/3.3/BH/include" -I"C:/swarm/workspace/External-R-3.3.2/vendor/extsoft/include" -O2 -Wall -std=gnu99 -mtune=core2 -c win32/timegm.c -o win32/timegm.o
c:/Rtools/mingw_64/bin/g++ -m64 -I"C:/PROGRA~1/MIE74D~1/RCLIEN~1/R_SERVER/include" -DNDEBUG -I../windows/libmariadbclient-2.3.3/include/mariadb -I"C:/Users/corenet/Documents/R/win-library/3.3/Rcpp/include" -I"C:/Users/corenet/Documents/R/win-library/3.3/BH/include" -I"C:/swarm/workspace/External-R-3.3.2/vendor/extsoft/include" -O2 -Wall -mtune=core2 -c MariaBinding.cpp -o MariaBinding.o
c:/Rtools/mingw_64/bin/g++ -m64 -I"C:/PROGRA~1/MIE74D~1/RCLIEN~1/R_SERVER/include" -DNDEBUG -I../windows/libmariadbclient-2.3.3/include/mariadb -I"C:/Users/corenet/Documents/R/win-library/3.3/Rcpp/include" -I"C:/Users/corenet/Documents/R/win-library/3.3/BH/include" -I"C:/swarm/workspace/External-R-3.3.2/vendor/extsoft/include" -O2 -Wall -mtune=core2 -c MariaConnection.cpp -o MariaConnection.o
c:/Rtools/mingw_64/bin/g++ -m64 -I"C:/PROGRA~1/MIE74D~1/RCLIEN~1/R_SERVER/include" -DNDEBUG -I../windows/libmariadbclient-2.3.3/include/mariadb -I"C:/Users/corenet/Documents/R/win-library/3.3/Rcpp/include" -I"C:/Users/corenet/Documents/R/win-library/3.3/BH/include" -I"C:/swarm/workspace/External-R-3.3.2/vendor/extsoft/include" -O2 -Wall -mtune=core2 -c MariaResult.cpp -o MariaResult.o
c:/Rtools/mingw_64/bin/g++ -m64 -I"C:/PROGRA~1/MIE74D~1/RCLIEN~1/R_SERVER/include" -DNDEBUG -I../windows/libmariadbclient-2.3.3/include/mariadb -I"C:/Users/corenet/Documents/R/win-library/3.3/Rcpp/include" -I"C:/Users/corenet/Documents/R/win-library/3.3/BH/include" -I"C:/swarm/workspace/External-R-3.3.2/vendor/extsoft/include" -O2 -Wall -mtune=core2 -c MariaRow.cpp -o MariaRow.o
c:/Rtools/mingw_64/bin/g++ -m64 -I"C:/PROGRA~1/MIE74D~1/RCLIEN~1/R_SERVER/include" -DNDEBUG -I../windows/libmariadbclient-2.3.3/include/mariadb -I"C:/Users/corenet/Documents/R/win-library/3.3/Rcpp/include" -I"C:/Users/corenet/Documents/R/win-library/3.3/BH/include" -I"C:/swarm/workspace/External-R-3.3.2/vendor/extsoft/include" -O2 -Wall -mtune=core2 -c MariaTypes.cpp -o MariaTypes.o
c:/Rtools/mingw_64/bin/g++ -m64 -I"C:/PROGRA~1/MIE74D~1/RCLIEN~1/R_SERVER/include" -DNDEBUG -I../windows/libmariadbclient-2.3.3/include/mariadb -I"C:/Users/corenet/Documents/R/win-library/3.3/Rcpp/include" -I"C:/Users/corenet/Documents/R/win-library/3.3/BH/include" -I"C:/swarm/workspace/External-R-3.3.2/vendor/extsoft/include" -O2 -Wall -mtune=core2 -c MariaUtils.cpp -o MariaUtils.o
c:/Rtools/mingw_64/bin/g++ -m64 -I"C:/PROGRA~1/MIE74D~1/RCLIEN~1/R_SERVER/include" -DNDEBUG -I../windows/libmariadbclient-2.3.3/include/mariadb -I"C:/Users/corenet/Documents/R/win-library/3.3/Rcpp/include" -I"C:/Users/corenet/Documents/R/win-library/3.3/BH/include" -I"C:/swarm/workspace/External-R-3.3.2/vendor/extsoft/include" -O2 -Wall -mtune=core2 -c RcppExports.cpp -o RcppExports.o
c:/Rtools/mingw_64/bin/g++ -m64 -I"C:/PROGRA~1/MIE74D~1/RCLIEN~1/R_SERVER/include" -DNDEBUG -I../windows/libmariadbclient-2.3.3/include/mariadb -I"C:/Users/corenet/Documents/R/win-library/3.3/Rcpp/include" -I"C:/Users/corenet/Documents/R/win-library/3.3/BH/include" -I"C:/swarm/workspace/External-R-3.3.2/vendor/extsoft/include" -O2 -Wall -mtune=core2 -c connection.cpp -o connection.o
c:/Rtools/mingw_64/bin/g++ -m64 -I"C:/PROGRA~1/MIE74D~1/RCLIEN~1/R_SERVER/include" -DNDEBUG -I../windows/libmariadbclient-2.3.3/include/mariadb -I"C:/Users/corenet/Documents/R/win-library/3.3/Rcpp/include" -I"C:/Users/corenet/Documents/R/win-library/3.3/BH/include" -I"C:/swarm/workspace/External-R-3.3.2/vendor/extsoft/include" -O2 -Wall -mtune=core2 -c driver.cpp -o driver.o
c:/Rtools/mingw_64/bin/g++ -m64 -I"C:/PROGRA~1/MIE74D~1/RCLIEN~1/R_SERVER/include" -DNDEBUG -I../windows/libmariadbclient-2.3.3/include/mariadb -I"C:/Users/corenet/Documents/R/win-library/3.3/Rcpp/include" -I"C:/Users/corenet/Documents/R/win-library/3.3/BH/include" -I"C:/swarm/workspace/External-R-3.3.2/vendor/extsoft/include" -O2 -Wall -mtune=core2 -c result.cpp -o result.o
c:/Rtools/mingw_64/bin/g++ -m64 -shared -s -static-libgcc -o RMariaDB.dll tmp.def MariaBinding.o MariaConnection.o MariaResult.o MariaRow.o MariaTypes.o MariaUtils.o RcppExports.o connection.o driver.o result.o -L../windows/libmariadbclient-2.3.3/lib/x64 -lmariadbclient -lssl -lcrypto -lgdi32 -lz -lws2_32 win32/timegm.o -pthread -LC:/swarm/workspace/External-R-3.3.2/vendor/extsoft/lib/x64 -LC:/swarm/workspace/External-R-3.3.2/vendor/extsoft/lib -LC:/PROGRA~1/MIE74D~1/RCLIEN~1/R_SERVER/bin/x64 -lR
installing to C:/Users/corenet/Documents/R/win-library/3.3/RMariaDB/libs/x64
** R
** tests
** preparing package for lazy loading
** help
*** installing help indices
** building package indices
** testing if installed package can be loaded
* DONE (RMariaDB)

> library(DBI)
> library(RMariaDB)
> con <- dbConnect(MariaDB(), user = "ohnew", password = "*****", dbname = "ohnew", host = "192.168.0.187")
> dbListTables(con)
[1] "ct1" "t1" 
> dbListFields(con, "t1")
[1] "c1" "c2"
> res <- dbSendQuery(con, "select count(*) from t1")
> dbFetch(res)
 count(*)
1 1
> dbClearResult(res)
[1] TRUE
> dbDiscon

R 통계언어에서 MariaDB를 사용하기

R 통계언어에서 MariaDB를 사용하기

  • R 언어 개요

R은 통계 연산과 그래픽을 하기 위한 환경을 제공하는 언어입니다.
R은 다양한 통계적 기법(회귀분석, 군집분석, 시계열 분석, …)과 그래픽 기술을 다양하게 제공합니다.

R의 강점중 하나는 수학적 기호와 계산식이 필요한 양질의 그래픽 결과를 제공한다는 겁니다. 기본적인 그래픽도 좋지만 사용자가 모든 결과를 프로그램 할 수 있습니다.

 

  • R 언어 환경

R은 데이터의 수집, 가공, 머신러닝과 그래픽 처리까지 통합적으로 제공하는 언어입니다.

• 효과적인 데이터 처리와 스토리지 관리
• 배열과 행렬 연산
• 대량의 데이터 분석을 위한 통합적인 툴
• 모니터와 인쇄물에 데이터 분석을 통한 그래픽 기능
• 간단하고 효율적으로 사용자 재귀함수와 데이터 입출력이 가능한 프로그래밍 언어

 

  • R 언어에서 MariaDB 사용하기

– R 설치

R에서 MariaDB를 사용하기 위한 몇 가지 기본 방법 / 팁은 다음과 같습니다.

A. 추천하는 R 배포판은 “Microsoft R Open” 입니다.
https://mran.microsoft.com/open/

B. R GUI 사용은 RStudio Desktop 이나 RStudio Server를 추천합니다. Microsoft Visual Studio 2015 or 2017 툴도 좋습니다.
https://www.rstudio.com/products/rstudio/
https://www.visualstudio.com/vs/rtvs/

“Microsoft R Open”과 “MariaDB Server”를 같은 서버에 설치거나 다른 서버에 설치할 수 있습니다. R과 MariaDB는 ODBC 연결을 이용해서 사용합니다.

 

R과 MariaDB 연동
R 언어에서 MariaDB 서버의 데이터 연결은 RODBC R Package를 추천합니다.
https://cran.r-project.org/web/packages/RODBC/index.html

RODBC 패키지 관리자에게 버그 보고서를 보내려면 다음 R 문을 사용하십시오.
– bug.report (package = “RODBC”)

RODBC 패키지를 사용하는 방법은 아래 문서를 참고하시면 됩니다.
https://cran.r-project.org/web/packages/RODBC/vignettes/RODBC.pdf

RODBC 패키지에서 사용하기 위해서는 MariaDB ODBC 커넥터가 설치되어 있어야합니다.
https://downloads.mariadb.org/

아래의 다른 방법으로도 R언어에서 MariaDB 서버의 데이터를 이용할 수 있습니다.
– “readr” R 패키지를 이용한 CSV 파일 읽고 쓰기. MariaDB의 “LOAD DATA INFILE” 이용.
– “RMySQL” R 라이브러리는 대용량의 데이터를 처리할때는 권장하지 않습니다.
– “Rcpp”를 기반으로 한 최신의 MariaDB 클라이언트는 Github의 RMariaDB 패키지에서 사용할 수 있습니다. : https://github.com/rstats-db/RMariaDB

RMariaDB 패키지의 3.4.1+ 버전은 아래 명령으로 설치할 수 있습니다.
– install.packages(“RMariaDB”)

RMariaDB 패키지는 MariaDB의 C Connector를 사용합니다.
https://downloads.mariadb.org/connector-c/

 

  • R Programming Resources

R 언어를 배우기 위한 추천 도서는 아래와 같습니다.
– R Cookbook (O’Reilly Media; Paul Teetor): http://shop.oreilly.com/product/9780596809164.do
– R Graphics Cookbook (O’Reilly Media; Winston Chang): http://shop.oreilly.com/product/0636920023135.do

두 도서의 책은 O’Reilly Store 나 Amazon에서 구입할 수 있습니다.
두 도서의 발췌 부분은 http://www.cookbook-r.com/에서 찾을 수 있습니다.

아래 리소스들도 참고하시면 좋습니다.
– Rstudio Cheatsheets : https://www.rstudio.com/resources/cheatsheets/
– Base R 레퍼런스 카드 : https://cran.r-project.org/doc/contrib/Short-refcard.pdf
– R 관련 검색 엔진 (Google 기반). http://rseek.org/

 

출처 : https://mariadb.com/kb/en/mariadb/r-statistical-programming-using-mariadb-as-the-background-database/

 

MySQL / MariaDB 랜섬웨어 복구

최근 랜섬웨어(Ransomware) 감염과 관련한 이슈들이 종종 있습니다.

대부분 감염이후에 복구를 할 수 없을때가 많기는 한데요. 복호화 방법이 있을때 데이터를 살릴 수 있습니다. 복구와 관련해서 MySQL / MariaDB의 데이터가 문제가 있는 경우가 있습니다.

주요 문제들은 ibdata 파일의 손상입니다. ibdata 파일은 InnoDB 엔진을 사용하면서 데이터와 로그들이 저장되는 파일로 해당 파일이 손상을 입으면 데이터 전체가 문제가 될 가능성이 큽니다.

ibdata 파일등이 손상을 입었을때 아래 복구 방법들을 이용해서 데이터를 살릴 수 있습니다.

복구를 할때는 항상 원본 파일은 백업을 해두셔야 합니다. 복구 실패로 다시 시도를 해야 할 수 있으니까요. 랜섬웨어에 걸리지 않도록 보안에 신경을 써야 하는게 우선이고요.

카카오뱅크 – 금융 오픈소스 – MariaDB

카카오뱅크, 은행 IT에 새 이정표를 제시했다

https://byline.network/2017/08/8-2/

 

해당 글을 보니 내부 사정을 자세히 알고 있는 사람을 통해 정보를 얻은것 같다.

글에서 페르코나라고 Percona Server for MySQL에 대해서 자세하게 언급을 하고 있다. 페르코나가 아니라 퍼코나라고 했으면 좋겠다. (글을 읽을때 새로운 데이터베이스인가하고 헷갈림)

MariaDB에서 Percona Server for MySQL로 변경을 한것이 고가용성(HA) 이중화에 대한 구성이 어렵다고 했다. 같은 소스를 사용하기에 기술력의 차이는 MariaDB와 Percona의 차이는 없다고 생각한다. 기술력이외의 다른 이슈들이 있었을 것으로 생각된다.

 

Percona Colin 인터뷰 기사를 참고하면 관련 내용을 조금 더 알 수 있기도 합니다.

http://kgmaeil.net/detail.php?number=106963

 

Percona Toolkit : MariaDB / MySQL / MongoDB

Percona에서 MariaDB / MySQL / MongoDB를 위한 toolkit을 제공하고 있습니다.

https://www.percona.com/doc/percona-toolkit/LATEST/index.html

 

제공하는 툴들은 아래와 같습니다.

 

서버 운영을 하면서 아쉬운 기능들이 있을때 찾아보면 좋습니다. 일일이 sql 작성을 하거나 script를 만들기 보다는 tookit을 이용하는게 편할때가 있습니다.

MariaDB / MySQL 운영을 하면서 자주 사용할만한 툴로는 pt-query-digest / pt-table-checksum / pt-table-sync / pt-online-schema-change 들이 있습니다.

http://www.osskorea.co.kr/database.php#percona

Pt-query-digest

  • 쿼리 분석
  • 슬로우 쿼리 로그, 쿼리 로그. 조회
  • tcpdump를 작동

Pt-table-checksum

  • MySQL의 복제 무결성을 확인.
  • percona 사에서 제공하는 percona tools 중 하나
  • 원래는 maatkit tools 의 부분인 mk-table-checksum
  • 마스터와 리플리케이션이 일치하는지를 파악하기 위한 도구
    1. 마스터 서버에 checksums 테이블 생성
    2. 마스터 서버의 각 테이블의 checksum을 확인해 checksums테이블에 기록.
    3. 리플리케이션을 통해서 테이블 checksums이 전파되면 pt-table-checksum은 각 슬레이브로 접근해서 슬레이브의 데이터와 리플리케이션을 통해서 만들어진 슬레이브의 checksums 테이블 간의 checksum을 비교.
    4. 결과 출력.

Pt-table-sync

서로 다른 서버간에 MySQL 테이블 데이터를 동기화

Pt-online-schema-change

Write 잠금 기능을 제거하고 그 기능을 trigger로 풀어서 원본 테이블의 R/W를 가능하게 했고 trigger를 통해 데이터 동기화를 이루었다.

  1. 새로운 임시테이블 생성
  2. 새로운 임시테이블 alter
  3. Trigger 생성
  4. 데이터 복사
  5. 테이블 리네임 (swap)
  6. Foreign key 업데이트 (존재할 경우)
  7. Old 테이블 drop.

 

Percona Monitoring Plugins

percona에서 MariaDB / MySQL / MongoDB 서버 모니터링을 Nagios / ZABBIX / Cacti 들로 할 수 있도록 plugin을 제공합니다.

https://www.percona.com/doc/percona-monitoring-plugins/LATEST/index.html

 

서버 상태에 따라 장애 상태 진단과 성능과 상태에 대한 각종 지표들을 수집하고 그래프로 보여줄 수 있도록 해 줍니다. Nagios와 ZABBIX 플러그인은 동일한 지표들을 제공하고요. Cacti는 MySQL, MongoDB 이외에 Apache / JMX / Nginx 들의 지표도 같이 제공을 합니다.

 

Nagios / ZABBIX

 

Cacti

 

Percona 기술지원 : MySQL, MariaDB

Percona의 기술지원을 받으면 Percona Server이외에 MySQL, MariaDB에 대한 기술지원을 같이 받을 수 있습니다. MySQL이나 MariaDB enterprise의 기술지원은 각자 자신들의 제품만을 지원하지만 Percona에서는 관련 생태계 제품들을 전부 기술지원 해 줍니다.

https://www.percona.com/services/support/support-tiers-mysql-mariadb

 

Percona의 기술지원을 받으면 MySQL Enterprise는 해당이 안됩니다. 오픈소스에 대한 기술지원을 하는것이기에 오픈소스가 아닌제품은 기술지원이 안된다고 보시면 됩니다.

 

세부 기술지원 사항에서 Cluster 지원으로 Galera와 ProxySQL, HAProxy도 포함이 됩니다.

MySQL community, MariaDB, Percona Server 들의 bug fix들도 전부 제공이 됩니다.

 

Percona를 통해서 MongoDB 기술지원을 받을수도 있습니다.

자세한 사항은 아래 웹페이지를 참고하시면 됩니다.

https://www.percona.com/services/support/support-tiers-mongodb

 

Percona XtraDB Cluster

Percona에서 제공하는 Cluster 제품으로 Percona XtraDB Cluster가 있습니다.

https://www.percona.com/software/mysql-database/percona-xtradb-cluster

 

해당 Cluster는 MariaDB galera cluster를 기반으로 제공하는 cluster입니다.

서비스로 제공하는 세부 기능들은 아래와 같습니다.

  • ProxySQL load balancer
  • Multi-master replication
  • Synchronous replication
  • Data at rest encryption
  • Improved SST Security through simplified configuration
  • Easy to setup encrypted between-nodes communication
  • Increased read/write scalability
  • Zero Data Loss
  • ProxySQL-assisted Percona XtraDB Cluster maintenance mode
  • Automatic node provisioning
  • Percona XtraDB Cluster “strict-mode”
  • Percona Monitoring and Management compatibility

 

오픈소스로 제공하는 ProxySQL에 대한 기술지원을 공식적으로 받을 수 있습니다. galera cluster 이외에 multi-master replication으로 구성을 할 수 있기도 하고요. replication이 기본적으로 async 방식인데요. sync 방식의 replication에 대한 기술지원도 해준다고 합니다. PMM(Percona Monitoring and Management)을 이용한 서버 모니터링과 관리도 기술지원을 해준다고 하네요.

 

기존에 MySQL 기반의 HA(High Availability)는 MHA, MMM 등을 이용한 경우가 많았습니다. 관련 내용은 다음 웹페이지를 참고 하시고요. http://www.osskorea.co.kr/databaseHA.php

 

최근의 MySQL 기반의 HA들은 Database proxy를 이용한 방법으로 많이 검토를 하기 시작하고 있습니다. 대표적인 것들이 MariaDB MaxScale과 오픈소스 ProxySQL인데요. ProxySQL을 이용한 HA구성에 대한 기술지원을 하는곳으로 Percona와 애기를 해 볼 수 있습니다.