PostgreSQL WAL。是否可以在 1 个具体数据库中回滚/前滚更改?

发布于 2024-10-20 12:55:18 字数 126 浏览 2 评论 0原文

我的服务器有 4 个基于 in.WAL 的服务器,它在所有数据库中注册更改。 但是,如果我想回滚或前滚 1 个数据库 中的更改,排除 3 个其他数据库 - 这怎么可能?

I have server with 4 bases on in. WAL registers changes in all databases.
But if i want to rollback or rollforward changes in 1 database, excluding 3 others - how is it possible?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

听闻余生 2024-10-27 12:55:18

不,不可能。 WAL 段保存单个集群中所有数据库的所有更改。

如果您正在寻找使用 WAL 的单个数据库的复制,则必须为此数据库创建一个单独的集群。使用 initdb 创建第二个集群和不同的数据目录,启动第二个集群,您就完成了,现在您有两个集群在单个(虚拟)机器上运行。

另一种选择是Slony

No, not possible. The WAL segments hold all changes for all databases in a single cluster.

If you are looking for replication of a single database using WAL, your have to create a seperate cluster for this database. Use initdb to create a second cluster and a different data directory, start this second cluster and you're done, you now have two clusters running on a single (virtual) machine.

Another option would be Slony.

草莓酥 2024-10-27 12:55:18

从某种意义上说,当您说“1 个数据库,排除 3 个其他数据库”时,这取决于您指的是集群内的数据库还是单独的数据库服务器。如果您的计算机具有 PITR 映像,并且在更改日志传入时不应用它们,而是将它们放在角落里直到您执行恢复,则您可以选择停止恢复的点 (txid)。不过,确切地知道您想要停止哪笔交易并不简单且容易。但这些更改会影响该服务器上的所有数据库。

In a manner of speaking, and depending on if you mean databases within a cluster, or separate database servers when you say "1 database excluding 3 others". If you have a machine with a PITR image that isn't applying change logs as they come in, but just sitting them in the corner until you do a recovery, you can pick the point (txid) at which to stop the recovery. It's not simple and easy to know exactly which transaction you want to stop at though. But those changes affect all dbs on that server.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文