mysqldump를 사용해 생성한 백업 파일은 기존에 존재하는 데이터베이스에 복원할 수도 있고, 새로운 데이터베이스를 만든 후 그곳에 복원할 수도 있습니다. 이때 MySQL의 SOURCE 명령문을 활용하면 손쉽게 복원 작업을 수행할 수 있습니다.
복원 예제
다음 예제에서는 'query'라는 데이터베이스에서 mysqldump로 백업해 둔 student_info.sql 파일을 'tutorials'라는 이름의 다른 데이터베이스로 복원하는 과정을 살펴보겠습니다.
먼저 복원할 대상 데이터베이스를 선택한 뒤, SOURCE 명령어로 덤프 파일을 실행합니다.
mysql> Use Tutorials; Database changed mysql> SOURCE student_info.sql; Query OK, 0 rows affected (0.00 sec) Query OK, 0 rows affected (0.00 sec) Query OK, 0 rows affected (0.00 sec) Query OK, 0 rows affected (0.00 sec) Query OK, 0 rows affected (0.00 sec) Query OK, 0 rows affected (0.00 sec) Query OK, 0 rows affected (0.00 sec) Query OK, 0 rows affected (0.00 sec) Query OK, 0 rows affected, 1 warning (0.00 sec) Query OK, 0 rows affected (0.00 sec) Query OK, 0 rows affected (0.00 sec) Query OK, 0 rows affected (0.00 sec) Query OK, 0 rows affected (0.00 sec) Query OK, 0 rows affected (0.45 sec) Query OK, 0 rows affected (0.00 sec) Query OK, 0 rows affected (0.05 sec) Query OK, 0 rows affected (0.00 sec) Query OK, 7 rows affected (0.05 sec) Records: 7 Duplicates: 0 Warnings: 0
복원 결과 확인
SOURCE 명령 실행이 완료되면, 아래와 같이 SHOW TABLES 문으로 테이블 목록을 조회하여 'student_info' 테이블이 'tutorials' 데이터베이스에 정상적으로 복원되었는지 확인할 수 있습니다.
mysql> Show tables; +---------------------+ | Tables_in_tutorials | +---------------------+ | rtgs | | student_info | +---------------------+ 2 rows in set (0.00 sec) mysql> Select * from Student_info; +------+---------+------------+------------+ | id | Name | Address | Subject | +------+---------+------------+------------+ | 101 | YashPal | Amritsar | History | | 105 | Gaurav | Chandigarh | Literature | | 125 | Raman | Shimla | Computers | | 130 | Ram | Jhansi | Computers | | 132 | Shyam | Chandigarh | Economics | | 133 | Mohan | Delhi | Computers | | 150 | Saurabh | NULL | Literature | +------+---------+------------+------------+ 7 rows in set (0.00 sec)
정리
이처럼 mysqldump로 백업한 파일은 USE 명령으로 원하는 데이터베이스를 선택한 후 SOURCE 명령어 하나만으로 간단하게 복원할 수 있습니다. 복원이 완료되면 반드시 SHOW TABLES와 SELECT 쿼리를 통해 데이터가 온전히 들어왔는지 확인하는 습관을 들이는 것이 좋습니다.