Как сделать резервную копию встроенного движка базы данных H2 во время его работы?

Я хотел бы создать веб-приложение с ядром базы данных H2. Однако я до сих пор не знаю, как сделать резервную копию данных во время работы базы данных после прочтения этого руководства:

http://www.h2database.com/html/tutorial.html#upgrade_backup_restore

Выводит ли H2 сохраненный файл куда-нибудь в файловую систему? Могу я просто сделать резервную копию полученных файлов?


person Winston Chen    schedule 10.01.2010    source источник


Ответы (4)


H2 хранится в файловой системе, но было бы лучше использовать инструменты резервного копирования, на которые вы ссылаетесь, потому что формат файла может меняться между версиями H2. Если вы обновите H2, он больше не сможет читать файлы, созданные в предыдущей версии. Кроме того, если вы копируете файлы, которые он использует, я бы рекомендовал сначала выключить базу данных, иначе скопированные файлы могут быть нечитаемыми H2.

Расположение файла зависит от указанного вами URL-адреса jdbc. См. FAQ: http://www.h2database.com/html/faq.html

person Jay Askren    schedule 10.01.2010

Согласно руководству, которое вы связали, не рекомендуется делать резервную копию базы данных путем копирования файлы во время его работы. Вот правильный способ резервного копирования базы данных во время ее работы (код Scala, но его можно легко преобразовать в Java) (Источник):

val connection:java.sql.Connection = ??? // get a database connection 
connection.prepareStatement("BACKUP TO 'myFile.zip'").executeUpdate 
person Jus12    schedule 02.01.2016

Спасибо Jus12 за хороший ответ. Я адаптировал его для JPARepositories в Spring Data и хотел бы поделиться им здесь, поскольку я не смог найти аналогичный ответ в Интернете:

@Modifying
@Transactional
@Query(value = "BACKUP TO ?1", nativeQuery = true)
int backupDB(String path);
person Oliver Hummel    schedule 22.01.2021

person    schedule
comment
Какая причина в строковом выражении stmt = con.createStatement () ;? - person Dmitriy; 23.10.2020