본문 바로가기

리눅스

리눅스 DB 백업 및 복원

반응형

오라클 백업

# 기본 명령어
exp [사용자 이름]/[비밀번호] tables=[테이블 이름] file=[백업 파일 이름].dmp

# 특정 테이블 백업
exp 사용자이름/비밀번호 tables=테이블명 file=백업파일이름.dmp log=로그파일명.log direct=y compress=n statistics=none

# 특정 테이블 여러개 동시백업
exp 사용자이름/비밀번호 tables=TABLE1,TABLE2,TABLE3 file=백업파일이름.dmp statistics=none

# 특정 사용자의 테이블 백업
exp 사용자이름/비밀번호 owner=사용자이름 file=백업파일이름.dmp log=로그파일명.log direct=y compress=n statistics=none

# DB전체백업(DBA 비밀번호필요)
exp system/비밀번호 full=y file=백업파일이름.dmp log=로그파일명.log direct=y compress=n statistics=none

사용자 이름과 비밀번호를 입력안하면 어차피 입력하라고 나온다.

 

처음에 direct, compress, statistics 옵션을 몰랐는데 gpt가 추천해줬다.

✅ direct=y

의미:
→ Direct Path Export 방식 사용.
오라클이 데이터를 SQL 처리 과정을 거치지 않고 바로 데이터 파일에서 읽어서 내보냄.

장점:

  • 훨씬 빠름 (특히 대용량일수록 효과 큼)
  • 리소스 절약 가능

주의:

  • 일부 데이터 타입이나 LOB 컬럼은 호환 이슈 있을 수 있음

✅ compress=n

의미:
→ Export 파일 안에 테이블 생성 시 STORAGE 절의 초기 익스텐트(공간)를 압축하지 않음.

**기본값은 Y (압축함)**인데, n으로 설정하면:

  • Import 시, 기존 익스텐트 구조 유지됨 → 비효율적 공간 사용 방지
  • 테이블스페이스에 불필요한 큰 공간이 잡히지 않음

요약:
Import 후에도 실제 사용 크기만큼만 공간 사용하게 하려면 compress=n 쓰는 게 좋아요.


✅ statistics=none

의미:
→ Export 시, 오라클 객체(테이블, 인덱스 등)의 통계정보를 포함하지 않음

기본값은 ESTIMATE (통계 추정해서 포함),
하지만 대개 Import 후 새로 통계정보를 수집(ANALYZE) 하기 때문에
→ statistics=none으로 설정하면 불필요한 통계정보 제외해서 파일 용량도 줄고 시간도 절약할 수 있음

 

* gpt가 설명해준 옵션별 설명참고 *

exp의 경우 오라클 11g까지 기본 제공 이후 버전부터는 expdp 사용을 권장한다.

 

오라클 복원

# 기본 명령어
imp 사용자이름/비밀번호 file=백업파일이름.dmp full=y

# 특정 테이블 복원
imp 사용자이름/비밀번호@DB명 file=백업파일이름.dmp tables=TABLE_NAME log=로그파일명.log

# 특정 사용자 복원(안써봐서 모르겠다)
imp 사용자이름/비밀번호@DB명 file=백업파일이름.dmp fromuser=백업된사용자 touser=복원할사용자 log=로그파일명.log

# 시스템 명령어로 백업받은 파일은 system으로 복원해야함
imp system/비밀번호@DB명 file=백업파일이름.dmp full=y log=로그파일명.log

 

* 기본 명령어밖에 안 써봤다 *

 


MYSQL 백업

# 기본 명령어
mysqldump -u [사용자이름] -p [DB이름] [테이블명] > 백업파일이름.sql

# 특정 사용자의 모든 테이블 백업
mysqldump -u [사용자이름] -p [DB이름] > 백업파일이름.sql

# 전체 DB 백업
mysqldump -u [사용자이름] -p --all-databases > 백업파일이름.sql


# 비밀번호 입력하는 과정없이 바로 실행
# p뒤에 띄어쓰기 없이 붙여야함
mysqldump -u [사용자이름] -p[비밀번호] [DB이름] [테이블명] > 백업파일이름.sql

 

MYSQL 복원

# 특정 TABLE 복원 [DB는 생성되어 있어야함]
# CREATE DATABASE mydb;
mysql -u [사용자이름] -p [DB이름] < 백업파일.sql

# 전체 DB 복원 [DB자체를 복원]
mysql -u [사용자이름] -p < 백업파일.sql


# 비밀번호 입력하는 과정없이 바로 실행
# p뒤에 띄어쓰기 없이 붙여야함
mysql -u [사용자이름] -p[비밀번호] [DB이름] < 백업파일.sql

 

보안상 비밀번호를 명령어에 넣는건 권장되지않으며

.my.cnf 를 편집해서 사용하는 방법이 있다고 하니 알아두면 좋을듯하다

반응형

'리눅스' 카테고리의 다른 글

세션관리 nohup  (0) 2025.01.23