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으로 압축을 풀고 복원하는 방법이 더 안정적일 수 있습니다.
'python > tips' 카테고리의 다른 글
tail 로그를 별도 파일로 저장하는 방법 (0) | 2025.02.20 |
---|---|
Tomcat catalina.out 파일을 특정 라인부터 새파일로 만드는 방법 (0) | 2025.02.17 |
MySQL에서 특정 파티션(TRUNCATE) 삭제 방법 (0) | 2025.02.11 |
mysql에 Data Type Blob으로 4000 Charactor가 차지하는 데이터베이스 테이블의 크기 (0) | 2024.11.06 |
맥북에서 숨김 폴더 보기 (0) | 2024.09.19 |