В настоящее время я работаю над проектом C, который содержит базу данных SQLite3 с включенной поддержкой WAL. У нас есть веб-интерфейс HTTP, над которым вы сможете получить онлайн-резервное копирование базы данных. В настоящее время файл базы данных доступен по HTTP, что плохо по многим причинам. Теперь моя задача - реализовать новый алгоритм резервного копирования.Резервное копирование базы данных SQLite3 при встраивании
Существует API-интерфейс SQLite-Online-Backup, который кажется довольно приятным. Там вы открываете два подключения к базе данных и копия одна база данных в другую. Во всяком случае, в моей настройке я не могу быть уверен, что достаточно места для копирования всей базы данных, поскольку в ней может быть много статистических и мультимедийных файлов. Для меня лучшим решением было бы открыть соединение SQLite, которое напрямую связано с stdout, чтобы я мог создавать резервные копии базы данных через CGI.
В любом случае, я не нашел способ в SQLite3 API открыть соединение с базой данных в специальных файлах, таких как stdout. Что было бы лучшей практикой для резервного копирования базы данных? Как выполнять онлайн-резервное копирование баз данных SQLite3?
Заранее благодарен!
Нет специального резервного интерфейса, я просто хочу, чтобы база данных была сброшена на stdout (например, когда я делаю HTTP-загрузку файла базы данных, но с контролем доступа и целостностью базы данных). Реализация моего собственного интерфейса VFS кажется немного переборщиком. Было бы неплохо установить блокировку записи, выполнить контрольную точку WAL и затем выгрузить файл базы данных? – Jeremy
Самый простой способ - использовать инструмент командной строки sqlite3 (или код из него), использовать команду '.dump', которая записывает на stdout и просто считывает эти данные с другой стороны. Наверное, это не самый эффективный способ. (см. https://www.sqlite.org/cli.html) – schlenk
Возможно, вы можете заставить его работать с чем-то вроде «режима редактирования pragma journal», получить эксклюзивную блокировку и скопировать файл базы данных и вернуться к «WAL», Режим. Тем не менее, не 100%. – schlenk