不久前,一位朋友告诉我有一种设施可以让我们使用本地数据库“影子”生产数据库。阴影一词可能不正确(如果有,请纠正我)
我理解并想做的是:
当我进行更新/插入时,它只会影响本地数据库。
我做了一个select语句,首先返回的是来自正在阴影的数据库中的数据,然后是生产数据。
表修改仅影响正在映射的数据库
清除(回滚交易?)以使本地达到中性点。
宁愿不必复制数据库,而是尽可能从实时数据中提取。
由于这不是为生产而设计的,因此性能并不是真正的问题。
考虑到的用例是我会说用于本地/测试的数据库,以及恢复我所做的所有更改的快速方法,如果需要的话。
在 Oracle 数据库世界中,您所描述的内容听起来像是基于 dNFS 的克隆 ( http://www.oracle.com/technetwork/server-storage/hardware-solutions/o13-022-rapid-cloning-db-1919816.pdf [ PDF],https://oracle-base.com/articles/11g/clonedb-11gr2 )。
从克隆实例读取的所有数据文件的只读副本开始。更改/写入被写入 delta 文件(“首次写入时复制”),数据库在查看只读副本之前先查看这些 delta 文件。这在非常小的空间内提供了数据库内容的完整“副本”。可以通过关闭实例并删除增量文件来回滚整个批次。
我在 MySQL 中从未见过这样的事情。花哨的存储技巧可能有可能,但我不认为这是数据库支持的功能。
不是答案 - 但这不适合作为评论。
这听起来像是我曾经工作过的产品。它是保存本地数据库的“交易”或“特价”的旅行软件,而“主”是 GDS(全球分销系统 - 用于航空公司预订)。
当请求票价(旅行)时,它会搜索两个数据库并首先显示最便宜的交易,然后是最便宜的 GDS 票价。我们可以更新本地数据库,但不能更新 GDS。
然而,这个产品非常专业,投入了很多开发时间(Java)。
如果我是你,我会研究 MySQL 复制 - 有很多选项,但没有任何(AFAIK)符合你的确切要求。查看多主,主从,同步,异步。MySQL NDB、Tungsten Continuent 和 Galera。