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

MySQL 서버 간 테이블·데이터베이스 복사 방법: mysqldump 완벽 가이드

한 MySQL 서버에서 다른 MySQL 서버로 테이블이나 데이터베이스를 복사해야 할 때는 mysqldump 유틸리티를 사용하는 것이 가장 일반적이고 안정적인 방법입니다. mysqldump는 데이터베이스 이름과 테이블 이름을 인자로 받아 해당 내용을 SQL 문 형태의 덤프 파일로 출력해 줍니다.

방법 1: 덤프 파일을 이용한 복사

1단계 — 원본 서버에서 데이터 덤프 생성

먼저 원본 데이터베이스가 있는 호스트에서 아래 명령어를 실행합니다. 이 명령은 지정한 테이블의 전체 내용을 dump.txt 파일로 저장합니다.

$ mysqldump -u root -p database_name table_name > dump.txt
password *****

특정 테이블 이름을 생략하면 데이터베이스 전체를 한 번에 덤프할 수 있습니다.

$ mysqldump -u root -p database_name > dump.txt
password *****

2단계 — 대상 서버에 데이터 가져오기

생성된 dump.txt 파일을 FTP 등의 방식으로 다른 호스트에 옮긴 뒤, 아래 명령어로 데이터를 불러옵니다.

$ mysql -u root -p database_name < dump.txt
password *****

주의: 이 명령을 실행하기 전에 반드시 대상 서버에 동일한 이름의 데이터베이스(database_name)가 미리 생성되어 있어야 합니다. 없다면 CREATE DATABASE database_name;으로 먼저 만들어 주세요.

방법 2: 네트워크를 통한 직접 복사

중간 파일을 거치지 않고 mysqldump의 출력을 네트워크를 통해 원격 MySQL 서버로 바로 전송하는 방법도 있습니다. 원본 데이터베이스가 있는 호스트에서 양쪽 서버 모두에 접속할 수 있다면, 아래 명령어 하나로 복사 작업을 완료할 수 있습니다. (두 서버 모두에 대한 접근 권한이 있는지 확인하세요.)

$ mysqldump -u root -p database_name \
| mysql -h other-host.com database_name

파이프(|)의 동작 원리

위 명령어에서 파이프(|) 앞부분인 mysqldump는 로컬 서버에 연결하여 덤프 결과를 파이프로 출력합니다. 파이프 뒷부분의 mysql 클라이언트는 other-host.com의 원격 MySQL 서버에 연결되어 파이프로부터 입력을 읽어 들이고, 덤프에 포함된 각 SQL 문을 원격 서버에 순차적으로 실행합니다.

이 방식은 덤프 파일을 디스크에 저장하고 전송하는 과정이 생략되므로, 대용량 데이터베이스를 복사할 때 시간과 디스크 공간을 크게 절약할 수 있다는 장점이 있습니다.