Database 如何备份sqlite数据库?
正确的方法是什么? 我只是复制.sq3文件吗Database 如何备份sqlite数据库?,database,sqlite,backup,Database,Sqlite,Backup,正确的方法是什么? 我只是复制.sq3文件吗 如果站点上有用户,并且文件在复制时正在写入,该怎么办 sqlite3命令行工具的特点是 您可以通过以下方式连接到数据库: sqlite3 my_database.sq3 并使用以下命令运行backup dot命令: .backup backup_file.sq3 除了与数据库的交互连接之外,您还可以执行备份并在之后使用关闭连接 sqlite3 my_database.sq3 ".backup 'backup_file.sq3'" 无论哪种方式,
如果站点上有用户,并且文件在复制时正在写入,该怎么办 sqlite3命令行工具的特点是 您可以通过以下方式连接到数据库:
sqlite3 my_database.sq3
并使用以下命令运行backup dot命令:
.backup backup_file.sq3
除了与数据库的交互连接之外,您还可以执行备份并在之后使用关闭连接
sqlite3 my_database.sq3 ".backup 'backup_file.sq3'"
无论哪种方式,结果都是数据库my\u database.sq3
的一个名为backup\u file.sq3
的副本
它不同于常规的文件复制,因为它负责处理当前在数据库上工作的任何用户。数据库上设置了适当的锁,因此备份以独占方式进行。。备份是最好的方法
sqlite3 my_database .backup my_database.back
您也可以尝试使用.dump命令,它使您能够将整个数据库或表转储到文本文件中。如果指定了TABLE,则仅转储与模式表匹配的表
sqlite3 my_database .dump > my_database.back
使用dump和store制作归档副本的一种好方法是在以后重建数据库
sqlite3 my_database .dump | gzip -c > my_database.dump.gz
zcat my_database.dump.gz | sqlite3 my_database
还要检查这个问题您使用什么语言和驱动程序来访问数据库?我使用的是PHP和PDO扩展。目前有一个在PHP中公开sqlite备份API的功能请求:您可以在一行中完成所有操作
sqlite3 m_database.sq3“。备份m_database.sq3.bak”
@Googie:我们可以用它来复制吗?or@mOna:这只是一种进行备份的机制。复制意味着动态传播更改(类似于分布式数据库),这对您来说是行不通的。@RonJohn它实际上是一个文件副本,但它也说明,对数据库的写访问受到适当的锁的限制,因此它是一个原子操作,无中间修改。您还应指定一个超时,以最小化数据库被锁定的错误<代码>sqlite3 source.db“.timeout 1000”。在SQLite 3.8.2上的backup backup.db“,。backup
无法按上述方式工作(“在.backup上缺少文件名参数”),这是最好的答案。如果在许多人使用的工作数据库上使用.backup,则可能无法工作,因为数据库在某个点被锁定。因此,如果您在CRON中使用此功能,它将不起作用,也不会告诉您有错误。。。更好地使用.dump(allways works)或SQLite提供的API。@Memristor但不使用.dump为其他人锁定DB?FWIW,我更喜欢失败的备份(通过邮件发送给管理员)而不是中断的服务。请在您的答案中修复.backup语法。它不需要“>”操作符