macos - SQLite 数据库的实时单向镜像

标签 macos sqlite database-replication database-mirroring

我正在处理在本地计算机上运行带有 WAL(预写日志记录)的 SQLite 3 数据库的第 3 方应用程序,并且我希望将该数据库(只读,这是单向镜像)镜像到另一个系统。挑战在于我在一个单独的进程中运行,这似乎使事情有些复杂化。

数据库正在以正常的锁定模式创建和打开,因此从另一个进程读取它没有问题,但我试图找到现有的实现或获取一些关于从哪里开始的指针。根据其他帖子,我的理解是标准的 sqlite 更新钩子(Hook)(例如 sqlite3_update_hook )不会在进程之外工作。

一个关键问题是速度,理想情况下,我希望能够在每次更新发生时立即检测到并开始传输它。这意味着大多数轮询选项都是不可能的,但即使它们是,您将如何检测最新的变化?

我看到两个看起来很有希望的文件:实际的 WAL 文件( foo.db-wal )和内存映射索引文件( foo.db-shm )。我希望这两个包含我需要的信息: A. 检测数据库中何时发生更改 B. 能够仅获取自上次更新以来的增量更改。

但是指向一些现有解决方案的指针会更受欢迎...... :-)

最佳答案

SymmetricDS 可能是您的解决方案

关于macos - SQLite 数据库的实时单向镜像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28710001/

相关文章:

android - 我如何使用 onListItem 来启动具有 ListView 值的新 Activity ?

postgresql - 如何在 Bucardo Postgresql multi master 中处理序列

mysql - 无法修改 binlog_format 的默认参数组

c# - 在 winform C# 中检索上次使用的数据

mysql - AIR 从下载的模式文件创建本地 SQLite 数据库

sql-server - 暂时暂停 SQL Server 复制

xcode - 如何使用 ‘xcode-select’设置事件的开发人员目录以进行Qt安装?

macos - 如何在 macOS Big Sur 上安装 valgrind?

c# - 如何在 NSGridView 或 NSTableView 中跨列

objective-c - 以编程方式检查 OS X 上的请勿打扰状态