컴퓨터 간 SQLite 데이터베이스를 더 빠르게 복사하는 방법
(alexwlchan.net)서론
- SQLite 데이터베이스를 rsync로 직접 복사할 경우, 인덱스 등으로 인해 파일 크기가 커져 느리고 불안정함.
- 이에 따라
.dump
를 활용해 텍스트 기반으로 압축·복원하는 방식이 제안됨.
본론
-
.dump
명령은 전체 DB를 SQL 텍스트로 출력하며, 인덱스는 명령어 한 줄로 대체되어 파일 크기가 작아짐.sqlite3 my_database.db .dump > my_database.db.txt
-
텍스트 파일은 gzip 압축 시 추가적인 용량 절감 가능:
sqlite3 my_database.db .dump | gzip -c > my_database.db.txt.gz
-
서버에서 압축본을 생성하고, 로컬로 복사 후 복원하는 절차로 전환함:
ssh username@server "sqlite3 db.db .dump | gzip -c > db.txt.gz" rsync --progress username@server:db.txt.gz . gunzip db.txt.gz cat db.txt | sqlite3 restored.db
-
원본 DB 파일 3.4GB → 덤프 텍스트 1.3GB → gzip 압축본 240MB로 약 14배 감소.
-
기존 rsync 방식은 전송 도중 DB가 변경되면
database disk image is malformed
오류 발생 가능. -
텍스트 덤프 방식은 복사 시작 후 내용 변경 위험이 없으므로 일관된 백업이 가능함.
결론
-
.dump
+ 압축 + 복원 방식은 대용량 SQLite 전송 시 속도와 안정성 모두 개선됨. - 특히 인덱스가 많은 DB에 효과적이며, 전송 실패나 손상 가능성을 줄일 수 있음.
- 대용량 SQLite를 자주 다룬다면 적용할 만한 실용적인 최적화 방식임.