MySQL Kubernetes 运算符手册  /  MySQL 运算符菜谱  /  使用 Helm 从转储引导 MySQL InnoDB 集群

7.2 使用 Helm 从转储引导 MySQL InnoDB 集群

可以使用 MySQL Shell 或 MySQL Kubernetes 运算符创建的数据库转储来初始化 MySQL InnoDB 集群。备份可以驻留在集群可访问的持久卷上,但我们的示例使用 OCI 对象存储桶。

使用 OCI 对象存储桶

如果从 OCI OS 引导,则必须知道以下内容:

  • 具有访问 OCI OS 权限的用户的凭据

  • OCI OS 对象前缀(充当目录)。必须设置以下 Helm 变量

    • initDB.dump.name: 转储的名称,遵循 Kubernetes 为命名标识符制定的规则,例如 dump-20210916-140352

    • initDB.dump.ociObjectStorage.prefix: 上述列表中的前缀

    • initDB.dump.ociObjectStorage.bucketName: 上述列表中的存储桶名称

    • initDB.dump.ociObjectStorage.credentials: Kubernetes 密钥的名称,其中包含访问 OCI OS 存储桶的凭据

      对于凭据密钥,需要以下信息:OCI OS 用户名、指纹、租户名称、区域名称、密码和用户的私钥。

  • OCI OS 存储桶名称

OCI 命令行工具在 $HOME/config[DEFAULT] 部分提供此信息。获取后,执行

Press CTRL+C to copy
export NAMESPACE="mynamespace" export OCI_CREDENTIALS_SECRET_NAME="oci-credentials" export OCI_USER="..." # like ocid1.user.oc1.... export OCI_FINGERPRINT="..." # like 90:01:..:..:.... export OCI_TENANCY="..." # like ocid1.tenancy.oc1... export OCI_REGION="..." # like us-ashburn-1 export OCI_PASSPHRASE="..." # set to empty string if no passphrase export OCI_PATH_TO_PRIVATE_KEY="..." # like $HOME/.oci/oci_api_key.pem kubectl -n $NAMESPACE create secret generic $OCI_CREDENTIALS_SECRET_NAME \ --from-literal=user="$OCI_USER" \ --from-literal=fingerprint="$OCI_FINGERPRINT" \ --from-literal=tenancy="$OCI_TENANCY" \ --from-literal=region="$OCI_REGION" \ --from-literal=passphrase="$OCI_PASSPHRASE" \ --from-file=privatekey="$OCI_PATH_TO_PRIVATE_KEY"

创建了 OCI 密钥后,现在创建将从 OCI OS 中的转储初始化的集群

Press CTRL+C to copy
export NAMESPACE="mynamespace" export OCI_DUMP_PREFIX="..." # like dump-20210916-140352 export OCI_BUCKET_NAME="..." # like idbcluster_backup export OCI_CREDENTIALS_SECRET_NAME="oci-credentials" kubectl create namespace $NAMESPACE helm install mycluster mysql-operator/mysql-innodbcluster \ --namespace $NAMESPACE \ --set credentials.root.user='root' \ --set credentials.root.password='sakila' \ --set credentials.root.host='%' \ --set serverInstances=3 \ --set routerInstances=1 \ --set initDB.dump.name="initdb-dump" \ --set initDB.dump.ociObjectStorage.prefix="$OCI_DUMP_PREFIX" \ --set initDB.dump.ociObjectStorage.bucketName="$OCI_BUCKET_NAME" \ --set initDB.dump.ociObjectStorage.credentials="$OCI_CREDENTIALS_SECRET_NAME"