728x90
반응형

 

MySQL 백업 파일(.sql.gz)을 복원하려면 먼저 압축을 풀고 mysql 명령어를 사용해야 합니다.

방법 1: 압축을 풀면서 바로 복원

.gz 파일을 압축 해제 없이 직접 MySQL로 복원할 수 있습니다.

gunzip -c backup.sql.gz | mysql -u [username] -p [database_name]

설명

  • gunzip -c backup.sql.gz: 압축 해제된 내용을 표준 출력(stdout)으로 보냄.
  • | mysql -u [username] -p [database_name]: 해제된 SQL을 바로 MySQL로 복원.
  • -p 입력 후 비밀번호를 입력해야 합니다.

예제

gunzip -c mybackup.sql.gz | mysql -u root -p mydatabase
  • mybackup.sql.gz의 내용을 mydatabase에 복원.

 

방법 2: 압축을 먼저 풀고 복원

.gz 압축을 먼저 풀고 .sql 파일을 복원하는 방법입니다.

1. 압축 해제

gunzip backup.sql.gz
  • backup.sql.gz → backup.sql로 압축 해제됨.

2. MySQL로 복원

mysql -u [username] -p [database_name] < backup.sql

💡 예제

mysql -u root -p mydatabase < backup.sql

 

방법 3: zcat을 사용한 직접 복원

Linux에서 zcat을 활용하면 압축을 풀면서 즉시 복원할 수 있습니다.

zcat backup.sql.gz | mysql -u [username] -p [database_name]

💡 예제

zcat mybackup.sql.gz | mysql -u root -p mydatabase

추가 옵션

1. 복원 진행 상태 보기

기본적으로 mysql 명령어로 복원하면 진행 상태가 보이지 않지만, 다음과 같이 하면 진행 상황을 확인할 수 있습니다.

gunzip -c backup.sql.gz | pv | mysql -u [username] -p [database_name]
  • pv 명령어는 데이터 처리 속도 및 진행률을 표시합니다.
  • 설치 필요: sudo apt install pv (Ubuntu) 또는 sudo yum install pv (CentOS)

2. 특정 테이블만 복원

.gz 파일에서 특정 테이블만 복원하려면 압축 해제 후 수동 편집해야 합니다.

gunzip -c backup.sql.gz | grep -i 'INSERT INTO table_name' | mysql -u [username] -p [database_name]
  • grep을 활용하여 특정 테이블만 필터링할 수도 있음.

 

복원 전 확인해야 할 사항

1. 데이터베이스가 존재하는지 확인

mysql -u root -p -e "SHOW DATABASES;"
  • 데이터베이스가 없으면 먼저 생성:
mysql -u root -p -e "CREATE DATABASE mydatabase;"

 

2. 백업 파일 크기 확인

ls -lh backup.sql.gz
  • 너무 큰 경우 screen이나 nohup을 사용하여 백그라운드에서 실행 가능.

3. 기존 데이터 백업 복구 전에 현재 데이터를 백업하는 것이 안전합니다.

mysqldump -u root -p mydatabase > mydatabase_backup.sql

 

 

결론

방법명령어

압축 풀면서 복원 `gunzip -c backup.sql.gz
압축 해제 후 복원 gunzip backup.sql.gz → mysql -u root -p mydatabase < backup.sql
zcat 활용 `zcat backup.sql.gz
진행률 표시 (pv) `gunzip -c backup.sql.gz

가장 빠른 방법은 gunzip -c 또는 zcat을 사용한 실시간 복원입니다.
하지만 데이터 크기에 따라 미리 gunzip으로 압축을 풀고 복원하는 방법이 더 안정적일 수 있습니다. 

728x90
반응형

+ Recent posts