CloudSQL 实例上的备份/恢复

问题描述

我们计划从 Cloudsql 迁移我们的 Public to Private IP 实例。由于我们要迁移到 Private IP 上的 SharedVPC,Google 尚不支持现有实例,因此我们计划在 private IP 上创建带有 sharedVPC 的新实例,并且从旧实例恢复备份。 以下是我基于场景的查询

  1. 有什么方法可以检查 Cloudsql instances 中现有数据库的大小?
  2. 备份的存储位置。是 Cloud Storage 还是 DB disk
  3. 我们可以使用 Cloudsql instance with a private IP 从我的 desktop 访问 IAP tunneling 吗?

请澄清。

解决方法

我在这里向您提出问题:

1.有什么方法可以检查 CloudSQL 实例中现有数据库的大小?

是的,有。这取决于您使用的数据库引擎(mysql、postgres 或 mssql)

对于mysql,你可以运行:

SELECT table_schema "DB Name",ROUND(SUM(data_length + index_length) / 1024 / 1024,1) "DB Size in MB" 
FROM information_schema.tables 
GROUP BY table_schema; 

对于postgres,您可以运行:

SELECT pg_size_pretty(pg_database_size('Database Name'));

对于mssql,您可以运行:

SELECT 
      database_name = DB_NAME(database_id),log_size_mb = CAST(SUM(CASE WHEN type_desc = 'LOG' THEN size END) * 8. / 1024 AS DECIMAL(8,2)),row_size_mb = CAST(SUM(CASE WHEN type_desc = 'ROWS' THEN size END) * 8. / 1024 AS DECIMAL(8,total_size_mb = CAST(SUM(size) * 8. / 1024 AS DECIMAL(8,2))
FROM sys.master_files WITH(NOWAIT)
WHERE database_id = DB_ID() -- for current db 
GROUP BY database_id

2.备份存储在哪里?是 Cloud Storage 还是 DB 磁盘?

云存储。当您 make a Cloud SQL export 时,导出文件为 存储在云存储中。从 Cloud Storage,您可以下载/移动 到不同的位置。

3.我们可以使用 IAP 隧道从我的桌面使用私有 IP 访问 CloudSQL 实例吗?

不,用于 TCP 转发的 IAP 隧道又名 IAP 旨在与 Google Cloud 计算引擎实例一起使用。 引用 documentation

IAP 的 TCP 转发功能允许用户连接到任意 TCP Compute Engine 实例上的端口。

还有 this feature request 用于扩展 IAP TCP 转发的功能以涵盖 Cloud SQL 实例。我建议然后为问题跟踪器加星标并分享您的反馈,以便增加线程相关性。

连接到仅使用私有 ip 的 Cloud SQL 实例的另一种方法是使用具有外部公共地址的堡垒主机,将所有 TCP 流量转发到您的 Cloud SQL 实例。

我希望你觉得这很有用。