postgresql Google Cloud SQL -将示例从一个项目移动到另一个项目,零停机时间?

dldeef67  于 12个月前  发布在  PostgreSQL
关注(0)|答案(2)|浏览(115)

将Google Cloud SQL示例(Postgres 9.6)从一个Google项目移动到另一个Google项目的最简单方法是什么?示例大小约为20 GB
有一个叫做“迁移作业”的服务,看起来非常相关,但我不明白它是否可以用来将示例从一个谷歌项目移动到另一个项目。
简单的从备份恢复并不是我真正的情况,因为我想实现尽可能少的停机时间,所以我正在寻找像2个运行的示例与同步的实时数据。
PS.我还配置了pgbouncer虚拟机

hivapdat

hivapdat1#

是的,可以使用数据库迁移服务将一个云SQL示例从一个GCP项目移动到另一个GCP项目。这是一种比下一种方法更便宜的方法,虽然需要更多的设置,但速度应该也更快。可以为现有的云SQL示例创建连接配置文件,并且必须在目标项目中创建云SQL目标,但一旦所有设置都完成,大部分的迁移将是自动的。2这是一个有很好文档记录的过程,您可以在我们的documentation中找到相关信息。

开发人员有时希望在“零”停机时间的情况下迁移他们的(普通)关系数据库。虽然停机时间可以减少,但迁移不可能在不影响应用程序的情况下完成(即零停机时间)。复制会导致复制延迟。
一旦决定将所有应用程序从一个副本“迁移”到另一个副本,应用程序(以及开发人员)在使用新数据库之前必须等待(即停机)至少与“复制延迟”一样长的时间。实际上,停机时间要高出几个数量级(几分钟到几小时),因为:

  • 数据库查询可能需要数秒才能完成,并且必须在迁移时完成或中止正在进行的查询。
  • 如果数据库有大量缓冲内存(在大型数据库中很常见),则必须对数据库进行“预热”。
  • 如果数据库碎片具有重复的表,则在迁移碎片时可能需要暂停某些写入操作。
  • 应用程序必须在源位置停止,然后在GCP中重新启动,并且必须建立到GCP数据库示例的连接。
  • 必须重新路由应用程序的网络路由。根据DNS项目的设定方式,这可能需要一些时间。

所有这些都可以通过一些规划和“成本”(在迁移之前/之后的一段时间内不允许执行某些操作)来减少。
在迁移完成之前降低源数据库上的负载可能会有所帮助,并且停机可能会减少中断。
其他注意事项:
1.将计算机类型增加到increase network throughput
1.增加SSD大小以实现更高的IOPS/MBps。
More about的函数。

最直观的方法是将数据从云SQL示例导出到GCS存储桶和import it to a new instance in the new project。这意味着需要一些停机时间,并且您必须在目标项目中使用与原始配置相同的配置手动创建示例;这确实需要一些手动步骤,但这是在不同项目的示例中复制数据的一种简单且可验证的方法。

n8ghc7c1

n8ghc7c12#

令人惊讶的是,这似乎是一个常见的用例。
我找不到DMS对Cloud SQL => Cloud SQL跨项目的任何内置支持。DMS似乎没有任何在另一个项目中选择Cloud SQL示例的功能。
以下是唯一对我有用的东西:
1.在目标项目中使用DMS,而不是源项目。

  • 创建一个到源数据库的连接配置文件,将其描述为Postgres -即“自我管理的Postgres”。您将欺骗GCP认为它不是Cloud SQL示例。否则您将仅限于当前项目中的示例。
  • 由于您告诉DMS它不是Cloud SQL,而是vanilla Postgres,因此您必须为源数据库配置逻辑复制,就像它是vanilla Postgres一样。
  • 这意味着在配置源代码中,您应该遵循On-premise或自我管理的PostgreSQL说明。
  • 例外的是,您仍然需要设置cloudsql.logical_decodingcloudsql.enable_pglogical标志,这将导致Cloud SQL在服务器上安装扩展,因为您没有能力自己完成这一点。基本上,阅读自管理指令和Cloud SQL指令并“合并”两者。
  • 连接配置与Cloud SQL完全相同
  • 创建并运行迁移作业,在当前项目中配置目标DB

祝你好运!

相关问题