서로 다른 아키텍처를 가진 시스템 간에 데이터베이스를 옮겨야 하는 경우, mysqldump 유틸리티를 사용해 SQL 문이 포함된 덤프 파일을 생성할 수 있습니다. 이 파일은 한 머신에서 다른 머신으로 전송한 뒤 mysql 클라이언트의 입력값으로 사용하면 됩니다. 아래에서 상황별 복사 방법을 하나씩 살펴보겠습니다.
두 머신 간 데이터베이스 이동하기
가장 간단한 방법은 데이터베이스가 있는 원본 머신에서 다음 명령어를 실행하는 것입니다.
mysqladmin -h 'other_hostname' create db_name mysqldump db_name | mysql -h 'other_hostname' db_name
첫 번째 명령은 대상 머신에 새 데이터베이스를 생성하고, 두 번째 명령은 원본 데이터베이스를 덤프해 대상 머신으로 곧바로 불러옵니다.
느린 네트워크에서 원격 데이터베이스 복사하기
네트워크 속도가 느린 환경에서 원격 머신의 데이터베이스를 복사해야 한다면, --compress 옵션을 추가해 전송되는 데이터 크기를 줄이는 것이 좋습니다.
mysqladmin create db_name mysqldump -h 'other_hostname' --compress db_name | mysql db_name
덤프 파일을 만들어 전송하는 방식
덤프 결과를 파일로 저장해 두면 나중에 대상 머신으로 옮긴 뒤 데이터베이스에 불러올 수 있습니다. 예를 들어 원본 머신에서 데이터베이스를 gzip으로 압축된 단일 파일로 덤프하려면 다음과 같이 실행합니다.
mysqldump --quick db_name | gzip > db_name.gz
생성된 압축 파일을 대상 머신으로 전송한 후, 아래 명령어로 데이터베이스를 복원합니다.
mysqladmin create db_name gunzip < db_name.gz | mysql db_name
대용량 데이터베이스: mysqldump와 mysqlimport 조합
데이터 양이 많은 데이터베이스라면 mysqldump와 mysqlimport를 함께 사용해 작업 속도를 높일 수 있습니다. 여기서 DUMPDIR은 mysqldump의 출력 파일이 저장될 디렉터리의 전체 경로를 나타냅니다.
먼저 출력 파일을 담을 디렉터리를 생성한 뒤, 테이블 구조(.sql)와 데이터(.txt)를 분리해 덤프합니다.
mkdir DUMPDIR mysqldump --tab=DUMPDIR db_name
다음으로 DUMPDIR 안의 파일들을 대상 머신의 해당 디렉터리로 전송하고, 아래 명령어로 MySQL에 불러옵니다.
mysqladmin create db_name # 데이터베이스 생성 cat DUMPDIR/*.sql | mysql db_name # 테이블 생성 mysqlimport db_name DUMPDIR/*.txt # 테이블에 데이터 적재