Kubernetes 的 MySQL Operator 發行說明
MySQL Shell
MySQL Router
MySQL InnoDB Cluster 可以使用 MySQL Shell 或 Kubernetes 的 MySQL Operator 建立的資料庫 Dump 初始化。備份可以放在叢集可存取的持久性磁碟區上,但我們的範例使用 OCI Object Storage 儲存桶。
使用 OCI Object Storage 儲存桶
如果您要從 OCI OS 啟動,則必須知道以下資訊
有權存取 OCI OS 的使用者的憑證
-
OCI OS 物件前綴 (扮演目錄的角色)。必須設定以下 Helm 變數
initDB.dump.name
: Dump 的名稱,遵循 Kubernetes 命名識別碼的規則,例如 dump-20210916-140352。initDB.dump.ociObjectStorage.prefix
: 上面列表中的前綴initDB.dump.ociObjectStorage.bucketName
: 上面列表中的儲存桶名稱-
initDB.dump.ociObjectStorage.credentials
: Kubernetes Secret 的名稱,其中包含存取 OCI OS 儲存桶的憑證對於憑證 Secret,需要以下資訊:OCI OS 使用者名稱、指紋、租戶名稱、區域名稱、密碼和使用者的私鑰。
OCI OS 儲存桶名稱
OCI 命令列工具在 $HOME/config
中的 [DEFAULT]
區段中提供此資訊。取得後,執行
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 Secret 後,現在建立將從 OCI OS 中的 Dump 初始化的叢集
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"