guideSQL 数据库

# 需求

CKEditor 协作服务器使用的 SQL 数据库需要满足数据库需求文章中列出的软件和硬件要求。

# 支持的 SQL 数据库

目前支持以下数据库

  • MySQL 8.0 版本(推荐)或 5.7 版本(最低支持版本)
  • PostgreSQL 14 版本(推荐)或 12 版本(最低支持版本)

# 驱动程序选择

默认情况下,使用 MySQL 数据库驱动程序。
可以使用DATABASE_DRIVER环境变量更改它。

目前支持两种选择

  • mysql - MySQL(默认)
  • postgres - PostgreSQL

# 连接和基本凭据

要连接到数据库,至少需要设置DATABASE_HOST
强烈建议更改DATABASE_USERDATABASE_PASSWORD变量的默认值。

DATABASE_HOST                            - required
DATABASE_PORT                            - optional (default: 3306)
DATABASE_USER                            - optional (default: "root")
DATABASE_PASSWORD                        - optional (default: "password")
DATABASE_DATABASE                        - optional (default: "cs-on-premises")
DATABASE_SCHEMA                          - optional (default: "cs-on-premises", used for Postgres driver)

# TLS 连接和证书

  • 如果您的数据库服务器配置为需要 SSL 连接,您可以使用DATABASE_SSL_CADATABASE_SSL_KEYDATABASE_SSL_CERT将证书传递给数据库驱动程序。
  • 如果您的数据库服务器配置为需要 SSL 连接并且数据库服务器的证书由受信任的第三方签署,您可以将DATABASE_SSL_ENABLE设置为true,而不是传递证书。
DATABASE_SSL_ENABLE                      - optional (default: false)
DATABASE_SSL_CA                          - optional
DATABASE_SSL_KEY                         - optional
DATABASE_SSL_CERT                        - optional

您可以通过两种方式提供证书

# 将证书作为文件传递

要将证书作为文件传递,您需要提供它在应用程序容器内的路径。

DATABASE_SSL_CA: /path/to/certificate/server-certificate.pem

这可能需要配置卷,以使证书在提供给DATABASE_SSL_CA变量的路径下可用。

# 将证书作为文本传递

提供所需证书的另一种方法是将它们作为文本提供。

DATABASE_SSL_CA: "-----BEGIN CERTIFICATE-----\nMIIEBjCCAu6gAwIBAgIJAMc0ZzaSUK51MA0GCSqGSIb3DQEBCwUAMIGPMQswCQYD\nVQQGEwJVUzEQMA4GA1UEBwwHU2VhdHRsZTETMBEGA1UECAwKV2FzaGluZ3RvbjEi\n............\nzPW4CXXvhLmE02TA9/ZeCw3KkHIwicNuEfa=\n-----END CERTIFICATE-----"
DATABASE_SSL_CERT: |
  -----BEGIN CERTIFICATE-----
  MIIEBjCCAu6gAwIBAgIJAMc0ZzaSUK51MA0GCSqGSIb3DQEBCwUAMIGPMQswCQYD
  ...rest_of_certificate_content
  zPW4CXXvhLmE02TA9/ZeCw3KkHIwicNuEfa=
  -----END CERTIFICATE-----
DATABASE_SSL_KEY: LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUVCakNDQXU2Z0F3SUJBZ0lKQU1jMFoKelBXNENYWHZoTG1FMDJUQTkvWmVDdzNLa0hJd2ljTnVFZmE9Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0=

DATABASE_SSL_CERT可以以三种格式提供

  • 作为单行,其中换行符应由换行符(\n)表示。
  • 使用字面块标量字符(|)以原始证书格式。
  • 作为 base64 编码的字符串。它可以解决与云托管平台的换行符编码相关的問題。

# 根证书轮换

各种云提供商(例如 Azure、AWS)定期轮换其根证书,这可能需要系统管理员手动更新证书以保持应用程序正常运行。

在 Azure 文档中阅读有关此案例的详细文章

# MySQL 高可用性

为了确保 MySQL 的高可用性,我们建议使用带有单个活动主服务器的 MySQL 主从复制。您可以在此处找到有关 MySQL 复制的更多信息。

我们建议使用一个主服务器,因为应用程序中的数据会快速修改,而且节点之间的数据经常由于复制滞后而不同步。

如果发生故障,应用程序不会自动在节点之间切换,因此值得研究负载均衡器,它将自动打开节点之间的连接。

# 下一步