English {#english}
Purpose: Daily full dump from DB server and upload to R2 for offsite retention. Prerequisites: R2 bucket prego-db-backups, R2 API token, rclone on DB server. Configure rclone remote for R2, then run dump + rclone copy (or use cron). Ref: cloudflare-orchestration-and-gtape-backup-plan §3.2, §3.3.
flowchart LR A[mysqldump] --> B[gzip] B --> C[rclone copy to R2]
Full details: see Korean section below.
한국어 {#korean}
Runbook: MariaDB 백업 → Cloudflare R2 (GTape §3.2, §3.3)
목적: DB 서버에서 일별 전체 덤프를 생성하고 R2로 전송하여 오프사이트 보존.
Ref: cloudflare-orchestration-and-gtape-backup-plan §3.2, §3.3.
1. 사전 조건
| 항목 | 내용 |
|---|---|
| R2 버킷 | Pulumi로 prego-db-backups 버킷 생성 (pulumi stack output r2_db_backups_bucket_name). |
| R2 API 토큰 | Cloudflare Dashboard → R2 → Manage R2 API Tokens → Object Read & Write. Access Key ID, Secret Access Key 확보. |
| rclone | DB 서버에 rclone 설치. apt install rclone 또는 rclone.org에서 설치. |
2. rclone R2 원격 설정 (DB 서버에서 1회)
rclone config# n) New remote → name: r2# Storage: s3# provider: Cloudflare# env_auth: false# access_key_id: <R2 Access Key ID># secret_access_key: <R2 Secret Key># endpoint: https://<ACCOUNT_ID>.r2.cloudflarestorage.com# (region 등은 기본값)- endpoint: Cloudflare 계정 ID를 사용. 예:
https://YOUR_ACCOUNT_ID.r2.cloudflarestorage.com
3. 백업 스크립트 배치
Prego 레포의 scripts/backup/mariadb-backup-to-r2.sh를 DB 서버에 복사하고 실행 권한 부여.
chmod +x /path/to/mariadb-backup-to-r2.sh환경변수(또는 스크립트 상단 수정):
MYSQL_HOST,MYSQL_USER,MYSQL_PASSWORD— MariaDB 접속. 또는~/.my.cnf사용.R2_REMOTE— rclone 원격 이름 (기본r2).R2_BUCKET— 버킷 이름 (기본prego-db-backups).BACKUP_DIR— 로컬 덤프 임시 경로 (기본/var/backups/mariadb).
4. Cron 등록 (일별 실행)
# 매일 00:10에 실행echo '10 0 * * * root MYSQL_PASSWORD=xxx /path/to/mariadb-backup-to-r2.sh >> /var/log/mariadb-backup.log 2>&1' | sudo tee /etc/cron.d/prego-mariadb-backupMYSQL_PASSWORD는 시크릿이므로 cron 파일 권한 0600 권장 또는 환경파일에서 source.
5. 검증
- 수동 실행:
MYSQL_PASSWORD=... ./mariadb-backup-to-r2.sh - R2 버킷에서
daily/mysqldump_YYYYMMDD_HHMM.sql.gz객체 확인. - Binlog는 Ansible mariadb_server role에서 이미 활성화됨 (PITR용).
6. DiRT (복구 검증)
월 1회 복구 테스트는 dirt-restore-verify 참조.