여러 개의 DB 테이블을 phpMyAdmin을 통해 임포트하기

워드프레스와 같은 CMS로 제작된 사이트를 다른 호스팅 업체로 이전하려면 보통 데이터와 DB(데이터베이스)를 모두 이전해야 합니다. phpMyAdmin을 지원하는 환경에서는 phpMyAdmin을 통해 데이터베이스를 임포트할 수 있습니다. 여러 개의 DB 테이블을 한꺼번에 임포트해야 하는 경우가 있습니다. 여러 개의 DB 테이블을 phpMyAdmin을 통해 임포트하는 방법에 대해 살펴보겠습니다.

여러 개의 DB 테이블을 phpMyAdmin을 통해 임포트하기

DB 크기가 크지 않은 경우 phpMyAdmin을 통해 데이터베이스를 이전하면 편리합니다. phpMyAdmin에 로그인한 후에 Import(가져오기) 탭에서 SQL 파일을 업로드할 수 있습니다.

phpMyAdmin에서 DB 임포트하기

임포트 가능한 파일 형식은 SQL 파일이나 압축된 파일 형식입니다.

파일은 압축되지 않았거나 gzip, bzip2, zip로 압축된 파일들이 허용됩니다.
압축된 파일의 이름은 .[format].[compression]으로 반드시 끝나야 합니다. 예: .sql.zip (A compressed file's name must end in .[format].[compression]. Example: .sql.zip)

최근 가입형 워드프레스인 워드프레스닷컴(WordPress.com)에서 JetPack을 이용하여 백업한 파일을 받아서 설치형 워드프레스 사이트로 이전하는 작업을 맡았습니다. 젯팩으로 백업한 압축 파일을 해제하니 wp-content 폴더와 sql 폴더, 그리고 wp-config.php 파일이 들어 있었습니다.

문제는 sql 폴더에 DB 파일이 하나로 되어 있는 것이 아니라, 각 DB 테이블이 sql 파일로 엑스포트되어 있었습니다. 파일이 10개 정도라면 phpMyAdmin가져오기 탭에서 하나씩 임포트할 수 있겠지만 파일이 85개나 되었습니다.

80개가 넘는 파일을 하나씩 임포트하는 것은 시간이 제법 걸리고, 중도에 누락되는 파일이 발생할 우려가 있다고 판단되어 sql 파일들을 합치는 방법이 없는지 찾아보았습니다.

구글링을 통해 여러 개의 sql 파일을 하나로 병합하는 방법을 찾을 수 있었습니다. 리눅스에서 다음과 같은 명령을 수행하여 sql 파일들을 하나로 합칠 수 있습니다.

cat *.sql > filename.sql

카페24를 이용하는 경우 SSH에 접속이 가능하므로 SSH에 접속하여 위와 같은 명령으로 여러 개의 sql 파일을 쉽게 합칠 수 있습니다. 리눅스 OS 시스템이 없더라도 서버 접근 권한이 있는 호스팅(예: 아마존 AWS, Bluehost VPS 등)을 이용하는 경우 Linux에 접속하여 이 작업이 가능합니다.

여러 개의 DB 테이블을 phpMyAdmin을 통해 임포트하기

sql 파일의 크기가 큰 경우 다음 명령을 사용하여 압축을 하도록 합니다.

gzip filename.sql

윈도우에서는 명령 프롬프트에서 다음 명령을 실행하면 됩니다.

copy /b *.sql newfile.sql

참고로 워드프레스닷컴의 JetPack을 사용하여 백업한 DB를 임포트하면 한글이 깨질 수 있습니다. DB 마이그레이션 후에 한글이 깨지는 경우, 워드프레스닷컴에 이 문제를 상의해보면 좋을 것 같습니다. DB를 직접 엑스포트(Export)하여 보내줄 수도 있을 것입니다.

문제가 해결되지 않는다면 다음 글에서 소개하는 방법을 통해 이전할 수 있습니다.

하지만 데이터가 많은 경우 중도에 에러가 발생할 수 있습니다. 에러가 발생하더라도 반복적으로 계속 시도하면 데이터를 가져올 수 있을 것입니다. 저는 다음과 같은 에러가 발생했습니다.

Service Unavailable
The server is temporarily unable to service your request due to maintenance downtime or capacity problems. Please try again later.

Additionally, a 503 Service Unavailable error was encountered while trying to use an ErrorDocument to handle the request.

아마도 서버에서 과도한 작업을 한다고 판단하여 일시적으로 작업이 중단되는 것이 아닌가 생각되었습니다.

DB 파일 크기가 큰 경우

phpMyAdmin에서 업로드할 수 있는 DB 파일 크기는 제한되어 있습니다. 블루호스트의 경우 512MB까지 업로드 가능하다고 표시되어 있지만, 웹에서 큰 파일을 업로드를 시도하면 실패할 가능성이 높습니다. DB 파일이 너무 큰 경우에는 1) SSH를 통해 DB를 임포트하거나 2) DB를 작게 분할하여 임포트해야 합니다.

SSH에 접속할 수 없고, DB가 너무 커서 분할하는 것도 쉽지 않은 상황이 있습니다. 이 경우 UpdraftPlus 플러그인을 사용하여 백업/복원하는 방법으로 이전하면 매우 큰 DB도 이전이 가능합니다. 다만, 도메인이 다른 경우에는 UpdraftPlus 유료 버전을 사용해야 합니다("UpdraftPlus 워드프레스 백업 플러그인 무료 버전 vs. 프리미엄 버전" 참고).

참고

일부 글에 제휴 링크가 포함될 수 있으며 파트너스 활동으로 일정액의 수수료를 받을 수 있습니다.

댓글 남기기

* 이메일 주소는 공개되지 않습니다.