MySQL

MySQL 状态存储组件的详细信息

配置

要设置 MySQL 状态储存,请创建一个类型为 state.mysql的组件。 请参阅本指南,了解如何创建和应用状态存储配置。

  1. apiVersion: dapr.io/v1alpha1
  2. kind: Component
  3. metadata:
  4. name: <NAME>
  5. namespace: <NAMESPACE>
  6. spec:
  7. type: state.mysql
  8. version: v1
  9. metadata:
  10. - name: connectionString
  11. value: "<CONNECTION STRING>"
  12. - name: schemaName
  13. value: "<SCHEMA NAME>"
  14. - name: tableName
  15. value: "<TABLE NAME>"
  16. - name: pemPath
  17. value: "<PEM PATH>"

Warning

以上示例将密钥明文存储, It is recommended to use a secret store for the secrets as described here.

如果您想要使用 MySQL 作为 Actor 存储,请在 yaml 上附上以下内容。

  1. - name: actorStateStore
  2. value: "true"

元数据字段规范

字段必填详情Example
connectionStringY用于连接到 MySQL 的连接字符串。 请不要将schema添加到连接字符串中。非SSL连接: “<user>:<password>@tcp(<server>:3306)/?allowNativePasswords=true”, Enforced SSL 连接: “<user>:<password>@tcp(<server>:3306)/?allowNativePasswords=true&tls=custom”
schemaNameN要使用的schema名称。 如果指定的schema不存在,将会自动创建。 默认值为 “dapr_state_store”“custom_schema”, “dapr_schema”
tableNameN要使用的表名。 如果对应的表不存在,将被自动创建。 默认值为 “state”“table_name”, “dapr_state”
pemPathN使用 enforced SSL 连接 时,指定要使用的 PEM 文件完整路径。“/path/to/file.pem”, “C:\path\to\file.pem”

设置 MySQL

Dapr 可以使用任意的 MySQL 实例 - 无论它是运行在本地开发机上的、容器化的还是托管在云上的。

运行一个MySQL实例。 你可以在 Docker CE 中使用下面的命令运行一个本地的 MySQL 实例:

这个示例不是用于描述生产环境配置的,因为它使用明文设置密码,并且用户名使用了 MySQL 默认的root。

  1. docker run --name dapr-mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=my-secret-pw -d mysql:latest

我们可以使用 Helm 在 Kubernetes 集群中快速创建一个 MySQL 实例。 这种方法需要安装Helm

  1. 安装 MySQL 到您的集群。

    1. helm repo add bitnami https://charts.bitnami.com/bitnami
    2. helm install dapr-mysql bitnami/mysql
  2. 执行kubectl get pods来查看现在正在集群中运行的MySQL容器。

  3. 接下来,我们会获取到我们的MySQL密码,根据我们使用的操作系统不同,密码也会略有不同:

    • Windows: 运行 [System.Text.Encoding]::UTF8.GetString([System.Convert]::FromBase64String($(kubectl get secret --namespace default dapr-mysql -o jsonpath="{.data.mysql-root-password}"))) 然后复制输出的密码。

    • Linux/MacOS: 运行 kubectl get secret --namespace default dapr-mysql -o jsonpath="{.data.mysql-root-password}" | base64 --decode 并复制输出的密码。

  4. 你可以使用密码你的构建连接串。

Azure MySQL

如果你使用 运行在 Azure 上的 MySQL 请查阅 Azure 关于SSL数据库连接的文档,来了解有关如何下载必要凭证的信息。

AWS MySQL

GCP MySQL

非 SSL 连接

用你的连接字符串替换 <CONNECTION STRING> 的值。 连接字符串是一个标准 MySQL 连接字符串。 例如, "<user>:<password>@tcp(<server>:3306)/?allowNativePasswords=true"

Enforced SSL 连接

如果你的服务器需要 SSL 加密,那么连接字符串必须以 &tls=custom 结尾。例如, "<user>:<password>@tcp(<server>:3306)/?allowNativePasswords=true&tls=custom"。 您必须使用完整的PEM文件路径替换 <PEM PATH> 。 与 MySQL 的连接至少需要1.2版本及以上的 TLS。

相关链接