소개
이 랩에서는 SQLite 데이터베이스를 백업하고 복원하는 방법을 배우게 됩니다. .dump 명령을 사용하여 데이터베이스를 SQL 파일로 내보내고, 백업을 생성한 다음, 해당 백업에서 데이터베이스를 복원하는 방법을 배우게 됩니다. 이는 데이터를 보호하는 데 필수적입니다.
이 랩에서는 SQLite 데이터베이스를 백업하고 복원하는 방법을 배우게 됩니다. .dump 명령을 사용하여 데이터베이스를 SQL 파일로 내보내고, 백업을 생성한 다음, 해당 백업에서 데이터베이스를 복원하는 방법을 배우게 됩니다. 이는 데이터를 보호하는 데 필수적입니다.
이 단계에서는 샘플 SQLite 데이터베이스를 생성하고 일부 데이터를 채웁니다. 이를 통해 백업 및 복원을 연습할 데이터베이스를 갖게 됩니다.
먼저, SQLite 셸을 엽니다. 여기에서 데이터베이스와 상호 작용합니다.
sqlite3 mydatabase.db
이 명령은 SQLite 셸을 시작하고 mydatabase.db라는 새 데이터베이스 파일을 생성합니다. 파일이 이미 존재하면 해당 파일을 대신 엽니다.
이제 id, name, email 열이 있는 users라는 테이블을 생성합니다.
CREATE TABLE users (
id INTEGER PRIMARY KEY,
name TEXT,
email TEXT
);
이 SQL 명령은 users라는 테이블을 생성합니다. id 열은 정수이며 기본 키 (primary key) 로, 테이블의 각 행을 고유하게 식별합니다. name 및 email 열은 텍스트 필드입니다.
다음으로, 샘플 데이터를 users 테이블에 삽입합니다.
INSERT INTO users (name, email) VALUES ('Alice', 'alice@example.com');
INSERT INTO users (name, email) VALUES ('Bob', 'bob@example.com');
이 명령은 users 테이블에 두 개의 행을 추가합니다. 첫 번째 행은 이름 'Alice'와 이메일 'alice@example.com'을 갖습니다. 두 번째 행은 이름 'Bob'과 이메일 'bob@example.com'을 갖습니다.
데이터가 올바르게 삽입되었는지 확인하려면 다음 명령을 실행합니다.
SELECT * FROM users;
다음과 유사한 출력을 볼 수 있습니다.
1|Alice|alice@example.com
2|Bob|bob@example.com
이 출력은 users 테이블의 내용을 보여주며, 데이터가 성공적으로 삽입되었음을 확인합니다.
이 단계에서는 mydatabase.db 데이터베이스를 mydatabase.sql이라는 SQL 파일로 내보냅니다. 이 SQL 파일에는 데이터베이스와 해당 데이터를 다시 생성하는 데 필요한 명령이 포함됩니다.
먼저, SQLite 셸을 종료합니다.
.exit
이 명령은 데이터베이스에 대한 연결을 닫고 Linux 터미널로 돌아갑니다.
이제 .dump 명령을 사용하여 데이터베이스를 SQL 파일로 내보냅니다.
sqlite3 mydatabase.db .dump > mydatabase.sql
이 명령은 sqlite3 명령줄 도구를 사용하여 mydatabase.db 데이터베이스에 연결합니다. .dump 명령은 SQLite 에 전체 데이터베이스를 일련의 SQL 명령으로 출력하도록 지시합니다. > 기호는 .dump 명령의 출력을 mydatabase.sql이라는 파일로 리디렉션합니다.
내보내기가 성공했는지 확인하려면 cat 명령을 사용하여 mydatabase.sql 파일의 내용을 볼 수 있습니다.
cat mydatabase.sql
다음과 유사한 출력을 볼 수 있습니다.
PRAGMA foreign_keys=OFF;
BEGIN TRANSACTION;
CREATE TABLE users (
id INTEGER PRIMARY KEY,
name TEXT,
email TEXT
);
INSERT INTO users VALUES(1,'Alice','alice@example.com');
INSERT INTO users VALUES(2,'Bob','bob@example.com');
COMMIT;
이 출력은 users 테이블을 생성하고 데이터를 삽입하는 SQL 명령을 보여줍니다. 이는 데이터베이스가 SQL 파일로 성공적으로 내보내졌음을 확인합니다.
이 단계에서는 동일한 .dump 명령을 사용하여 데이터베이스의 백업을 생성합니다. 이는 SQL 파일로 내보내는 것과 기본적으로 동일한 프로세스이지만, 백업을 다른 파일에 저장합니다.
sqlite3 mydatabase.db .dump > mydatabase_backup.sql
이 명령은 mydatabase.db 데이터베이스의 백업을 생성하고 mydatabase_backup.sql이라는 파일에 저장합니다.
백업이 성공적으로 생성되었는지 확인하려면 cat 명령을 사용하여 mydatabase_backup.sql 파일의 내용을 볼 수 있습니다.
cat mydatabase_backup.sql
이전 단계와 동일한 출력을 볼 수 있으며, 이는 백업 파일에 데이터베이스를 다시 생성하는 데 필요한 SQL 명령이 포함되어 있음을 확인합니다.
이 단계에서는 mydatabase_backup.sql 파일에서 데이터베이스를 복원합니다. 이렇게 하면 백업에서 데이터베이스와 해당 데이터를 다시 생성합니다.
먼저, 원본 데이터베이스가 손실된 시나리오를 시뮬레이션해 보겠습니다. mydatabase.db 파일을 삭제합니다.
rm mydatabase.db
이 명령은 파일 시스템에서 mydatabase.db 파일을 제거합니다.
이제 mydatabase_backup.sql 파일에서 데이터베이스를 복원합니다.
sqlite3 mydatabase.db < mydatabase_backup.sql
이 명령은 sqlite3 명령줄 도구를 사용하여 mydatabase.db라는 새 데이터베이스 파일을 생성합니다. < 기호는 mydatabase_backup.sql 파일의 내용을 sqlite3 명령으로 리디렉션하여 파일의 SQL 명령을 실행합니다. 이렇게 하면 데이터베이스와 해당 데이터가 다시 생성됩니다.
복원이 성공했는지 확인하려면 SQLite 셸에서 데이터베이스를 엽니다.
sqlite3 mydatabase.db
그리고 users 테이블을 쿼리합니다.
SELECT * FROM users;
백업된 데이터를 볼 수 있습니다.
1|Alice|alice@example.com
2|Bob|bob@example.com
이는 데이터베이스가 백업 파일에서 성공적으로 복원되었음을 확인합니다.
SQLite 셸을 종료합니다.
.exit
이 랩에서는 SQLite 데이터베이스를 백업하고 복원하는 방법을 배웠습니다. .dump 명령을 사용하여 데이터베이스를 SQL 파일로 내보냈고, 해당 파일에서 데이터베이스를 복원했습니다. 이러한 기술은 데이터를 보호하고 데이터 손실로부터 복구할 수 있도록 하는 데 필수적입니다.