소중한 데이터를 안전하게 지키는 것은 모든 비즈니스와 개인에게 매우 중요한 과제입니다. 예기치 못한 시스템 장애, 하드웨어 고장, 심지어는 실수로 인한 데이터 삭제까지, 데이터 유실은 언제 어디서든 발생할 수 있습니다. 이러한 상황에 대비하기 위해 강력한 백업 및 복구 전략은 필수입니다. 이번 글에서는 널리 사용되는 데이터베이스 시스템인 MySQL과 Oracle의 효과적인 백업 및 복구 방법에 대해 자세히 알아보겠습니다. 마치 든든한 보험을 들어놓는 것처럼, 데이터 손실의 위험으로부터 안전하게 대비하는 방법을 함께 살펴보시죠! 🛠️
1. 논리적 백업 📝
논리적 백업은 데이터베이스의 스키마(구조)와 데이터를 SQL 문 또는 텍스트 파일 형태로 저장하는 방식입니다. 이 방식은 특정 시점의 데이터를 복원하거나, 다른 시스템으로 데이터를 이전할 때 유용합니다. 마치 책의 내용을 그대로 옮겨 적는 것과 같습니다.
MySQL의 mysqldump:
mysqldump는 MySQL에서 가장 흔하게 사용되는 논리적 백업 도구입니다.
백업 생성: 특정 데이터베이스 백업모든 데이터베이스 백업특정 테이블만 백업
mysqldump -u root -p my_database table1 table2 > tables_backup.sql
mysqldump -u root -p --all-databases > all_databases_backup.sql
mysqldump -u root -p --databases my_database > my_database_backup.sql
복구:
mysql -u root -p < my_database_backup.sql
Oracle의 Data Pump Export/Import
Oracle에서는 Data Pump를 사용하여 고성능의 논리적 백업 및 복구를 수행합니다.
백업 생성:
- schemas: 백업할 스키마 지정
- directory: 덤프 파일이 저장될 디렉토리 (Oracle 서버에 미리 생성되어 있어야 함)
- dumpfile: 덤프 파일 이름
- logfile: 로그 파일 이름
expdp system/password schemas=my_schema directory=backup_dir dumpfile=my_schema_backup.dmp logfile=my_schema_backup.log
복구:
-- 데이터 펌프 복구
impdp system/password schemas=my_schema directory=backup_dir dumpfile=my_schema_backup.dmp logfile=my_schema_restore.log
2. 물리적 백업 💾
물리적 백업은 데이터베이스의 데이터 파일, 로그 파일, 제어 파일 등 모든 물리적 구성 요소를 그대로 복사하는 방식입니다. 이 방식은 대용량 데이터베이스의 백업 및 복구에 효율적이며, 빠른 복구 시간을 제공합니다.
MySQL의 물리적 백업: Percona XtraBackup
Percona XtraBackup은 MySQL의 물리적 백업을 위한 강력한 오픈 소스 도구입니다. 온라인 백업을 지원하여 서비스 중단 없이 백업을 수행할 수 있다는 장점이 있습니다.
백업 생성:
xtrabackup --backup --target-dir=/backup/mysql
복구:
xtrabackup --prepare --target-dir=/backup/mysql # 복구 준비
xtrabackup --copy-back --target-dir=/backup/mysql # 데이터 파일 복사
Oracle의 RMAN (Recovery Manager):
RMAN은 Oracle 데이터베이스의 백업 및 복구를 위한 공식 도구입니다. 다양한 백업 전략과 복구 옵션을 제공하며, 안정적인 데이터 보호를 보장합니다.
백업 생성:
RMAN> BACKUP DATABASE PLUS ARCHIVELOG; -- 전체 데이터베이스 및 아카이브 로그 백업
복구:
RMAN> RESTORE DATABASE; -- 데이터베이스 복원
RMAN> RECOVER DATABASE; -- 로그를 적용하여 데이터베이스 복구
3. 복제 설정 🔄
복제는 데이터베이스의 데이터를 다른 서버에 실시간 또는 주기적으로 복사하여 데이터의 가용성과 내구성을 향상시키는 기술입니다. 주 서버에 장애가 발생하더라도 복제된 서버를 통해 서비스를 계속 제공할 수 있습니다. 마치 데이터를 여러 곳에 분산 저장하여 안전하게 관리하는 것과 같습니다.
MySQL의 복제 (Master-Slave):
[mysqld]
log-bin=mysql-bin # 바이너리 로그 활성화
server-id=1 # 고유한 서버 ID 설정
슬레이브 서버 설정 (my.cnf 또는 my.ini):
[mysqld]
server-id=2 # 마스터와 다른 고유한 서버 ID 설정
마스터 서버에서 복제 사용자 생성:
CREATE USER 'replicator'@'%' IDENTIFIED BY 'password';
GRANT REPLICATION SLAVE ON *.* TO 'replicator'@'%';
FLUSH PRIVILEGES;
슬레이브 서버에서 복제 시작:
CHANGE MASTER TO MASTER_HOST='master_host', MASTER_USER='replicator', MASTER_PASSWORD='password', MASTER_LOG_FILE='mysql-bin.000001', MASTER_LOG_POS=1234;
START SLAVE;
Oracle의 Data Guard:
Oracle Data Guard는 주 데이터베이스와 하나 이상의 스탠바이 데이터베이스 간의 복제를 제공하는 고급 솔루션입니다. 다양한 보호 모드(최대 가용성, 최대 성능, 최대 보호)를 제공하여 비즈니스 요구 사항에 맞게 구성할 수 있습니다.
- 설정 개요: 복잡한 설정 과정을 포함하므로, Oracle 공식 문서를 참고하는 것이 좋습니다. 기본적으로 주 데이터베이스에서 아카이브 로그를 스탠바이 데이터베이스로 전송하고, 스탠바이 데이터베이스에서 이 로그를 적용하는 방식으로 작동합니다.
Oracle의 Data Guard는 고급 복제 솔루션으로, 주 데이터베이스와 스탠바이 데이터베이스 간 복제를 제공합니다.
주 데이터베이스에서 로그 전송 서비스 활성화
ALTER SYSTEM SET LOG_ARCHIVE_DEST_1='SERVICE=standby_db';
스탠바이 데이터베이스에서 로그 적용 서비스 활성화
ALTER DATABASE RECOVER MANAGED STANDBY DATABASE USING CURRENT LOGFILE DISCONNECT FROM SESSION;
4. 실습: 백업 및 복구 시뮬레이션 🛠️
MySQL: mysqldump를 이용한 백업 및 복구
-- 1. 데이터베이스 백업
mysqldump -u root -p my_database > my_database_backup.sql
-- 2. 데이터베이스 삭제
mysql -u root -p -e "DROP DATABASE my_database;"
-- 3. 백업에서 복구
mysql -u root -p < my_database_backup.sql
Oracle: RMAN을 이용한 복구
-- 1. 데이터베이스 백업
RMAN> BACKUP DATABASE;
-- 2. 데이터 파일 삭제 (시뮬레이션)
-- 데이터 파일을 일부러 삭제하거나 손상시키는 테스트를 수행합니다.
-- 3. 복구 실행
RMAN> RESTORE DATABASE;
RMAN> RECOVER DATABASE;
5. 마무리 🌟
데이터는 현대 사회에서 매우 중요한 자산입니다. 효과적인 백업 및 복구 전략을 구축하고 정기적인 관리와 테스트를 통해 소중한 데이터를 안전하게 보호하시길 바랍니다. 이 글이 여러분의 데이터 관리에 도움이 되었기를 바랍니다. 궁금한 점이 있다면 언제든지 댓글로 문의해주세요. 😊
'DB' 카테고리의 다른 글
[DB]서비스 중단 없이 DB 이전? MySQL to Oracle 마이그레이션 핵심 전략 공개! (1) | 2025.01.16 |
---|---|
[DB]DB 관리, 이제 맡기세요! 클라우드 데이터베이스 (3) | 2025.01.16 |
[DB]SQL Injection? 암호화? 5분 만에 배우는 DB 보안 핵심 전략! (2) | 2025.01.16 |
[DB]데이터 충돌 방지: 트랜잭션 (1) | 2025.01.15 |
[DB]느린 쿼리 잡는 법: MySQL과 Oracle 성능최적화 (1) | 2025.01.15 |