Computer >> 컴퓨터 >  >> 프로그래밍 >> MySQL

MySQL 데이터베이스를 다른 머신으로 복사하는 방법 총정리


서로 다른 아키텍처를 가진 시스템 간에 데이터베이스를 옮겨야 하는 경우, 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 조합

데이터 양이 많은 데이터베이스라면 mysqldumpmysqlimport를 함께 사용해 작업 속도를 높일 수 있습니다. 여기서 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    # 테이블에 데이터 적재