SQLITE
MyBoard SQLite 데이터베이스
MyBoard는 별도의 DB 서버 없이 SQLite 파일 하나로 회원, 게시물, 댓글과 게시판 설정을 저장합니다.
DB 파일 위치
MyBoard가 사용하는 데이터베이스 파일은 프로젝트의 data/board.sqlite입니다. db.php가 실행될 때 필요한 테이블과 열을 확인하고, 처음 실행할 때 데이터 폴더와 DB 구조를 준비합니다.
myboard/
├── data/
│ ├── board.sqlite SQLite 데이터베이스
│ └── 첨부파일·에디터 이미지
└── schema.sql 테이블 정의
SQLite는 별도 서버를 실행하지 않습니다. PHP에서 pdo_sqlite와 sqlite3 확장을 사용할 수 있어야 MyBoard가 정상적으로 동작합니다.
Termux 설치
MyBoard 실행에 필요한 PHP SQLite 확장은 PHP 패키지에 포함되어 있어야 합니다. 먼저 다음 명령으로 확인하세요.
pkg update && pkg upgrade
pkg install php php-fpm
php -m | grep -i sqlite
pdo_sqlite와 sqlite3가 표시되면 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 파일을 직접 수정하기 전에는 반드시 원본을 백업하고, 운영 중인 게시물 데이터는 관리자 기능을 우선 사용하세요.