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

mysqldump 없이 SQL 쿼리 한 줄로 MySQL 데이터베이스 테이블 복제하는 방법

MySQL에서 mysqldump 유틸리티를 사용하지 않고도 간단한 SQL 쿼리만으로 한 데이터베이스의 테이블을 다른 데이터베이스로 복제할 수 있습니다. 핵심 문법은 다음과 같습니다.

create table 대상데이터베이스명1.대상테이블명1 select * from 원본데이터베이스명2.원본테이블명2;

즉, CREATE TABLE ... SELECT 구문을 활용하면 원본 테이블의 구조와 데이터를 그대로 새 테이블에 복사할 수 있습니다. 실제 예제를 통해 단계별로 살펴보겠습니다.

1단계: 원본 테이블 생성하기

먼저 sample 데이터베이스를 선택한 뒤, 복제에 사용할 테이블을 생성합니다.

mysql> use sample;
Database changed
mysql> create table DemoTable101
   -> (
   -> Id int,
   -> Name varchar(20)
   -> );
Query OK, 0 rows affected (1.45 sec)

2단계: 샘플 데이터 삽입하기

INSERT 명령을 사용해 테이블에 몇 개의 레코드를 추가합니다.

mysql> insert into DemoTable101 values(101,'Sam');
Query OK, 1 row affected (0.18 sec)
mysql> insert into DemoTable101 values(102,'Bob');
Query OK, 1 row affected (0.10 sec)
mysql> insert into DemoTable101 values(103,'David');
Query OK, 1 row affected (0.11 sec)

3단계: 원본 데이터 확인하기

SELECT 문으로 테이블에 저장된 모든 레코드를 조회합니다.

mysql> select * from DemoTable101;

실행 결과는 다음과 같습니다.

+------+-------+
| Id   | Name  |
+------+-------+
|  101 | Sam   |
|  102 | Bob   |
|  103 | David |
+------+-------+
3 rows in set (0.00 sec)

4단계: 다른 데이터베이스로 테이블 복제하기

이제 sample 데이터베이스의 DemoTable101 테이블을 web 데이터베이스의 DemoTable2 테이블로 복제하는 쿼리를 실행합니다.

mysql> create table web.DemoTable2 select * from sample.DemoTable101;
Query OK, 3 rows affected (0.71 sec)
Records: 3  Duplicates: 0  Warnings: 0

쿼리 결과 메시지를 보면 3개의 레코드가 성공적으로 복사되었으며 중복이나 경고는 없는 것을 확인할 수 있습니다.

5단계: 복제 결과 검증하기

새로 생성된 테이블의 데이터를 SELECT 문으로 조회하여 복제가 정상적으로 이루어졌는지 확인합니다.

mysql> select * from web.DemoTable2;

실행 결과는 다음과 같습니다.

+------+-------+
| Id   | Name  |
+------+-------+
|  101 | Sam   |
|  102 | Bob   |
|  103 | David |
+------+-------+
3 rows in set (0.00 sec)

정리 및 참고 사항

위 예제처럼 CREATE TABLE ... SELECT 구문을 사용하면 mysqldump 같은 외부 도구 없이도 데이터베이스 간 테이블 복제가 손쉽게 가능합니다. 다만 몇 가지 유의할 점이 있습니다.

인덱스와 제약 조건: 이 방식은 열의 데이터 타입은 복사하지만, PRIMARY KEY, UNIQUE, FOREIGN KEY 등의 제약 조건과 인덱스는 자동으로 복사되지 않습니다. 필요하다면 복제 후 ALTER TABLE로 직접 추가해야 합니다.

AUTO_INCREMENT 속성: AUTO_INCREMENT 설정 역시 함께 복사되지 않으므로, 해당 속성이 필요한 경우 별도로 지정해 주어야 합니다.

전체 데이터베이스 복제: 데이터베이스 전체를 복제하려면 각 테이블마다 위 쿼리를 반복 실행하거나, 스크립트로 자동화하면 됩니다. 대량의 데이터나 완전한 구조 복제가 필요한 경우에는 mysqldump를 사용하는 것이 여전히 더 안정적일 수 있습니다.