【问题标题】:Can I connect to Google Cloud SQL from Google Compute Engine?我可以从 Google Compute Engine 连接到 Google Cloud SQL 吗?
【发布时间】:2023-03-30 01:13:01
【问题描述】:

我正在 Google Compute Engine 上构建一个 Django 站点,并且我想在 SQL Cloud 中安装我的数据库。有可能吗?

最常用的方法是什么?在虚拟机上安装 MySQL 还是使用 Cloud SQL 实例?

谢谢。

【问题讨论】:

    标签: google-cloud-sql google-compute-engine


    【解决方案1】:

    您可以根据需要使用 Google Cloud SQL 或管理自己的 SQL 数据库。

    要使用 Cloud SQL,您需要按照此处的说明进行操作:https://developers.google.com/cloud-sql/docs/external

    如果您想管理自己的 SQL 数据库,您可以在实例上安装 MySQL 或其他一些数据库。根据您的需要,您可以从连接了相当大磁盘的 g1-small 开始,然后使用更大的实例类型来运行您的数据库。

    如果您正在运行自己的数据库,则需要确保定期备份并将它们从数据库机器上复制到 Google Cloud Storage 之类的地方。如果您使用 Cloud SQL,则可以使用控制台或 API 来安排数据库备份。

    【讨论】:

    • 嗯,问题是要使用 Cloud SQL,我必须使用 JDBC 连接。我正在使用 Python。我该怎么办?
    • 啊,好点子!我会向您指出 JayDeBeApi 之类的东西:answers.launchpad.net/jaydebeapi/+question/156763
    • 您对 zxJDBC 的建议似乎比 JayDeBeApi 更好。我还向我们的一些工程师指出了这个线程,看看我们是否可以整理出更好的教程。
    • 你可以从 f1-small 开始,它的性能很弱但便宜得多。
    【解决方案2】:

    这个答案是从 “嗯,问题是要使用 Cloud SQL,我必须使用 JDBC 连接。我正在使用 Python。我该怎么做?”

    我不是来自 Python 世界,但我最近将 GCE 实例上的 Java 应用程序连接到 Cloud-Sql DB(通过 cloud-sql-proxy 方法,如下所述:https://cloud.google.com/sql/docs/compute-engine-access)并且没有看到任何原因为什么它也不应该适用于 Python。

    这是我刚刚尝试并通过 cloud-sql-proxy 轻松将我的测试 Python 应用连接到 Cloud-Sql DB:

    第 1 步:下载并在本地端口上运行代理,如下所示(这在本地端口 3306 和连接名称“PROJ_NAME:TIMEZONE:SQL_NAME”标识的 Cloud-SQL 数据库实例之间建立了通道):

    sudo wget https://dl.google.com/cloudsql/cloud_sql_proxy.linux.amd64
    sudo mv cloud_sql_proxy.linux.amd64 cloud_sql_proxy
    sudo chmod +x cloud_sql_proxy
    sudo ./cloud_sql_proxy -instances=PROJ_NAME:TIMEZONE:SQL_NAME=tcp:3306 &
    

    第 2 步:确保已安装 python-mysqldb

    sudo apt-get install python-mysqldb
    

    Steo 3:运行以下测试程序以通过代理设置的本地套接字 3306 连接到 Cloud-SQL 数据库:

    import MySQLdb
    conn = MySQLdb.connect(host= "127.0.0.1", port=3306, user="root", passwd="my_root_password", db="my_db")
    x = conn.cursor()
    try:
       x.execute("""INSERT INTO Test(test_id) VALUES ('111')""")
       conn.commit()
    except:
       conn.rollback()
    
    conn.close()
    

    希望对你有帮助。

    【讨论】:

      猜你喜欢
      • 2018-08-15
      • 1970-01-01
      • 2020-09-25
      • 1970-01-01
      • 2013-06-20
      • 1970-01-01
      • 1970-01-01
      • 2018-05-01
      • 2021-05-28
      相关资源
      最近更新 更多