← 목록으로MariaDB

DEV DB MariaDB 11.4 마이그레이션 실적용 기록

개발 환경 DB를 MariaDB 10.5에서 11.4로 마이그레이션한 실제 적용 과정 정리

MariaDBDatabaseMigrationDevOps
2025-06-25

운영(PRD) 적용 전에 개발(DEV) 환경에서 먼저 MariaDB 11.4 마이그레이션을 진행했습니다.

이 글은 DEV DB 마이그레이션의 실제 적용 과정을 단계별로 정리한 기록입니다.


작업 개요

항목내용
대상DEV DB 서버
기존 버전MariaDB 10.5
목표 버전MariaDB 11.4
방식신규 인스턴스 설치 후 데이터 이관
다운타임약 30분 (개발 환경)

1. 사전 준비

EBS 볼륨 구성

DEV 서버에 데이터용 EBS 볼륨을 추가로 연결했습니다.

# 볼륨 확인
lsblk
df -h
 
# 마운트
sudo mkdir -p /data
sudo mount /dev/xvdf /data

EBS 마운트 상태

기존 DB 상태 확인

# 현재 버전 확인
mysql --version
 
# DB 사이즈 확인
mysql -u root -p -e "
SELECT table_schema AS 'Database',
  ROUND(SUM(data_length + index_length) / 1024 / 1024, 2) AS 'Size (MB)'
FROM information_schema.tables
GROUP BY table_schema;"

기존 DB 상태


2. MariaDB 11.4 설치

# 기존 10.5 서비스 중지
sudo systemctl stop mariadb
 
# MariaDB 11.4 레포 설정
curl -sS https://downloads.mariadb.com/MariaDB/mariadb_repo_setup | \
  sudo bash -s -- --mariadb-server-version="mariadb-11.4"
 
# 설치
sudo yum install MariaDB-server MariaDB-client -y

my.cnf 설정

[mysqld]
datadir=/data/mysql
port=[db-port]
bind-address=0.0.0.0
 
# 문자셋
character-set-server=utf8mb4
collation-server=utf8mb4_general_ci
 
# InnoDB
innodb_buffer_pool_size=2G
innodb_log_file_size=256M
 
# binlog (추후 Replication 대비)
server-id=10
log-bin=mysql-bin
binlog-format=ROW

설치 완료


3. 데이터 이관

mysqldump 실행

# 전체 DB 덤프
mysqldump -u root -p \
  --single-transaction \
  --routines --triggers --events \
  --all-databases > /data/backup/dev-full-dump.sql

신규 인스턴스에 import

# 11.4 서비스 시작
sudo systemctl start mariadb
 
# 초기 보안 설정
sudo mysql_secure_installation
 
# 데이터 import
mysql -u root -p < /data/backup/dev-full-dump.sql

데이터 import 진행

시퀀스 확인

10.5에서 사용하던 시퀀스가 11.4에서 정상 동작하는지 확인했습니다.

-- 시퀀스 목록 확인
SELECT TABLE_NAME, TABLE_TYPE
FROM information_schema.TABLES
WHERE TABLE_SCHEMA = '[db-name]'
  AND TABLE_TYPE = 'SEQUENCE';
 
-- 각 시퀀스 현재값 확인
SELECT NEXTVAL([sequence-name]);

일부 시퀀스가 이관되지 않아서 수동으로 재생성했습니다.

시퀀스 확인


4. 유저 및 권한 이관

-- 기존 유저 목록 확인
SELECT User, Host FROM mysql.user WHERE User NOT IN ('root', 'mariadb.sys', '');
 
-- 유저 생성 및 권한 부여
CREATE USER '[app-user]'@'[app-server-ip]' IDENTIFIED BY '[password]';
GRANT ALL PRIVILEGES ON [db-name].* TO '[app-user]'@'[app-server-ip]';
FLUSH PRIVILEGES;

유저 권한 설정


5. 애플리케이션 연결 전환

DEV 환경의 애플리케이션 설정에서 DB 접속 정보를 변경했습니다.

# application.yml (변경 전)
datasource:
  url: jdbc:mariadb://[old-db-ip]:[db-port]/[db-name]
 
# application.yml (변경 후)
datasource:
  url: jdbc:mariadb://[new-db-ip]:[db-port]/[db-name]

전환 후 주요 기능 테스트를 진행해서 정상 동작을 확인했습니다.

연결 전환 확인


6. 검증

데이터 정합성 확인

-- 테이블 수 비교
SELECT COUNT(*) FROM information_schema.TABLES
WHERE TABLE_SCHEMA = '[db-name]' AND TABLE_TYPE = 'BASE TABLE';
 
-- 주요 테이블 row count 비교
SELECT TABLE_NAME, TABLE_ROWS
FROM information_schema.TABLES
WHERE TABLE_SCHEMA = '[db-name]'
ORDER BY TABLE_ROWS DESC
LIMIT 20;

성능 비교

간단한 쿼리 성능을 비교해봤습니다.

쿼리10.511.4
전체 조회 (10만건)~1.2s~0.9s
JOIN 쿼리~0.8s~0.6s
INSERT 1000건~0.5s~0.4s

11.4에서 전반적으로 약 20~25% 성능 향상이 확인되었습니다.

성능 비교


이슈 및 해결

1. 기존 10.5 프로세스가 남아있는 문제

# 기존 프로세스 확인
ps aux | grep mysql
sudo kill [pid]
 
# 소켓 파일 정리
sudo rm /var/lib/mysql/mysql.sock

2. datadir 권한 문제

# 권한 설정
sudo chown -R mysql:mysql /data/mysql
sudo chmod 750 /data/mysql

3. 호환성 경고

11.4에서 deprecated된 설정이 있어서 my.cnf를 일부 수정했습니다.

[Warning] 'innodb_log_file_size' is deprecated and will be removed in a future release

11.4부터는 innodb_redo_log_capacity로 통합되었지만, 현재는 호환 모드로 동작하므로 추후 정리 예정입니다.


마무리

DEV 환경에서 MariaDB 11.4 마이그레이션을 성공적으로 완료했습니다. 이 과정에서 확인한 이슈들(시퀀스 이관, 권한 설정, deprecated 설정 등)을 정리해서 PRD 적용 시 참고했습니다.