MariaDB 버전 업그레이드

개요

mariadb 10.3 에서 mariadb 10.11로 업그레이드 한 경험에 대해 공유 합니다.

참고 문서

백업

문제 발생에 대비하여 Full Backup 을 실시 합니다. 이번 작업은 데이터 사이즈가 큰 관계로 mysqldump를 이용하기 보다 mariabackup 백업 도구를 이용하여 백업을 실시 했습니다. mysqldump와 비교하여 백업 속도는 큰 차이가 없었지만 만일의 사태 복구를 해야 할 상황이면 말이 달라 졌습니다.

mysqldump로 백업한 데이터를 가지고 복구 시뮬레이션시 대략 3시간 반 정도가 소요되었고 그대로 진행하는건 무리라고 판단하여 다른 백업 방법을 확인해 보니 mariabackup이 복구 시 속도면에서 큰 이점이 있어 이를 이용하기로 결정 했습니다.

복구 시뮬레이션 수행 결과에 대한 내용은 아래 표를 참고해 주세요.

백업 도구압축 여부소요시간실 데이터 사이즈백업 데이터 사이즈복구 시간
mysqldumpO(gzip)약 28분약 79GB7.9GB
백업 해제시 : 54GB
3시간 30분
mariadb-backupX약 28분약 79GB79GB21분

mariabackup을 이용한 백업 방법

$ mariabackup --backup \
--target-dir=/data/backup \
--slave-info \
--safe-slave-backup \
--socket=/tmp/mysql.sock \
--user=root \
--password=PASSWORD

mariabackup을 이용한 복구 방법

$ mariabackup --copy-back \
--target-dir=/data/backup \
--datadir=/data/mariadb \
--user=root \
--password=PASSWORD

mariabackup 에 대한 자세한 설명은 아래 링크를 참고 하세요.

MariaDB 데이터 베이스 업그레이드

백업이 완료 되었고 본격적으로 데이터베이스 업그레이드 작업을 진행합니다.

업그레이드에 대한 전반적인 순서 입니다.

  • 현재 사용중인 데이터베이스 제거
  • 신규 버전 데이터베이스 설치
  • data 디렉토리 업그레이드

현재 사용중인 데이터베이스 제거

먼저 운영 시스템 현황을 간단히 설명하자면 CentOS 7mariadb-10.3 community server 버전이 rpm 패키지로 설치되어 있는 상태 입니다.

아래 명령을 수행하여 설치 되어 있는 mariadb 10.3 패키지를 제거합니다.

$ systemctl stop mariadb
$ yum remove "MariaDB-*" -y
$ yum remove galera -y

신규 버전 데이터베이스 설치

신규 버전에 대한 yum repository 설치
$ wget https://r.mariadb.com/downloads/mariadb_repo_setup
$ echo "ad125f01bada12a1ba2f9986a21c59d2cccbe8d584e7f55079ecbeb7f43a4da4 mariadb_repo_setup" \
    | sha256sum -c -
$ chmod +x mariadb_repo_setup
$ ./mariadb_repo_setup \
   --mariadb-server-version="mariadb-10.11"
MariaDB Community Server 설치
$ yum install MariaDB-server MariaDB-client MariaDB-backup -y
MariaDB 구동

MariaDB구동하기 전 기존 설정을 my.cnf 에 추가해 줍니다.

$ systemctl start mariadb

data 디렉토리 업그레이드

MariaDB 커뮤니티 서버는 새 버전에서 호환성 문제를 식별하고 수정하는데 사용할 수 있는 mariadb-upgrade 도구를 제공합니다.

서버를 업그레이드 하고 서버 프로세스를 시작한 후 이 도구를 이용하여 데이터 디렉토리내 데이터를 신규 버전에 호환되도록 업그레이드 합니다.

$ mariadb-upgrade

mariadb-upgrade 수행시 아래와 같은 오류가 발생한다면

Reading datadir from the MariaDB server failed. Got the following error when executing the 'mysql' command line client
ERROR 2002 (HY000): Can't connect to local server through socket '/var/lib/mysql/mysql.sock' (2)
FATAL ERROR: Upgrade failed

이렇게 조치 합니다.

$ mariadb-upgrade -u root -pPASSWORD --socket=/tmp/mysql.sock

mariadb-upgrade 수행시간은 테스트했던 데이터 사이즈 기준 약 2분 정도 소요 되었고 이후 문제 없이 잘 구동 되었습니다.

EOS가 임박한 상태에서 업그레이드가 불가피 하였고 많은 우려를 안고 작업을 진행 하였는데 생각보다 큰 문제 없이 진행이 되어 살짝 당황 했네요.

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다