SQLITE

MyBoard SQLite 데이터베이스

MyBoard는 별도의 DB 서버 없이 SQLite 파일 하나로 회원, 게시물, 댓글과 게시판 설정을 저장합니다.

DB 파일 위치

MyBoard가 사용하는 데이터베이스 파일은 프로젝트의 data/board.sqlite입니다. db.php가 실행될 때 필요한 테이블과 열을 확인하고, 처음 실행할 때 데이터 폴더와 DB 구조를 준비합니다.

myboard/
├── data/
│   ├── board.sqlite       SQLite 데이터베이스
│   └── 첨부파일·에디터 이미지
└── schema.sql              테이블 정의

SQLite는 별도 서버를 실행하지 않습니다. PHP에서 pdo_sqlitesqlite3 확장을 사용할 수 있어야 MyBoard가 정상적으로 동작합니다.

Termux 설치

MyBoard 실행에 필요한 PHP SQLite 확장은 PHP 패키지에 포함되어 있어야 합니다. 먼저 다음 명령으로 확인하세요.

pkg update && pkg upgrade
pkg install php php-fpm
php -m | grep -i sqlite

pdo_sqlitesqlite3가 표시되면 PHP에서 SQLite를 사용할 수 있습니다. DB를 직접 확인하거나 아래 관리 명령을 사용하려면 SQLite 명령줄 도구를 추가로 설치합니다.

pkg install sqlite
sqlite3 --version

기본 명령어

MyBoard 폴더에서 SQLite 셸을 실행합니다.

cd /data/data/com.termux/files/home/www/myboard
sqlite3 data/board.sqlite

SQLite 셸 안에서 사용할 수 있는 간단한 명령입니다.

.tables
.schema posts
.headers on
.mode column
SELECT id, title, created_at FROM posts ORDER BY id DESC LIMIT 10;
SELECT id, slug, name, skin FROM boards ORDER BY id;
.quit

백업과 복구

운영 중인 DB를 복사할 때는 가능하면 PHP 서버를 잠시 멈춘 뒤 백업하세요. SQLite 셸에서는 .backup 명령을 사용할 수 있습니다.

cd /data/data/com.termux/files/home/www/myboard
sqlite3 data/board.sqlite ".backup 'data/board.sqlite.bak'"

# 백업 파일을 새 DB로 복구할 때
cp data/board.sqlite.bak data/board.sqlite

DB만 백업하면 이미지와 첨부파일은 복구되지 않습니다. data/ 폴더 전체를 함께 보관해야 게시물과 업로드 파일을 모두 복원할 수 있습니다.

상태 점검

sqlite3 data/board.sqlite "PRAGMA integrity_check;"
sqlite3 data/board.sqlite "SELECT name FROM sqlite_master WHERE type='table' ORDER BY name;"
ls -lh data/board.sqlite

integrity_check 결과가 ok이면 기본 무결성 검사를 통과한 것입니다. DB 파일을 직접 수정하기 전에는 반드시 원본을 백업하고, 운영 중인 게시물 데이터는 관리자 기능을 우선 사용하세요.