java - Postgresql Replication 解决方案及其性能

标签 java performance postgresql replication high-availability

我正在对 Posgtresql 复制进行 POC。我正在使用最新版本的 postgresql,即 9.1。市场上有多种复制解决方案(PGCluster、Pgpool-II、Slony-I)。 Postgresql 还提供了内置的复制解决方案(流复制、热备和热备)。我很困惑哪种解决方案最适合我正在为其进行 POC 的金融应用程序。该应用程序将在数据库中写入大约 1.6 亿条行大小为 2.5 KB 的记录。我的问题是针对以下哪些复制解决方案适用的场景:

  • 如果我需要复制仅用于备份目的
  • 如果我需要扩展读取数
  • 如果我需要高可用性和一致性

此外,如果您能分享 postgresql 复制解决方案的性能或经验,这将非常有帮助。

最佳答案

简短的回答是“无论您遇到什么问题,总有解决方案。”

让我们来看几个主要的。

  1. Slony-I 是一种复制解决方案,可让您跨部分或全部数据库扩展读取。这是为了让您可以获取数据库的一部分并将其复制到您的 DMZ 中,例如用于客户报告。另一方面,这种灵 active 带来了复杂性,虽然 Slony 只允许您复制数据库的一部分,但 Slony 只允许您复制数据库的一部分……而且 Slony 的灵 active 并不止于此。它允许您跨不同版本的 Pgsql 进行复制,因此确保在主要升级期间读取查询的停机时间为零。

  2. Postgres-XC 实际上是 PGCluster 的继承者。它为 PostgreSQL 提供 Teradata 风格的集群。如果您确实需要扩展读取和写入,这是适合您的解决方案,但同样会增加复杂性。

  3. 内置的复制解决方案最简单,允许您扩展以进行备份和写入。它确保高可用性和一致性,但重大升级需要所有节点停机。

所以问题是您需要确切地弄清楚您想要什么,然后寻求帮助以选择适合该工作的工具。当你到达那个点时,我建议你在 pgsql-general 电子邮件列表上询问。

关于java - Postgresql Replication 解决方案及其性能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8664853/

相关文章:

postgresql - 如何比较两个数组并仅在postgres中选择不匹配的元素

java - 从ArrayList获取自定义类

java - 正则表达式 xml 之外的电子邮件地址

java - 为什么我的 Java 服务器关闭套接字?

performance - Julia 比Java慢得多

java - 如何加快从大量文件中读取的速度(Java)

ruby-on-rails - 为 Rails 性能测试生成代表性数据

postgresql - Postgres : pg_restore/pg_dump everything EXCEPT the table id's for a table

java - java中new的返回值

postgresql - 在表上插入或更新违反外键约束 PSQL/Knex