운영(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
기존 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;"
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 -ymy.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
시퀀스 확인
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.5 | 11.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.sock2. datadir 권한 문제
# 권한 설정
sudo chown -R mysql:mysql /data/mysql
sudo chmod 750 /data/mysql3. 호환성 경고
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 적용 시 참고했습니다.