ServBay: 기존 MariaDB 데이터베이스를 로컬 환경으로 가져오기
ServBay는 MariaDB 데이터베이스 패키지가 내장된 강력한 로컬 웹 개발 환경입니다. 기존 MariaDB 데이터베이스(예: 다른 로컬 환경, 원격 서버 또는 백업 파일에서 가져온 데이터베이스)를 ServBay가 제공하는 MariaDB로 마이그레이션하거나 가져오는 것은 매우 흔한 작업입니다. 이 안내서에서는 데이터를 ServBay 로컬 개발 환경으로 성공적으로 마이그레이션하는 전체 절차를 단계별로 설명합니다.
개요
본 가이드는 표준 MariaDB/MySQL 커맨드라인 도구(mysqldump
및 mysql
)를 활용하여 소스 MariaDB 인스턴스에서 데이터를 내보내고, ServBay 환경에서 대상 데이터베이스를 준비한 뒤, 데이터를 ServBay의 MariaDB 인스턴스로 가져오는 전체 과정을 다룹니다.
사전 준비 사항
데이터를 가져오기 전에 다음 조건을 충족하는지 확인하세요.
- ServBay가 macOS에 설치되어 실행 중임: ServBay 앱이 정상적으로 설치되어 있고 실행 중이어야 합니다.
- ServBay의 MariaDB 패키지가 활성화 및 실행 중임: ServBay 앱의 '패키지' 목록에서 MariaDB 패키지가 활성화되고 녹색으로 실행 중임을 확인하세요. 미실행 시 시작하세요.
- 소스 MariaDB 데이터베이스에 접근 가능함: 소스 MariaDB의 호스트 주소, 포트(비표준인 경우), 사용자명, 비밀번호, 내보낼 데이터베이스 이름을 알고 있어야 합니다.
- ServBay의 대상 MariaDB 데이터베이스에 접근 가능함: 일반적으로 ServBay MariaDB의
root
사용자와 비밀번호가 필요합니다. ServBay의 MariaDB는 기본적으로root
계정을 제공하며, 초기 설치 시 비밀번호가 없거나, 직접 설정하셨을 수 있습니다. 관련 정보는 ServBay 앱의 데이터베이스 관리 섹션에서 확인하거나, 비밀번호를 재설정할 수 있습니다. - 충분한 디스크 공간 확보: ServBay 환경에서 데이터를 저장할 충분한 공간이 있는지 확인하세요.
작업 절차
1단계: 소스 MariaDB에서 데이터 내보내기
가장 먼저, mysqldump
도구를 이용하여 소스 MariaDB 데이터베이스의 데이터를 SQL 파일로 내보냅니다.
터미널 앱 열기: macOS에서 '터미널' 앱을 실행합니다.
내보내기 명령 실행:
mysqldump
명령어로 소스 MariaDB 인스턴스에 접속해 데이터베이스를 내보냅니다. 예를 들어, 소스 데이터베이스 이름이mydatabase_source
이고, 데이터를mydatabase.sql
파일로 내보내려 한다면 다음과 같이 실행하세요.bashmysqldump -u your_source_username -p -h your_source_host -P your_source_port mydatabase_source > mydatabase.sql
1your_source_username
: 소스 MariaDB 사용자명으로 변경하세요.-p
: 명령 실행 후 비밀번호를 입력하라는 창이 뜹니다.-h your_source_host
: 소스 MariaDB가 원격 서버에 있다면 호스트 주소를 지정합니다. 동일 PC 및 기본 설정이라면-h
는 생략할 수 있습니다.-P your_source_port
: 포트가 기본(3306)이 아니라면 지정합니다. 대부분 생략할 수 있습니다.mydatabase_source
: 내보낼 데이터베이스 이름을 입력합니다.> mydatabase.sql
: 내보낸 결과를mydatabase.sql
로 저장합니다. 이 파일은 현재 터미널의 디렉토리에 생성됩니다.
추후 ServBay 환경에서 이 SQL 파일에 접근이 편리하도록 ServBay 사이트 루트 디렉토리 아래 임시 폴더(예:
/Applications/ServBay/www/temp/mydatabase.sql
)에 저장하는 것이 좋습니다. 현재 디렉토리에서 내보낸 후,mv
명령으로 옮기세요.bashmysqldump -u your_source_username -p mydatabase_source > mydatabase.sql mv mydatabase.sql /Applications/ServBay/www/temp/
1
2참고:
/Applications/ServBay/www/temp/
경로가 존재하는지 확인하세요.
2단계: 대상 MariaDB 데이터베이스 준비(ServBay 내)
가져오기를 시작하기 전 ServBay에 MariaDB 데이터베이스를 새로 생성해야 합니다.
ServBay의 MariaDB에 접속: 터미널에서
mysql
명령어로 ServBay MariaDB 인스턴스에 접속합니다. ServBay는 일반적으로 Unix 소켓 혹은 localhost를 통한 연결을 허용합니다.bashmysql -u root -p
1위 명령 실행 후, ServBay MariaDB의
root
비밀번호를 입력합니다. 엔터를 누르면 MariaDB 커맨드라인 클라이언트에 접속됩니다.팁:
root
비밀번호를 모르거나 연결에 문제가 있다면 ServBay UI에서 MariaDB 패키지 설정 또는 로그를 확인하세요.대상 데이터베이스 생성: MariaDB 클라이언트에서 가져올 데이터를 담을 새 데이터베이스를 생성합니다. 소스 데이터베이스와 같은 이름(예:
mydatabase
)을 추천하지만, 반드시 동일할 필요는 없습니다.sqlCREATE DATABASE mydatabase CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
1mydatabase
: ServBay에 생성할 데이터베이스 이름으로 변경하세요.CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci
: 인코딩 오류 방지를 위해 문자셋과 정렬 방식을 명확히 지정하는 것을 강력히 권장합니다.utf8mb4
는 여러 언어 및 특수문자 지원에 적합한 권장 문자셋입니다. 소스 DB 설정에 따라 알맞게 변경해 일치시키는 것이 중요합니다.
MariaDB 클라이언트 종료: 데이터베이스 생성 후,
exit;
를 입력하여 종료합니다.sqlexit;
1
3단계: 데이터를 ServBay MariaDB로 가져오기
이제 내보낸 SQL 파일을 ServBay의 MariaDB에 생성한 데이터베이스로 가져와야 합니다.
터미널 앱 열기: 터미널에 계속 있습니다.
가져오기 명령 실행:
mysql
명령어로 SQL 파일을 대상 데이터베이스에 가져옵니다.bashmysql -u root -p mydatabase < /Applications/ServBay/www/temp/mydatabase.sql
1-u root -p
: ServBay MariaDB의root
사용자로 접속(비밀번호 입력 필요)mydatabase
: 2단계에서 생성한 데이터베이스 이름으로 변경< /Applications/ServBay/www/temp/mydatabase.sql
: 입력 리디렉션으로 SQL 파일 내용을mysql
에 전달. 실제 SQL 파일의 경로가 정확한지 확인하세요.
파일 용량에 따라 가져오기에는 시간이 소요될 수 있습니다. 터미널은 과정 중 별도의 출력 없이 끝나거나 에러 시 메시지를 출력합니다.
4단계: 데이터 가져오기 검증
가져오기 완료 후, 데이터가 ServBay의 MariaDB에 정상적으로 옮겨졌는지 반드시 확인하세요.
ServBay MariaDB에 접속:
bashmysql -u root -p
1가져온 데이터베이스 선택:
sqlUSE mydatabase;
1mydatabase
: 가져온 데이터베이스 이름으로 변경
데이터 조회: 데이터 구조와 값이 올바르게 들어왔는지 몇 가지 쿼리로 확인하세요.
sqlSHOW TABLES; -- 모든 테이블 확인 SELECT COUNT(*) FROM your_table_name; -- 특정 테이블의 데이터 건수 확인 SELECT * FROM your_table_name LIMIT 10; -- 특정 테이블 앞 10개 행 조회
1
2
3your_table_name
: 실제 테이블명으로 변경
원본 데이터베이스와 데이터량, 혹은 주요 데이터를 샘플 확인함으로써 마이그레이션이 성공했는지 검증합니다.
발생 가능한 호환성 문제 해결
MariaDB의 버전이 달라도 대체로 호환성이 좋지만, 데이터 이전 과정에서 예상치 못한 문제가 발생할 수 있습니다. 대표적인 사례 및 해결법은 아래와 같습니다.
1. 특정 SQL 문법이 호환되지 않는 경우
소스 MariaDB 버전이 오래되었거나, 특정 버전에서만 사용하는 문법을 썼을 경우 내보낸 SQL 파일이 ServBay의 MariaDB에서 실행되지 않을 수 있습니다.
- 해결법: 내보낸
mydatabase.sql
파일을 텍스트 에디터로 열어 오류 메시지와 관련된 SQL문을 직접 확인 및 수정하세요. MariaDB 공식 문서(MariaDB Documentation)를 참고해 문법을 최신 버전 기준에 맞게 바꿔야 합니다.
2. 스토리지 엔진 불일치 또는 지원 중단
MyISAM 등 이전 MariaDB 버전에서 사용하던 스토리지 엔진은 최신 MariaDB에서는 기본값이 아니거나 더 이상 권장되지 않을 수 있습니다.
해결법: 가져오기 전에 SQL 파일에서
ENGINE=MyISAM
등 구형 엔진 정의를 편집기로 찾아ENGINE=InnoDB
처럼 ServBay에서 지원 및 권장하는 엔진으로 일괄 변경하세요. InnoDB는 트랜잭션 안전 등 특성상 표준 선택지입니다.sql-- SQL 파일에서 찾을 수 있는 예시: CREATE TABLE `your_table_name` ( -- ... 컬럼 정의 ... ) ENGINE=MyISAM DEFAULT CHARSET=utf8; -- 아래와 같이 변경: CREATE TABLE `your_table_name` ( -- ... 컬럼 정의 ... ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
1
2
3
4
5
6
7
8
9
3. 사용자와 권한 정보 누락
mysqldump
는 기본적으로 사용자 계정 및 권한 정보를 백업하지 않습니다. 데이터를 가져온 후에도, 소스 DB에서 만들었던 사용자는 ServBay의 MariaDB에서 자동 생성되지 않습니다.
해결법: 데이터 가져오기 후 필요에 따라 ServBay MariaDB의
root
계정으로 접속하여 직접 사용자 생성, 권한 부여 구문(CREATE USER
및GRANT
)을 실행해야 합니다.sql-- 새 사용자 생성 예시(예: 'servbay_user'를 로컬에서만 접속 가능, 비밀번호 'your_password') CREATE USER 'servbay_user'@'localhost' IDENTIFIED BY 'your_password'; -- 해당 데이터베이스에 대한 모든 권한 부여 GRANT ALL PRIVILEGES ON mydatabase.* TO 'servbay_user'@'localhost'; -- 모든 호스트에서 접속 허용(운영 환경에서는 권장하지 않음) -- CREATE USER 'servbay_user'@'%' IDENTIFIED BY 'your_password'; -- GRANT ALL PRIVILEGES ON mydatabase.* TO 'servbay_user'@'%'; -- 권한 갱신 FLUSH PRIVILEGES;
1
2
3
4
5
6
7
8
9
10
11
12servbay_user
,your_password
는 원하는 사용자명과 비밀번호로,mydatabase
는 대상 DB명으로 알맞게 변경하세요.- 경우에 따라
'localhost'
또는'%'
(모든 IP) 사용을 선택하세요.
4. 문자셋 및 정렬 방식 불일치
소스와 대상 데이터베이스에서 문자셋이나 Collation이 다를 경우 다국어 데이터가 깨질 수 있습니다(특히 비 ASCII 문자).
- 해결법: 2단계 데이터베이스 생성 시, 소스 DB와 동일(또는
utf8mb4
등의 더 범용) 문자셋 및 정렬 방식을 명시하세요. 가져온 후에 문제가 발생했다면, SQL 파일의 인코딩을 재확인하고 파일 맨 위에SET NAMES 'utf8mb4';
명령을 추가하고, 데이터베이스를 삭제/재생성 후 다시 가져오기를 하세요.
ServBay 사용 시 참고사항
- MariaDB 접속 정보: 위에서 귀띔한 대로 ServBay MariaDB의
root
비밀번호는 ServBay UI에서 확인하거나 재설정 가능합니다. - 로그 파일: 가져오기 도중 오류가 발생하면, ServBay 설치 경로 내
logs
폴더의 MariaDB 로그 파일을 참조하세요. 자세한 오류 원인을 분석할 수 있습니다. - 성능 이슈: 대용량 데이터베이스는 가져오기에 시간이 오래 걸릴 수 있으며, 이 과정에서 ServBay의 MariaDB가 많은 시스템 자원을 사용할 수 있습니다.
자주 묻는 질문(FAQ)
Q: 가져오기 중에 작업이 중단되었습니다. 어떻게 해야 하나요?
A: 중단된 경우 데이터베이스가 불완전해질 수 있습니다. DROP DATABASE mydatabase;
로 기존 DB를 삭제, CREATE DATABASE mydatabase;
로 새로 생성 후, 다시 가져오기 명령을 실행하세요.
Q: 내보낸 SQL 파일이 너무 큽니다. 더 나은 가져오기 방법이 있나요?
A: 매우 큰 SQL 파일은 <
리디렉션보다 MariaDB 클라이언트 내에서 source
명령을 사용하는 것이 안정적일 수 있습니다.
- ServBay MariaDB에 접속:
mysql -u root -p
- DB 선택:
USE mydatabase;
- source 명령 실행:
SOURCE /path/to/your/large_database.sql;
이 방법은 MariaDB 클라이언트에서 직접 실행해야 하며, 대용량 파일에도 보다 견고하게 동작합니다.
Q: ServBay UI에서 바로 데이터 가져오기가 가능한가요?
A: ServBay UI는 주로 패키지 관리, 웹사이트 설정, 로그 조회 등 기능을 제공하며, DB 가져오기/내보내기는 표준 데이터베이스 관리 도구(mysql
, mysqldump
커맨드라인 또는 phpMyAdmin, Adminer 등의 GUI 도구)에 의존합니다. ServBay에는 Adminer가 내장되어 있으며, ServBay UI를 통해 Adminer에 접속하여 가져오기를 할 수 있습니다. 작은 데이터베이스나 커맨드라인이 익숙하지 않은 사용자에게 편리합니다.
요약
기존 MariaDB 데이터베이스를 ServBay의 MariaDB 환경으로 가져오는 과정은 표준 데이터 이전 절차를 따릅니다. mysqldump
로 데이터를 내보내고 ServBay에서 mysql
로 쉽게 가져올 수 있습니다. 사전 준비사항 확인, 문자셋/스토리지 엔진/사용자 권한 등 주요 호환성 이슈 체크, 결과 검증을 반드시 실천하세요. ServBay는 웹 개발 워크플로우를 지원하는 안정적인 로컬 MariaDB 환경을 제공합니다.