【问题标题】:How to change database to Postges in JupyterHub?如何在 JupyterHub 中将数据库更改为 Postgres?
【发布时间】:2020-12-29 09:21:50
【问题描述】:

我正在尝试使用我的配置运行 jupyterhub,并且我想更改数据库形式的 SQLite,它默认创建为 PostgreSQL,它已经存在并且有一些表(jupyterhub 和其他应用程序可以同时工作并共享数据库)。在网站上我只看到:

如果您不确定,我们建议您使用 PostgreSQL 进行生产...

但不知道如何更改此数据库。你以前做过这个并且可以描述它吗?比如我是自己创建一些表还是我只是传递一个链接,然后 jupyterhub 会做剩下的事情?

【问题讨论】:

    标签: postgresql jupyterhub


    【解决方案1】:

    您需要在 postgres 中创建一个空数据库,然后在 jupyterhub 配置中设置 db_url 属性。例如,对于本地机器上的 postgres 数据库:

    1. 使用具有“创建数据库”属性的用户连接到您的 postgres 实例并运行:
    CREATE DATABASE jupyterhub1;
    
    1. 在您的 jupyterhub_config.py 文件中设置此属性:
    c.JupyterHub.db_url = 'postgresql://username:password@localhost:5432/jupyterhub1'
    

    当您启动 jupyterhub 时,它会自动创建所需的表。另请注意,您不必将凭据硬编码到 db_url 属性中,您可以使用 os.environ["VAR_NAME"] 从环境变量中访问它们

    谢谢

    【讨论】:

      【解决方案2】:

      好吧,我将分享对我有用的方法。我希望这个说明也能帮助其他面临同样困难的人。

      1. 对您的数据库进行完整备份,以防万一出现问题。 Source

      2. 如果您阅读了上面的源代码,您需要在config.yaml 中添加一些字段。

      您必须将此部分添加到您的config.yaml

      hub:
        db:
          upgrade: true
      
      1. 继续关注上面提到的来源,你会明白的,因为有一些细节需要做。

      2. 这还不是全部!您需要创建数据库(使用 Mysql 或 Postgres)。完成数据库后,现在您应该拥有用户名、密码、数据库名称、主机和端口。

      3. 现在,看看这个info。这另一个page 突出了一个有趣的观点。 JupyterHub 文档说使用 PostgresMysql 更容易。您必须添加hub.db.typehub.db.url。查看文档以了解字符串连接。

      postgresql+psycopg2://<db-username>:<db-password>@<db-hostname>:<db-port>/<db-name>

      请注意,在本例中,我只是将用户名放在字符串中,而没有将任何内容作为密码。一旦可以添加hub.db.password,我就使用了这个选项。在我的示例中,我还将数据库的大小声明为 20Gi。

      hub:
        db:
          upgrade: true
          type: postgres
          url: postgresql+psycopg2://postgres:@db_jupyterhub_xxxxx.amazonaws.com:5432/db_jupyterhub
          password: ~
          pvc:
            accessModes: 
              - ReadWriteMany
            storage: 20Gi
      
      1. 此时您意识到我没有输入密码。在这种情况下,当我将部署 JupyterHub(或创建 helm upgrade ...)时,我需要传递 --set 参数。所以对于这个例子,我用这种方式来升级已经存在的舵图。
      helm upgrade -f config.yaml jupyterhub . \
      --set hub.db.password=TYPE-PASSWORD-OF-DATABASE
      

      通过这些步骤,部署应该可以工作。我用这种方式,效果很好。我还有一点要强调,cookieSecret。在文档中,他们提到了在 pod 重新启动的情况下重新创建它的需求。请查看有关deafult behavior of jupyterhub_cookie_secret 和此link explaining about cookie generation and uses 的主题。

      我希望这些步骤对你们中的一些人有所帮助。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-08-07
        • 1970-01-01
        • 2018-06-06
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-07-02
        • 2015-11-06
        相关资源
        最近更新 更多