VillageSQL is a drop-in replacement for MySQL with extensions.
All examples on this page work on VillageSQL. Install Now →
mysqldump — 논리 백업
mysqldump는 데이터를 SQL 문으로 내보냅니다. 가장 이식성이 높은 형식이며 모든 크기의 데이터베이스에서 동작하지만, 큰 데이터 세트에서는 바이너리 백업보다 복원이 느립니다.
단일 데이터베이스 백업:
--single-transaction 없이 실행하면 mysqldump는 LOCK TABLES로 테이블을 잠그며, 덤프가 진행되는 동안 쓰기가 차단됩니다.
덤프에서 복원:
mysql -u root -p < all_databases.sql
바이너리 로그를 이용한 특정 시점 복구
전체 백업은 마지막 백업 시점까지만 보호합니다. 바이너리 로깅을 사용하면 백업 이후에 이루어진 모든 변경 사항을 재생할 수 있습니다. 요구 사항:- 바이너리 로깅 활성화(
log_bin = ON) - 백업 시
--source-data=2사용(시작 binlog 위치 기록)
- 전체 백업 복원:
- 덤프 파일에서 binlog 시작 위치 찾기:
- 되돌리려는 이벤트 직전 시점까지 바이너리 로그 재생:
MySQL Shell 덤프 유틸리티
MySQL Shell(mysqlsh)은 mysqldump보다 빠른 덤프 및 로드 유틸리티를 제공합니다. 병렬 스레드를 사용하고 압축된 출력을 생성하므로 큰 데이터베이스에 실용적입니다.
mysqldump 대비 속도 차이가 상당합니다.
백업 방법 비교
mysqldump는 여전히 이식성과 단순함을 위한 기본 선택입니다. 큰 데이터베이스에서는 MySQL Shell 덤프가 사실상 mysqlpump를 대체했습니다 — 더 빠르고, 더 작은 파일을 생성하며, MySQL 8.0+를 지원합니다. mysqlpump는 MySQL 8.4에서 제거되었습니다 — 바이너리가 빌드에 전혀 포함되지 않으므로, 이를 호출하는 모든 스크립트는 바로 실패합니다.
복원 시간이 중요한 약 50GB 이상의 프로덕션 데이터베이스에서는 Percona XtraBackup 또는 MySQL Shell 덤프가 실용적인 선택입니다.
각 방법을 사용할 시기
백업 예약하기
야간 덤프를 실행하는 cron 작업이 가장 일반적인 프로덕션 설정입니다:SELECT, LOCK TABLES, SHOW VIEW, TRIGGER, EVENT, RELOAD, PROCESS 권한만 필요합니다 — ALL PRIVILEGES는 필요하지 않습니다. PROCESS가 없어도 mysqldump는 완료되지만, 테이블스페이스 메타데이터를 덤프하려고 시도하면서 실행할 때마다 “Access denied … PROCESS privilege” 오류를 stderr에 출력합니다.
백업 검증하기
테스트하지 않은 백업은 백업이 아닙니다. 정기적으로 검증하세요:자주 묻는 질문
--single-transaction은 모든 스토리지 엔진에서 동작하나요?
아니요. --single-transaction은 일관된 읽기 스냅샷을 사용하며, 이는 InnoDB만 지원합니다. 같은 데이터베이스의 MyISAM 테이블은 덤프 중에 여전히 LOCK TABLES로 잠깁니다. 엔진이 혼합되어 있다면 --single-transaction만으로는 완전히 일관된 덤프에 충분하지 않습니다.
백업을 얼마나 오래 보관해야 하나요?
최소한: 일일 백업 7–14일, 주간 백업 4주, 월간 백업 1년. 보관 기간은 규제 요구 사항과 얼마나 먼 과거로 복구해야 할 수 있는지에 따라 달라집니다. 바이너리 로그는 가장 오래된 보관 백업과 현재 사이의 간격을 메울 만큼 충분히 오래 보관해야 합니다.데이터 디렉토리를 복사하는 것이 유효한 백업인가요?
서버를 먼저 종료한 경우에만 유효합니다(콜드 복사). 실행 중인 MySQL 서버는 직접 복사하기에 안전하지 않은 방식으로 데이터 파일을 기록하므로, 손상된 백업을 얻게 됩니다. 서버를 중지하지 않는 핫 백업에는 MySQL Shell의 덤프 유틸리티 또는 Percona XtraBackup을 사용하세요.문제 해결
백업 스크립트는 VillageSQL로 전환해도 그대로 동작합니다. VillageSQL은 MySQL의 드롭인 대체품이므로, 이 가이드의 mysqldump 명령, 바이너리 로그 설정, 복원 런북이 그대로 동작합니다.
참고
- MySQL 바이너리 로깅 — 바이너리 로그가 특정 시점 복구를 가능하게 합니다
- MySQL 복제 기초 — 복제는 같은 바이너리 로그 인프라에 의존합니다
- Docker에서 MySQL — 컨테이너화된 MySQL의 백업과 볼륨
- MySQL에서 업그레이드하기 — VillageSQL로의 업그레이드가 시작되는 백업 만들기
- 지원 종료 후 MySQL 8.0에서 8.4로 업그레이드하기 — 이 백업이 보호하는 8.0에서 8.4로의 업그레이드