티스토리 뷰
mysqldump 명령어 사용 시 --single-transaction 옵션을 추가
mysqldump --single-transaction --skip-lock-tables -u root -p database_name > backup.sql
MariaDB에서 백업 및 복구 후 데이터 일관성 검사를 자동화하려면, 스크립트를 활용해 백업 전후의 테이블 레코드 수를 비교하는 방식을 사용할 수 있습니다. 이를 위해 다음 단계를 따르면 됩니다:
1. SQL 파일로 레코드 카운트 추출
백업 전후 각 테이블의 레코드 수를 기록하고 비교하는 작업을 자동화하기 위해 SQL 파일과 Bash 스크립트를 결합.
1.1 레코드 카운트 쿼리 생성
모든 테이블의 레코드 수를 확인하기 위한 SQL 쿼리:
SELECT TABLE_NAME, TABLE_ROWS
FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_SCHEMA = 'database_name';
1.2 백업 전 레코드 수 저장
SQL 결과를 파일로 저장:
mysql -u root -p -e "SELECT TABLE_NAME, TABLE_ROWS FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA='database_name';" > pre_backup_record_count.txt
1.3 복구 후 레코드 수 저장
복구가 완료된 후 같은 쿼리를 실행해 결과를 저장:
mysql -u root -p -e "SELECT TABLE_NAME, TABLE_ROWS FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA='database_name';" > post_backup_record_count.txt
2. 결과 비교 자동화
Bash 스크립트를 활용하여 diff 또는 awk로 두 파일을 비교합니다.
2.1 Bash 스크립트 작성
아래는 자동화된 스크립트 예제입니다:
#!/bin/bash
DB_NAME="database_name"
MYSQL_USER="root"
MYSQL_PASS="your_password"
# 파일 경로
PRE_BACKUP="pre_backup_record_count.txt"
POST_BACKUP="post_backup_record_count.txt"
# 백업 전 레코드 수 저장
mysql -u $MYSQL_USER -p$MYSQL_PASS -e "SELECT TABLE_NAME, TABLE_ROWS FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA='$DB_NAME';" > $PRE_BACKUP
# 복구 수행 (사용자가 복구 과정 추가)
# 복구 후 레코드 수 저장
mysql -u $MYSQL_USER -p$MYSQL_PASS -e "SELECT TABLE_NAME, TABLE_ROWS FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA='$DB_NAME';" > $POST_BACKUP
# 결과 비교
echo "Comparing record counts before and after backup:"
diff $PRE_BACKUP $POST_BACKUP
if [ $? -eq 0 ]; then
echo "Data consistency check PASSED. Record counts match."
else
echo "Data consistency check FAILED. Differences found:"
diff $PRE_BACKUP $POST_BACKUP
fi
3. 실행 방법
- 스크립트를 저장:
- 파일 이름: check_data_consistency.sh
- 실행 권한 부여:
chmod +x check_data_consistency.sh
- 스크립트 실행:
- ./check_data_consistency.sh
4. 결과 분석
- 정상적인 경우:
- Comparing record counts before and after backup: Data consistency check PASSED. Record counts match.
- 차이 발견 시:
- Comparing record counts before and after backup: Data consistency check FAILED. Differences found: 3c3 < table_name_1 100 --- > table_name_1 95
5. 확장 가능성
- 일치하지 않는 테이블만 출력: awk를 사용해 차이가 있는 테이블만 표시:
- awk 'NR==FNR{a[$1]=$2; next} ($1 in a) && a[$1] != $2 {print $1, a[$1], $2}' pre_backup_record_count.txt post_backup_record_count.txt
- 대규모 환경 지원:
- 결과를 JSON이나 CSV로 출력해 로그 분석 도구와 통합.
- 스크립트를 Cron으로 등록해 정기적으로 실행.
결론
위 명령어와 스크립트를 활용하면 MariaDB 백업/복구 후 데이터 일관성을 자동으로 검사할 수 있다.
댓글