The documentation you are viewing is for Dapr v1.12 which is an older version of Dapr. For up-to-date documentation, see the latest version.
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 # Required if pemContents not provided. Path to pem file.
    value: "<PEM PATH>"
  - name: pemContents # Required if pemPath not provided. Pem value.
    value: "<PEM CONTENTS>"    
Warning
以上示例将密钥明文存储, 更推荐的方式是使用 Secret 组件, 这里。如果您想要使用 MySQL 作为 Actor 存储,请在 yaml 上附上以下内容。
  - name: actorStateStore
    value: "true"
元数据字段规范
| 字段 | 必填 | 详情 | 示例 | 
|---|---|---|---|
| connectionString | Y | 用于连接到 MySQL 的连接字符串。 请不要将schema添加到连接字符串中。 | 非SSL连接: "<user>:<password>@tcp(<server>:3306)/?allowNativePasswords=true", Enforced SSL 连接:"<user>:<password>@tcp(<server>:3306)/?allowNativePasswords=true&tls=custom" | 
| schemaName | 否 | 要使用的schema名称。 如果指定的schema不存在,将会自动创建。 默认值为 "dapr_state_store" | "custom_schema","dapr_schema" | 
| tableName | 否 | 要使用的表名。 如果对应的表不存在,将被自动创建。 默认值为 "state" | "table_name","dapr_state" | 
| pemPath | 否 | 如果未提供 pemContents,则需要用于 强制 SSL 连接 的 PEM 文件的完整路径。 无法在 K8s环境中使用 | "/path/to/file.pem","C:\path\to\file.pem" | 
| pemContents | N | 如果未提供 pemPath,则需要用于强制 SSL 连接 的 PEM 文件内容。 可在K8s环境中使用 | "pem value" | 
设置 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。
- 
安装 MySQL 到您的集群。 helm repo add bitnami https://charts.bitnami.com/bitnami helm install dapr-mysql bitnami/mysql
- 
执行 kubectl get pods来查看现在正在集群中运行的MySQL容器。
- 
接下来,我们会获取到我们的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并复制输出的密码。
 
- 
- 
你可以使用密码你的构建连接串。 
非 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。
相关链接
- Dapr组件的基本格式
- 阅读 本指南 以获取配置状态存储组件的说明
- 状态管理构建块
Feedback
Was this page helpful?
Glad to hear it! Please tell us how we can improve.
Sorry to hear that. Please tell us how we can improve.