我目前在谷歌账户中有一个云SQL实例(PostgreSQL),但我想创建一个临时数据库,以便在对产品云SQL数据库进行架构更改之前进行一些测试。
prod数据库通过一些简单的ETL过程自动接收来自不同数据源的数据,我不想在暂存数据库上复制这些数据负载。这些自动化过程不应该在暂存中运行,因为它们在大多数情况下都是不必要的。我也不想创建一个像prod.那样大的暂存数据库
考虑到我上面所说的,以及我不使用不同的项目来设置暂存/生产环境,我有几个问题要问:
-
我已经意识到GCP中有一个克隆数据库的功能。我从未使用过它,但我想知道不时克隆我的prod数据库以创建我的临时数据库是否是一种好的做法,因为备份和恢复可能很痛苦。
-
我可以以逻辑方式使用克隆功能吗(只选择一些要克隆的表等)?还是完全依赖于物理备份?
-
我想克隆一个巨大的数据库可能需要几个小时,所以我想知道是否有一种方法只应用两个数据库之间的差异,这样我就不必每次都克隆整个数据库,类似于复制方法?
-
如果我对dev/test/prod使用单独的项目。同步不同数据库环境的可用方法有哪些?
1-克隆功能用于克隆实例。所以你克隆了整个数据库。
2-你不能只克隆一些表,但你可以使用导出这些所需的表
gcloud sql export sql [INSTANCE_NAME] gs://[BUCKET_NAME]/sqldumpfile.gz --database=[DATABASE_NAME] --table=[TABLE_NAME]
3-现在,您可以使用SQL执行此操作,然后将查询保存为表并导出此表。
4-有各种方法可以连接到SQL实例,比如psql
客户端、使用标准PostgreSQL客户端-服务器协议的第三方工具、云应用程序引擎等。