May 23, 2025 - MySQL 30주년, 오픈소스 데이터베이스 생태계에 대한 단상

Comments

MySQL 30주년, 오픈소스 데이터베이스 생태계에 대한 단상

2025년 5월 23일, MySQL이 세상에 나온 지 30주년이 되는 역사적인 날입니다. 오픈소스 데이터베이스 엔지니어로서, 지난 30년간 IT 산업의 발전에 혁혁한 공을 세운 MySQL과 그를 둘러싼 오픈소스 데이터베이스 생태계의 빛나는 여정을 돌아보고, 앞으로 고민해 보면 좋을 생각을 정리해 보려합니다.

MySQL 30 years

MySQL, 30년의 여정: 개방과 협력으로 웹의 성장을 이끈 혁신의 아이콘

MySQL은 지난 30년간 웹의 폭발적인 성장과 함께하며 수많은 서비스의 심장 역할을 해왔습니다. 사용의 용이성, 빠른 속도, 그리고 무엇보다 강력하고 헌신적인 글로벌 오픈소스 커뮤니티의 지원은 MySQL을 전 세계에서 가장 사랑받는 데이터베이스 중 하나로 만들었습니다. 이 개방과 협력의 정신이 바로 MySQL 발전의 원동력이었습니다.

MariaDB와 Percona: 풍요로운 생태계를 함께 가꾸는 핵심 동반자들

MySQL 생태계에서 MariaDB와 Percona의 역할은 지대합니다. 이들은 단순한 파생 프로젝트를 넘어, 오픈소스의 가치를 실현하고 사용자에게 더 나은 선택지를 제공하며 MySQL 생태계 전체를 더욱 풍성하게 만드는 데 핵심적인 기여를 해왔습니다.

- MariaDB: 커뮤니티 주도 혁신의 아름다운 결실
MySQL의 초기 개발자들이 주축이 되어 탄생한 MariaDB는 커뮤니티에 의한, 커뮤니티를 위한 개발 철학을 확고히 지켜왔습니다. MySQL과의 높은 호환성을 유지하면서도 ColumnStore, Aria 스토리지 엔진, 시스템 버전 테이블 등 독자적인 혁신을 거듭하며 사용자 요구에 부응하고 있습니다. 특히 최근 AI 시대에 발맞춰 Vector 데이터 타입과 관련 함수를 지원함으로써, 별도의 특화된 데이터베이스 없이도 MariaDB 내에서 AI 기반 기능을 구현할 수 있는 길을 열었습니다. 이는 커뮤니티와 기술적 필요가 만나 이루어낸 오픈소스 혁신의 빛나는 사례입니다.

- Percona: 기술적 깊이와 운영 노하우로 신뢰를 더하는 든든한 지원군
Percona는 MySQL의 성능과 안정성을 극한까지 끌어올리는 데 중점을 둔 다양한 오픈소스 도구와 개선된 서버 버전을 제공해왔습니다. Percona Server for MySQL은 커뮤니티 버전에 성능 향상, 고급 모니터링 기능, 향상된 진단 도구 등을 추가하여 더 까다로운 워크로드도 안정적으로 처리할 수 있도록 지원합니다. Percona XtraBackup, Percona Monitoring and Management (PMM)과 같은 도구들은 전 세계 수많은 DBA들에게 필수적인 존재가 되었으며, 이 모든 것이 오픈소스로 제공되어 지식과 기술의 공유를 촉진합니다. 또한, 쿠버네티스 환경에서 오픈소스 데이터베이스 운영을 자동화하는 Percona Everest와 같은 프로젝트는 클라우드 네이티브 시대로 나아가는 오픈소스 데이터베이스의 밝은 미래를 제시합니다. 이처럼 MariaDB와 Percona는 각자의 방식으로 MySQL 생태계에 기여하며, 건강한 경쟁과 아름다운 협력을 통해 MySQL 자체의 발전에도 긍정적인 영향을 미치고 있습니다. 이들의 존재는 오픈소스 정신이 만들어낸 가장 성공적인 상생의 모습일 것입니다.

오픈소스 RDBMS 경쟁과 MySQL의 끝없는 잠재력

최근 오픈소스 데이터베이스 시장, 특히 PostgreSQL은 강력한 기능과 활발한 글로벌 오픈소스 커뮤니티를 중심으로 괄목할 만한 성장세를 보이며 그 영향력을 확대하고 있습니다. 이러한 PostgreSQL의 발전은 전체 오픈소스 데이터베이스 생태계에 신선하고 건강한 자극이 되고 있으며, 사용자들에게 더 넓은 선택의 폭과 함께 기술 혁신의 즐거움을 선사하고 있습니다. 이러한 활기찬 경쟁 환경 속에서도, MySQL은 오랜 기간 동안 쌓아온 깊은 내공과 다음과 같은 독보적인 강점들을 바탕으로 앞으로도 변함없이 중요한 역할을 해나갈 것입니다.

- 성숙하고 다양한 고가용성(HA) 아키텍처와 운영 노하우:
MySQL의 Replication은 풍부한 옵션을 제공하여, 서비스의 특성과 요구사항에 맞춰 유연하게 고가용성 환경을 구축할 수 있도록 지원하며, 이는 수많은 운영 경험을 통해 더욱 견고해졌습니다. MySQL InnoDB Cluster(Group Replication), Galera Cluster 기반의 Percona XtraDB Cluster 및 MariaDB Cluster 등은 오랜 기간 다양한 환경에서 검증되고 발전해 온 강력하고 신뢰성 높은 HA 솔루션들입니다.

- 압도적인 글로벌 커뮤니티의 지혜와 방대한 학습 자원:
MySQL의 가장 큰 힘 중 하나는 바로 방대한 규모의 글로벌 오픈소스 커뮤니티입니다. 공식 문서 외에도 수많은 사용자 포럼, 기술 블로그, 질의응답 사이트, 지역별 사용자 그룹 등을 통해 초보자부터 전문가까지 누구나 필요한 정보를 얻고 함께 문제를 해결하며 성장할 수 있습니다. 수많은 실제 운영 환경에서의 문제 해결 사례, 성능 최적화 팁, 운영 노하우 등은 귀중한 집단 지성의 보고입니다.

- 검증된 안정성과 폭넓은 성공 사례가 주는 신뢰:
MySQL은 페이스북, 유튜브 등 수많은 글로벌 대규모 웹 서비스들의 초기 성장을 뒷받침하며 그 안정성과 성능을 전 세계적으로 입증했습니다. 특히 대용량 트래픽 처리와 빠른 응답 속도가 중요한 서비스에서 MySQL은 여전히 신뢰받는 선택지 중 하나이며, 다양한 산업 분야에서 폭넓게 사용된 수많은 성공 사례는 MySQL의 지속적인 성장을 견인하고 있습니다.

데이터베이스의 미래: 관계형 모델의 진화와 확장

최근 AI 기술의 발전으로 Vector 데이터베이스가 주목받고 있으며, 이전부터 NoSQL, Graph 데이터베이스 등도 특정 영역에서 활발히 사용되어 왔습니다. 이러한 특화된 데이터베이스 모델들이 결국 성숙한 관계형 데이터베이스로 그 기능이 자연스럽게 흡수되거나 긴밀하게 통합될 것이라고 생각합니다. 이미 MySQL이나 PostgreSQL 같은 주요 RDBMS들은 JSON 지원을 통해 Document Store의 장점을 일부 받아들였고, SQL 표준에서도 그래프 쿼리(SQL/PGQ) 논의가 진행 중입니다. 앞으로 관계형 데이터베이스는 Vector 인덱싱 및 검색, 그래프 연산 등을 핵심 기능으로 내장하며 더욱 다양한 데이터 모델을 포괄하는 강력한 시스템으로 진화하여, 개발자들이 하나의 익숙하고 안정적인 시스템에서 다양한 데이터 모델을 효율적으로 다룰 수 있게 될 것입니다. 이는 MySQL에게도 새로운 혁신의 기회가 될 것입니다.

대한민국에서의 MySQL

MySQL은 전 세계적으로 사랑받고 있지만, 대한민국에서도 한때 뜨거운 열정과 함께 IT 서비스 성장의 핵심 동력이었습니다. 국내 유수의 포털, 이커머스, 게임 회사 및 수많은 스타트업들이 MySQL을 기반으로 빠르게 성장하며 성공 신화를 써 내려갔습니다. 최근 국내 MySQL 커뮤니티의 활동이 다소 소강상태에 있다는 의견도 있지만, 이는 새로운 도약을 위한 숨 고르기일 수 있습니다. 과거 대한민국 IT 발전의 중요한 순간마다 함께 했던 국내 MySQL 엔지니어 및 커뮤니티 기여자분들의 헌신과 열정은 우리 모두에게 깊은 영감을 줍니다. 그 소중한 경험과 지혜를 바탕으로, 국내 MySQL 생태계에 새로운 활력을 불어넣고 더욱 풍성하게 만들어 갈 수 있기를 기대합니다.

오픈소스 생태계 핵심축으로서 MySQL의 빛나는 미래를 위한 제언

MySQL이 지난 30년의 영광을 넘어 앞으로도 오픈소스 데이터베이스 생태계의 핵심적인 역할을 더욱 성공적으로 수행하기 위해서는 다음과 같은 방향으로 나아갈 때 더욱 밝은 미래를 기대할 수 있습니다.

- 상호 운용성 및 개방형 표준의 적극적인 지원과 발전:
SQL 표준을 철저히 준수하고, 다른 오픈소스 데이터 솔루션(데이터 파이프라인, 시각화 도구, 분석 플랫폼 등)과의 손쉬운 연동을 위한 개방형 인터페이스와 표준 지원을 지속적으로 강화하고 선도해야 합니다. 이는 사용자들이 특정 기술에 종속되지 않고 더욱 유연하고 강력한 데이터 아키텍처를 구성할 수 있게 도울 것입니다.

- 핵심 커뮤니티 버전의 끊임없는 기능 강화와 혁신:
가장 폭넓은 사용자들이 혜택을 볼 수 있도록 MySQL 커뮤니티 에디션의 핵심 기능을 지속적으로 강화하고, AI 시대에 발맞춘 Vector, Graph 등 새로운 기술의 기본적인 지원을 커뮤니티 버전에 우선적으로 포함하여 오픈소스 사용자들의 접근성을 높이고 기술 혁신을 이끌어야 합니다.

- 오픈소스 가치 실현을 위한 변함없는 리더십:
단순히 인기 있는 오픈소스 프로젝트를 넘어, 데이터 기술 분야에서 오픈소스의 가치와 철학을 선도하는 역할을 더욱 굳건히 해야 합니다. 이는 기술적 혁신뿐만 아니라, 투명하고 공정한 라이선스 정책, 건강한 커뮤니티 운영 방식 등에서도 모범을 보이는 것을 포함하며, 이는 MySQL에 대한 깊은 신뢰로 이어질 것입니다.

MySQL의 30년은 오픈소스의 힘과 커뮤니티의 열정이 만들어낸 위대한 역사이며, 이는 앞으로 펼쳐질 더욱 빛나는 미래의 서막이라 생각합니다. MySQL이 끊임없는 혁신과 커뮤니티와의 굳건한 연대를 통해 데이터 기술의 발전을 계속해서 선도하면 좋겠습니다. 더 나아가, MySQL뿐만 아니라 PostgreSQL을 포함한 전체 오픈소스 데이터베이스 생태계가 함께 더욱 확장되고 발전하기를 진심으로 기원합니다. 건강한 경쟁과 아름다운 협력을 통해 다양한 오픈소스 데이터베이스들이 동반 성장할 때, 사용자들은 더욱 풍부한 선택지를 갖게 되며 기술 혁신은 더욱 아름답게 꽃피울 것입니다. 이는 결국 우리 모두에게 더 나은 기술 환경과 희망찬 미래를 선물할 것이라 확신합니다. 한 명의 오픈소스 데이터베이스 엔지니어로서, 그리고 대한민국 오픈소스 커뮤니티의 일원으로서, MySQL의 빛나는 여정을 항상 응원하고 함께 만들어가고 싶습니다. MySQL 30주년을 진심으로 축하하며 희망 가득한 내일을 기대합니다!

Mar 24, 2025 - Percona Everest

Comments

Percona Everest 개요

Percona에서 DBaaS 오픈소스 플랫폼으로 Everest를 제공합니다. 엔터프라이즈급 MySQL, MongoDB, PostgreSQL 데이터베이스 클러스터를 자동으로 프로비저닝하거나 고유한 비즈니스 및 보안 요구사항에 맞게 배포를 할 수 있습니다.

https://www.percona.com/software/percona-everest Percona Everest is the first open-source platform for automated database provisioning and management. It supports multiple database technologies and can be hosted on any Kubernetes infrastructure, in the cloud or on-premises.

Percona Everest

오픈소스 데이터베이스를 위한 DBaaS로 K8S 등의 container 환경에서 클러스터 구성, 이중화, scaling과 백업/복원 등의 관리와 PMM 모니터링을 손쉽게 할 수 있습니다. 2024년 06월 28일에 Percona Everest 1.0.0 버전이 GA로 배포를 했습니다. 지속적인 기능 개선과 안정화를 하고 있습니다. 오픈소스 데이터베이스를 대규모로 자동으로 관리하고 API를 통한 운영을 하기에 좋습니다.

빠르고 간단한 데이터베이스를 구성해서 테스트 환경을 만들기에 편합니다. PMM과의 모니터링이 쉽게 통합되어 있어서 오픈소스 데이터베이스의 통합 관리에 좋습니다.

K8S등의 컨테이너 환경에서 오픈소스 데이터베이스를 고민하는 분들에게는 좋은 선택일거 같습니다.

Oct 24, 2024 - MySQL 8.4 버전과 MHA 이중화

Comments

MySQL 8.4 버전과 MHA 이중화

MySQL 8.4 버전에서 Replication 명령문이 변경됩니다. Master, Slave 용어를 8.0부터 줄여가기 시작을 해서 8.4에서는 없어집니다. Master는 Source로 Slave는 Replica로 변경이 됩니다. https://dev.mysql.com/doc/relnotes/mysql/8.4/en/news-8-4-0.html

용어 변경의 이유와 관련 내용들에 대해서는 아래 웹페이지를 참고해서 자세하게 알 수 있습니다. https://www.zdnet.com/article/mysql-drops-master-slave-and-blacklist-whitelist-terminology/ https://jira.mariadb.org/browse/MDEV-18777

MariaDB는 Source가 아닌 Primary 단어로 변경을 하고 있습니다.

MHA (Master High Availability Manager and tools for MySQL) 이중화

MHA는 MySQL, MariaDB 오픈소스 데이터베이스에서 오랜기간 HA 솔루션으로 많이 사용하고 있습니다. MHA 0.58 버전의 release가 2018년 03월 23일에 나오고 더 이상 배포가 되지 않고 있습니다. https://github.com/yoshinorim/mha4mysql-manager

MySQL 8.4에서 Change Master to 명령을 더 이상 사용 할 수 없게 되면서 MHA는 정상적으로 작동하지 않게 됩니다. 오픈소스이기에 소스를 수정해서 사용 할 수는 있지만 공식적인 사용으로는 고민이 됩니다.

이에 대한 대안으로는 MariaDB는 하위버전 호환성을 위해서 change master to 명령이 사용 가능해서 MySQL 대신 MariaDB를 사용 할 수 있습니다.

Percona Orchestrator 이중화

다른 방법으로는 이중화를 Orchestrator를 사용하는 것입니다. https://github.com/openark/orchestrator

Percona에서도 MHA는 더 이상 기술지원이 어렵고 Orchestrator를 사용하는것으로 권고를 하는것으로 알고 있습니다. Orchestrator의 마지막 소스 수정이 2021년 10월 26일이지만 Percona에서는 지속적으로 관리와 배포를 하고 있습니다. https://github.com/percona/orchestrator

May 25, 2021 - WSL2 환경에서 vagrant를 이용한 테스트 환경 만들기

Comments

WSL2 환경에서 vagrant를 이용한 테스트 환경 만들기

윈도우10에서 WSL을 사용해서 linux를 사용할 수 있습니다. linux 테스트 환경을 만들기 위해서 vagrant를 이용하면 쉽게 구성을 할 수 있습니다. WSL2 환경에 vagrant를 이용해서 centos 테스트 환경을 만들어서 사용하면 쉽게 linux 관련 테스트를 할 수 있습니다.

WSL2 설치는 여러 설치 관련 문서들이 있으니 참고하시면 되고요.

vagrant 설치

WSL2에 vagrant 설치는 아래 웹페이지를 참고 하면 됩니다. https://blog.thenets.org/how-to-run-vagrant-on-wsl-2/

주요 설치 관련 명령은 아래와 같습니다.

# run inside WSL 2
# check https://www.vagrantup.com/downloads for more info
curl -fsSL https://apt.releases.hashicorp.com/gpg | sudo apt-key add -
sudo apt-add-repository "deb [arch=amd64] https://apt.releases.hashicorp.com $(lsb_release -cs) main"
sudo apt-get update && sudo apt-get install vagrant

# append those two lines into ~/.bashrc
echo 'export VAGRANT_WSL_ENABLE_WINDOWS_ACCESS="1"' >> ~/.bashrc
echo 'export PATH="$PATH:/mnt/c/Program Files/Oracle/VirtualBox"' >> ~/.bashrc

# now reload the ~/.bashrc file
source ~/.bashrc

vagrant 설정

2대의 centos VM을 만드는 Vagrantfile은 아래와 같습니다.

# -*- mode: ruby -*-
# vi: set ft=ruby :

#Vagrant_API_Version = "2"
Vagrant.configure(2) do |config|
  config.vm.box = "centos/7"
  config.vm.box_check_update = false
  #test01
  config.vm.define:"neoclova01" do |cfg|
    cfg.vm.provider:virtualbox do |vb|
      vb.name="CentOS-neoclova01"
      vb.customize ["modifyvm", :id, "--cpus",2]
      vb.customize ["modifyvm", :id, "--memory",1024]
    end
    cfg.vm.host_name="neoclova01"
    cfg.vm.synced_folder ".", "/vagrant", disabled:true
#    cfg.vm.network "public_network", ip: "1.1.1.1"
    cfg.vm.network "private_network", ip: "192.168.200.101"
#    cfg.vm.network "forwarded_port", guest: 22, host:39211, auto_correct: false, id: "ssh"
#    cfg.vm.provision "shell", inline: <<-SHELL
#       echo "hello"
#       date
#    SHELL
  end
  #test02
  config.vm.define:"neoclova02" do |cfg|
    cfg.vm.provider:virtualbox do |vb|
      vb.name="CentOS-neoclova02"
      vb.customize ["modifyvm", :id, "--cpus",2]
      vb.customize ["modifyvm", :id, "--memory",1024]
    end
    cfg.vm.host_name="neoclova02"
    cfg.vm.synced_folder ".", "/vagrant", disabled:true
#    cfg.vm.network "public_network", ip: "8.8.8.8"
    cfg.vm.network "private_network", ip: "192.168.200.102"
#    cfg.vm.network "forwarded_port", guest: 22, host:39212, auto_correct: false, id: "ssh"
  end
end

vagrant 실행

WSL2에서 vagrant ssh를 사용하기 위해서는 WSL2 플러그인을 설치해야 합니다.

vagrant plugin install virtualbox_WSL2

vagrant up

Sep 11, 2020 - MariaDB Connect Storage Engine - MSSQL ODBC link

Comments

MariaDB Connect Storage Engine - MSSQL ODBC 연결

MariaDB의 Connect 스토리지 엔진을 이용해서 MSSQL 서버에 ODBC 연결을 할 수 있습니다. 먼저 ODBC를 설치하고 ODBC 설정을 합니다. Linux는 CentOS7입니다.

# yum install epel-release
# yum install freetds
# yum install unixODBC

# cat /etc/odbcinst.ini
[FreeTDS]
Description = FreeTDS Driver
Driver = /usr/lib64/libtdsodbc.so.0
Setup = /usr/lib64/libtdsS.so.2
FileUsage = 1
CPTimeout = 5
CRReuse = 5

# cat /etc/odbc.ini
[NEOCLOVA]
driver=FreeTDS
server=127.0.0.1
port=1433
database=ssauravy
client_charset = UTF-8
tds_version = 8.0

MariaDB를 설치한 후에 Connect 스토리지엔진을 설치하고 MSSQL 서버의 Table에 연결을 해서 사용합니다.

> install soname 'ha_connect';

> CREATE TABLE t_test1 ENGINE=CONNECT, TABLE_TYPE=ODBC, TABNAME='dbo.test' CONNECTION='Driver=FreeTDS;Server=127.0.0.1;Database=dbtest;UID=neoclova;PWD=welcome;Port=1433';
> CREATE TABLE t_test2 ENGINE=CONNECT TABLE_TYPE=ODBC TABNAME='dbo.test' CONNECTION='DSN=NEOCLOVA;UID=neoclova;PWD=welcome';

Dec 30, 2019 - MariaDB Administrator 교육 교재

Comments

MariaDB Administrator 교육 교재

오뉴이노베이션에서 작성한 MariaDB Administrator 교육 교재입니다.

MariaDB Admin 2019

Jul 17, 2019 - MariaDB 10.4 GA - command

Comments

MariaDB 10.4 GA - command

2019년 6월 18일에 MariaDB 10.4 GA 버전이 배포 됐습니다.
https://mariadb.com/resources/blog/now-ga-mariadb-community-server-10-4/

주요 기능은 아래와 같다고 합니다.

  • Temporal data processing has been enhanced with the support of application time period tables.
  • Instant DDL operations for InnoDB allow non-blocking schema changes on the fly.
  • Security and stability improvements in the authentication system and user password management. SSL certificates can be reloaded.
  • Optimizer improvements, including the implementation of an optimizer trace and improved defaults as well as active histograms and storage engine independent statistics.
  • Performance improvements for Unicode collations, plus faster server startup, shutdown and purge; and faster checks for bigger user and privilege tables.
  • MariaDB Cluster is now based on Galera 4 and delivers better performance and large transactions.

https://mariadb.com/resources/blog/mariadb-named-commands/

2009년에 MariaDB 5.1.38 버전이 처음 배포된 후에 10주년이라고 합니다. MariaDB 10.4부터는 mysql 실행 명령어들이 mariadb로 아래와 같이 변경 된다고 합니다.

  • mariadb → mysql
  • mariadb-access → mysqlaccess
  • mariadb-admin → mysqladmin
  • mariadb-binlog → mysqlbinlog
  • mariadb-check → mysqlcheck
  • mariadb-convert-table-format → mysql_convert_table_format
  • mariadbd-multi → mysqld_multi
  • mariadbd-safe → mysqld_safe
  • mariadbd-safe-helper → mysqld_safe_helper
  • mariadb-dump → mysqldump
  • mariadb-dumpslow → mysqldumpslow
  • mariadb-embedded → mysql_embedded
  • mariadb-find-rows → mysql_find_rows
  • mariadb-fix-extensions → mysql_fix_extensions
  • mariadb-hotcopy → mysqlhotcopy
  • mariadb-import → mysqlimport
  • mariadb-install-db → mysql_install_db
  • mariadb-plugin → mysql_plugin
  • mariadb-secure-installation → mysql_secure_installation
  • mariadb-setpermission → mysql_setpermission
  • mariadb-show → mysqlshow
  • mariadb-slap → mysqlslap
  • mariadb-tzinfo-to-sql → mysql_tzinfo_to_sql
  • mariadb-upgrade → mysql_upgrade
  • mariadb-waitpid → mysql_waitpid

MariaDB

Jul 16, 2019 - MariaDB Korea Conference 2019

Comments

MariaDB Korea Conference 2019 - Monty in Seoul

MariaDB 한국 컨퍼런스가 열린다고 합니다.

시간 : 2019년 9월 25일 (수) 13:00 ~ 17:30
장소 : 한국과학기술회관 국제회의장 (강남역 12번 출구)
내용 : Monty Keynotes 및 MariaDB 소개

Monty Widenius

  • MySQL 데이터베이스 및 MariaDB 창시자
  • 데이터베이스의 오픈소스 운동을 주도
  • https://www.facebook.com/michael.widenius

MariaDB-Korea-Conference-2019

페이스북 MariaDB 한국사용자 모임 그룹에 MariaDB 한국 지사장님이 소식을 올려 주셨네요. https://www.facebook.com/p1oneer/posts/2482457628459799

Jul 9, 2019 - MariaDB MaxScale 2.1 GPL 전환

Comments

MariaDB MaxScale 2.1 GPL 전환

https://mariadb.com/projects-using-bsl-11/

MariaDB MaxScale 2.1 버전이 2019년 7월 1일로 BSL에서 GPL로 변경 됐습니다. 처음 BSL 나왔을때 말이 많았는데요. 시간이 지나니 어느새 GPL로 변경이 되는 날이 지났습니다. MaxScale의 최신 버전은 2.3.9-GA, 2.4.0-beta 입니다.

내년 1월에 MaxScale 2.2 버전이 GPL로 변경이 됩니다. MaxScale 2.3 버전은 2022년 1월에 BSL에서 GPL로 전환이 됩니다. https://github.com/mariadb-corporation/MaxScale/blob/2.3/LICENSE.TXT

May 28, 2019 - MariaDB Undo recovery 오래 걸릴때

Comments

MariaDB Undo recovery 오래 걸릴때

대량의 트랙잭션을 수행하던 중에 MariaDB (MySQL) 서버가 비정상 종료를 하면 InnoDB 등의 transaction 지원을 하는 storage engine 들은 재시작하면서 undo recovery를 합니다.
undo recovery가 빨리 완료가 되면 괜찮지만, 대량의 트랜잭션들은 몇일이 걸릴 수도 있습니다.
MariaDB에서는 이럴때 mysqldump 백업을 하고 해당 데이터베이스를 drop 후에 복구하라고 합니다.
https://mariadb.com/kb/en/library/innodb-recovery-modes/

데이터가 수백기가를 넘을때는 mysqldump 백업/복원 시간도 올래 걸립니다. 이럴때 ALTER TABLE … DISCARD (IMPORT) TABLESPACE 명령을 이용해서 좀 더 빠르게 복구를 할 수 있습니다.

undo recovery 하지 않고 테이블 복구 절차

  • force recovery 모드로 MariaDB 시작
  • mysqldump -d 데이터베이스 스키마 백업
  • MariaDB 중지
  • 데이터베이스 디렉토리의 ibd 파일 복사
  • force recovery 모드로 MariaDB 시작
  • drop database
  • MariaDB 정상적으로 재시작
  • create database
  • 데이터베이스 스키마 복원
  • alter table … discard tablespace
  • 복사했던 ibd 파일을 데이터베이스 디렉토리로 이동
  • alter table … import tablespace

alter table 명령 만들기

테이블이 많을때 information schema 이용해서 alter table 명령을 만들 수 있습니다.

select concat('alter table ', table_schema, '.', table_name, ' import tablespace;') as sql_alter
from information_schema.tables
where table_schema = 'ohnew';