The documentation you are viewing is for Dapr v1.9 which is an older version of Dapr. For up-to-date documentation, see the latest version.

MySQL

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

配置

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

apiVersion: dapr.io/v1alpha1
kind: Component
metadata:
  name: <NAME>
  namespace: <NAMESPACE>
spec:
  type: state.mysql
  version: v1
  metadata:
  - name: connectionString
    value: "<CONNECTION STRING>"
  - name: schemaName
    value: "<SCHEMA NAME>"
  - name: tableName
    value: "<TABLE NAME>"
  - name: pemPath
    value: "<PEM PATH>"

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

  - name: actorStateStore
    value: "true"

元数据字段规范

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

设置 MySQL

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


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

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

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

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

  1. 安装 MySQL 到您的集群。

    helm repo add bitnami https://charts.bitnami.com/bitnami
    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数据库连接的文档,来了解有关如何下载必要凭证的信息。

非 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。

相关链接