Резервное копирование базы данных SQLite

SQLiteBeginner
Практиковаться сейчас

Введение

В этой лабораторной работе вы узнаете, как создавать резервные копии и восстанавливать базу данных SQLite. Вы научитесь экспортировать базу данных в SQL-файл с помощью команды .dump, создавать резервную копию, а затем восстанавливать базу данных из этой резервной копии. Это необходимо для защиты ваших данных.

Создание образца базы данных

На этом шаге вы создадите образец базы данных SQLite и заполните ее некоторыми данными. Это даст вам базу данных для практики резервного копирования и восстановления.

Сначала откройте оболочку SQLite (SQLite shell). Здесь вы будете взаимодействовать с базой данных.

sqlite3 mydatabase.db

Эта команда запускает оболочку SQLite и создает новый файл базы данных с именем mydatabase.db. Если файл уже существует, он откроет этот файл.

Теперь создайте таблицу с именем users со столбцами для id, name и email:

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, подтверждая, что данные были успешно вставлены.

Экспорт базы данных в SQL-файл

На этом шаге вы экспортируете базу данных mydatabase.db в SQL-файл с именем mydatabase.sql. Этот SQL-файл будет содержать команды, необходимые для воссоздания базы данных и ее данных.

Сначала выйдите из оболочки SQLite (SQLite shell):

.exit

Эта команда закрывает соединение с базой данных и возвращает вас в терминал Linux.

Теперь используйте команду .dump для экспорта базы данных в SQL-файл:

sqlite3 mydatabase.db .dump > mydatabase.sql

Эта команда использует инструмент командной строки sqlite3 для подключения к базе данных mydatabase.db. Команда .dump указывает SQLite вывести всю базу данных в виде серии SQL-команд. Символ > перенаправляет вывод команды .dump в файл с именем mydatabase.sql.

Чтобы убедиться, что экспорт прошел успешно, вы можете просмотреть содержимое файла mydatabase.sql с помощью команды cat:

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;

Этот вывод показывает SQL-команды, которые создают таблицу users и вставляют данные. Это подтверждает, что база данных была успешно экспортирована в SQL-файл.

Создание резервной копии базы данных

На этом шаге вы создадите резервную копию базы данных, используя ту же команду .dump. По сути, это тот же процесс, что и экспорт в SQL-файл, но мы сохраним резервную копию в другой файл.

sqlite3 mydatabase.db .dump > mydatabase_backup.sql

Эта команда создает резервную копию базы данных mydatabase.db и сохраняет ее в файл с именем mydatabase_backup.sql.

Чтобы убедиться, что резервная копия была создана успешно, вы можете просмотреть содержимое файла mydatabase_backup.sql с помощью команды cat:

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 (SQLite shell):

sqlite3 mydatabase.db

И запросите таблицу users:

SELECT * FROM users;

Вы должны увидеть данные, которые были сохранены в резервной копии:

1|Alice|alice@example.com
2|Bob|bob@example.com

Это подтверждает, что база данных была успешно восстановлена из файла резервной копии.

Выйдите из оболочки SQLite:

.exit

Резюме

В этой лабораторной работе вы узнали, как создавать резервные копии и восстанавливать базу данных SQLite. Вы использовали команду .dump для экспорта базы данных в SQL-файл, а затем восстановили базу данных из этого файла. Эти навыки необходимы для защиты ваших данных и обеспечения возможности восстановления после потери данных.