首页 > 解决方案 > CloudSQL 实例上的备份/恢复

问题描述

我们计划将我们的CloudSQL实例从Public to Private IP. 由于我们正在迁移到Google 尚未支持现有实例的 on a ,因此我们计划使用 on a 创建新实例Private IP并从旧实例恢复备份。以下是我基于场景的查询。SharedVPCprivate IPsharedVPC

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

请澄清。

标签: mysqlpostgresqlgoogle-cloud-sqldatabase-backupstunnel

解决方案


在这里,我向您提出问题:

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,2))
    , 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 SQL 导出时,导出文件存储在 Cloud Storage 中。从 Cloud Storage,您可以将其下载/移动到其他位置。

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

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

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

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

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

希望这个对你有帮助。


推荐阅读