Loading...
MySQL 9.5 Reference Manual 9.5의 9.4.1 Dumping Data in SQL Format with mysqldump의 한국어 번역본입니다.
아래의 경우에 피드백에서 신고해주신다면 반영하겠습니다.
감사합니다 :)
이 섹션에서는 mysqldump를 사용하여 SQL 포맷 덤프 파일을 생성하는 방법을 설명합니다. 이러한 덤프 파일을 다시 로드하는 방법에 대한 정보는
Section 9.4.2, “Reloading SQL-Format Backups”를 참조하십시오.
기본적으로 mysqldump는 정보를 SQL 문 형태로 표준 출력에 기록합니다. 출력 결과를 파일로 저장할 수 있습니다:
1$> mysqldump [arguments] > file_name
모든 데이터베이스를 덤프하려면 --all-databases 옵션을 사용하여 mysqldump를 실행하십시오:
1$> mysqldump --all-databases > dump.sql
특정 데이터베이스만 덤프하려면, 커맨드라인에서 해당 데이터베이스들을 나열하고 --databases 옵션을 사용하십시오:
1$> mysqldump --databases db1 db2 db3 > dump.sql
--databases 옵션은 커맨드라인상의 모든 이름을 데이터베이스 이름으로 처리하게 합니다. 이 옵션이 없으면 mysqldump는 첫 번째 이름을 데이터베이스 이름으로, 그 뒤에 오는 이름들을 테이블 이름으로 처리합니다.
--all-databases 또는
--databases와 함께 사용할 때,
mysqldump는 각 데이터베이스에 대해 덤프 출력 앞에 CREATE DATABASE 및 USE 문을 기록합니다. 이는 덤프 파일을 다시 로드할 때, 해당 데이터베이스가 존재하지 않으면 이를 생성하고, 기본 데이터베이스로 설정하여 데이터가 원래 존재하던 데이터베이스와 동일한 데이터베이스에 로드되도록 보장합니다.
덤프 파일이 각 데이터베이스를 다시 생성하기 전에 강제로 drop하도록 하려면 --add-drop-database 옵션도 함께 사용하십시오. 이 경우 mysqldump는 각 CREATE DATABASE 문 앞에 DROP DATABASE 문을 기록합니다.
하나의 데이터베이스만 덤프하려면, 커맨드라인에서 그 데이터베이스 이름을 지정하십시오:
1$> mysqldump --databases test > dump.sql
단일 데이터베이스의 경우에는 --databases 옵션을 생략해도 됩니다:
1$> mysqldump test > dump.sql
위 두 커맨드 간의 차이점은
--databases가 없을 때에는 덤프 출력에 CREATE DATABASE 또는 USE 문이 포함되지 않는다는 점입니다. 이는 다음과 같은 여러 가지 의미를 가집니다:
덤프 파일을 다시 로드할 때, 서버가 어느 데이터베이스로 리로드해야 하는지 알 수 있도록 기본 데이터베이스 이름을 지정해야 합니다.
다시 로드할 때, 원래 이름과 다른 데이터베이스 이름을 지정할 수 있으며, 이를 통해 데이터를 다른 데이터베이스로 리로드할 수 있습니다.
다시 로드할 데이터베이스가 존재하지 않는 경우, 먼저 해당 데이터베이스를 생성해야 합니다.
출력에 CREATE DATABASE 문이 포함되지 않기 때문에
--add-drop-database 옵션은 아무 효과가 없습니다. 이 옵션을 사용하더라도 DROP DATABASE 문은 생성되지 않습니다.
데이터베이스의 특정 테이블만 덤프하려면, 데이터베이스 이름 뒤에 해당 테이블 이름들을 커맨드라인에서 나열하십시오:
1$> mysqldump test t1 t3 t7 > dump.sql
기본적으로, 덤프 파일을 생성하는 서버에서 GTID를 사용하는 경우
(gtid_mode=ON),
mysqldump는 출력에 SET @@GLOBAL.gtid_purged 문을 포함하여 소스 서버의 gtid_executed 집합에 있는 GTID를 타깃 서버의 gtid_purged 집합에 추가합니다.
특정 데이터베이스나 테이블만 덤프하는 경우, mysqldump에 의해 포함되는 값에는 소스 서버의 gtid_executed 집합에 있는 모든 트랜잭션의 GTID가 포함된다는 점을 유의하는 것이 중요합니다. 여기에는 데이터베이스의 제외된 부분을 변경한 트랜잭션이나, 부분 덤프에 포함되지 않은 해당 서버의 다른 데이터베이스를 변경한 트랜잭션도 포함됩니다.
타깃 서버에서 하나의 부분 덤프 파일만 재생한다면, 이러한 추가 GTID는 해당 서버의 이후 동작에 아무런 문제를 일으키지 않습니다. 그러나 동일한 GTID를 포함하는 두 번째 덤프 파일(예를 들어, 같은 소스 서버에서 생성된 또 다른 부분 덤프)을 타깃 서버에서 재생하면, 두 번째 덤프 파일에 들어 있는 SET @@GLOBAL.gtid_purged 문은 실패합니다.
이 문제를 피하려면, mysqldump 옵션 --set-gtid-purged를 OFF 또는 COMMENTED로 설정하여 두 번째 덤프 파일이 활성화된 SET @@GLOBAL.gtid_purged 문 없이 출력되도록 하거나, 덤프 파일을 재생하기 전에 해당 문을 수동으로 제거하십시오.
9.4 Using mysqldump for Backups
9.4.2 Reloading SQL-Format Backups