我刚刚设立了一个斯洛尼在 2 个 postgres 服务器之间设置复制。一个主服务器和一个从服务器。正在复制数据。我们不想将其用于数据备份或其他任何用途,但想在从服务器上进行一些计算密集型计算。
如果我们要在从属数据库上的表上创建索引(而主数据库上不存在),这可行吗?我们不会向从属数据库添加任何数据,我们只是希望能够在从属数据库上更快地运行某些查询。
这会破坏 slony 复制吗?这会给我们带来麻烦吗?
答案1
Slony 是基于触发器的,并且高度可配置。是的 - 根据文档这里。
DDL 更改可以通过 psql 等应用程序直接应用于节点。Slony-I 不会复制 DDL 更改,因此必须手动将其应用于每个相关节点。直接应用 DDL 更改时应牢记以下几点。
关于优点/缺点。我们的团队不久前也面临同样的问题(高可用性集群解决方案、IOPS 卸载),在调查/测试了其中一些问题后,我们最终只采用了流复制。- 设置/维护简单,读取副本上的加载。
多租户(Slony 无法跨 Postgres 架构拆分不同的节点)、应用程序后端大量使用触发器、带有扩展的索引(cube、pg_trgm、cube、earthdistance)以及频繁的 DDL 更改使我们无法使用 Slony。换句话说 - 您应该了解您的应用程序和目标,以便选择正确的解决方案。
对于分片数据 - PostgresXL 绝对值得关注。我们也尝试过!但它对我们来说不起作用,因为它不支持我们正在使用的所有类型的索引 :(