如何备份sqlite数据库?

5q4ezhmt  于 2023-03-03  发布在  SQLite
关注(0)|答案(4)|浏览(295)

正确的方法是什么?我只是复制.sq3文件吗?
如果站点上有用户,并且文件在复制时正在写入,该怎么办?

jaql4c8m

jaql4c8m1#

sqlite3命令行工具具有.backup dot命令。
您可以使用以下命令连接到数据库:

sqlite3 my_database.sq3

并运行backup dot命令,其中包含:

.backup backup_file.sq3

除了与数据库建立交互式连接之外,您还可以使用执行备份并在以后关闭连接

sqlite3 my_database.sq3 ".backup 'backup_file.sq3'"

无论哪种方式,结果都是数据库my_database.sq3的名为backup_file.sq3的副本。
它与常规的文件复制不同,因为它会照顾到当前在数据库上工作的所有用户。数据库上设置了适当的锁,所以备份是独占进行的。

8iwquhpp

8iwquhpp2#

.backup是最好的方法:

sqlite3 my_database ".backup my_database.back"

你也可以尝试.dump命令,它可以让你将整个数据库或表转储到一个文本文件中。如果指定了TABLE,则只转储匹配LIKE模式TABLE的表。

sqlite3 my_database .dump > my_database.back

使用转储和存储来制作归档副本的好方法,请稍后重建数据库。

sqlite3 my_database .dump | gzip -c > my_database.dump.gz
zcat my_database.dump.gz | sqlite3 my_database

同时选中此问题Do the SQLite3 .backup and .dump commands lock the database?

svujldwt

svujldwt3#

对于SQLite的流式复制,请查看Litestream
与使用sqlite3-backup命令相比,这是自动的,而且是增量的。
如果您需要从备份中恢复,则数据将比每小时进行一次定期备份时更新很多。

2j4z5cfb

2j4z5cfb4#

简单明了的答案是

sqlite3 m_database.sq3 ".backup m_database.sq3.bak"

相关问题