我的目标是从vm实例连接和加载数据到大查询(这个实例安装了maria db服务器)。我可以在我的终端上使用以下命令使用tcp ip转发访问数据库(出于安全原因,没有外部ip的实例):
gcloud beta compute start-iap-tunnel my-instances 3306 --local-host-port=localhost:3309然后我打开mysql工作台输入用户root和密码,然后数据库显示,做查询,保存到csv,最后是上传csv到大查询。
有什么建议可以自动化这个过程吗?
发布于 2020-12-18 04:16:17
如果您的虚拟机没有公共IP,则虚拟机无法访问公共DNS上的公共BigQuery应用程序接口。所以,使用私有API!!
为此,您需要转到您的VPC,并选择部署您的Compute Engine VM的子网。
点击编辑,打开谷歌的私人访问权限

现在,您可以通过内部网络调用BigQuery接口,无需外网IP。使用CLI或脚本来完成加载作业。
发布于 2020-12-17 23:07:20
使用云工作流的Devops风格。
您可以使用Cloud Workflows自动执行此操作,并使用Cloud Build自动执行这些步骤。
有一个完整的指南张贴在how to run a shell command on a VM with Cloud Workflows上,也有另一个如何从Cloud Storage to BigQuery using Cloud Workflows自动化文件。
除了运行shell命令之外,您还可以使用一系列操作来
将文件移至云文件到BigQuery中
通过这种方式,您不会向BigQuery产生加载成本,因为向BQ加载数据是免费的。您将产生云存储的费用,但仅限于文件存在且导入后可以删除的时间。
使用外部数据源的。
您可能希望设置与数据库的Cloud SQL连接。通过执行步骤定义的here来查看是否适用于您的设置。
您需要遵循该指南,在外部数据源窗格中,输入所需的连接信息,如云SQL实例id、用户、密码。
如果连接成功,您可以使用EXTERNAL_QUERY语法从云SQL实例中读取数据,并写入BigQuery表。这样做会产生成本,因为查询也是为从云SQL读取的数据计费的。
SELECT * FROM EXTERNAL_QUERY("connection_id",
"select * from db.table;");您可以使用计划的查询自动执行此步骤。
https://stackoverflow.com/questions/65342943
复制相似问题