PolarDB-X 为了不便用户体验,提供了收费的试验环境,您能够在试验环境里体验 PolarDB-X 的装置部署和各种内核个性。除了收费的试验,PolarDB-X 也提供收费的视频课程,手把手教你玩转 PolarDB-X 分布式数据库。

本期试验将领导您如何对PolarDB-X进行备份复原。

本期收费试验地址

本期教学视频地址

前置筹备

假如曾经依据前一讲内容实现了PolarDB-X的搭建部署,应用PolarDB-X Operator装置PolarDB-X,并且能够胜利链接上PolarDB-X数据库。

启动转账业务

本步骤将领导您如何应用账户转账场景模仿业务流量。

1.执行如下命令,创立 transfer.yaml

vim transfer.yaml

2.按i键进入编辑模式,将如下代码复制到文件中,而后按ECS退出编辑模式,输出:wq后按下Enter键保留并退出。

---apiVersion: v1kind: ConfigMapmetadata:  name: transfer-test-polardbx-configdata:  config.toml: |    row_count = 100    initial_balance = 1000    verbose = true    enable_cts = false    for_polarx = true    [transfer_simple]    enabled = true    threads = 1    [read_latest]    enabled = false    threads = 1---apiVersion: batch/v1kind: Jobmetadata:  name: transfer-test-polardbxspec:  backoffLimit: 4  template:    spec:      restartPolicy: Never      volumes:        - name: config-toml          configMap:            name: transfer-test-polardbx-config            items:              - key: config.toml                path: config.toml      initContainers:        - name: database-init          image: mysql:5.7          env:            - name: USER              value: polardbx_root            - name: PASSWD              valueFrom:                secretKeyRef:                  name: polardb-x                  key: polardbx_root          command:            - mysql          args:            - -h$(POLARDB_X_SERVICE_HOST)            - -P$(POLARDB_X_SERVICE_PORT)            - -u$(USER)            - -p$(PASSWD)            - -e            - drop database if exists transfer_test; create database transfer_test character set utf8;        - name: data-init          image: polardbx/transfer-test:latest          env:            - name: USER              value: polardbx_root            - name: PASSWD              valueFrom:                secretKeyRef:                  name: polardb-x                  key: polardbx_root          volumeMounts:            - mountPath: /config.toml              name: config-toml              subPath: config.toml              readOnly: true          command: [ "/transfer" ]          args:            - prepare            - -config=/config.toml            - -dsn=$(USER):$(PASSWD)@tcp($(POLARDB_X_SERVICE_HOST):$(POLARDB_X_SERVICE_PORT))/transfer_test      containers:        - name: test          image: polardbx/transfer-test          env:            - name: USER              value: polardbx_root            - name: PASSWD              valueFrom:                secretKeyRef:                  name: polardb-x                  key: polardbx_root          volumeMounts:            - mountPath: /config.toml              name: config-toml              subPath: config.toml              readOnly: true          command: [ "/transfer" ]          args:            - run            - -config=/config.toml            - -dsn=$(USER):$(PASSWD)@tcp($(POLARDB_X_SERVICE_HOST):$(POLARDB_X_SERVICE_PORT))/transfer_test---

3.执行如下命令,开启转账业务流量。

kubectl apply -f transfer.yaml

4.执行如下命令,期待转账业务pod变成Running状态。

kubectl get pods -w

5.按Ctrl+C键,退出。

连贯PolarDB-X验证数据

本步骤将领导您如何连贯通过K8s部署的PolarDB-X集群。

1.执行如下命令,查看PolarDB-X集群登录明码。

kubectl get secret polardb-x -o jsonpath="{.data['polardbx_root']}" | base64 -d - | xargs echo "Password: "

返回后果如下,您能够查看到PolarDB-X集群登录明码。

2.执行如下命令,将PolarDB-X集群端口转发到3306端口。

阐明:应用MySQL Client形式登录通过k8s部署的PolarDB-X集群前,您须要进行获取PolarDB-X集群登录明码和端口转发。

kubectl port-forward svc/polardb-x 3306

3.在试验页面,单击右上角的+图标,创立新的终端二。

4.在终端二中,执行如下命令,连贯PolarDB-X集群。

阐明:

  • 您须要将<PolarDB-X集群登录明码>替换为理论获取到的PolarDB-X集群登录明码。
  • 如遇到mysql: [Warning] Using a password on the command line interface can be insecure.ERROR 2013 (HY000): Lost connection to MySQL server at 'reading initial communication packet', system error: 0报错,请您稍等一分钟,从新转发端口并连贯PolarDB-X集群即可。
mysql -h127.0.0.1 -P3306 -upolardbx_root -p<PolarDB-X集群登录明码>

5.执行如下SQL,验证数据一致性。

use transfer_test; select sum(balance) from accounts;

6.输出exit并回车,退出mysql命令行。

备份PolarDB-X

本步骤介绍如何为一个PolarDB-X创立备份集。

1.回到终端一,按CTRL+C进行port-forward命令。

2.配置备份集存储形式。

阐明:PolarDB-X 目前反对将备份集保留到 OSS、SFTP两种形式。本试验中,咱们将备份集通过SFTP备份到试验机器的指定目录。

2.1 执行如下命令,创立备份集存储的配置文件backup-storage-patch.yaml.

vim backup-storage-patch.yaml

2.2 按i键进入编辑模式,将如下代码复制到文件中,并批改其中的host字段为试验创立资源的私网ip(如何获取参考下图) ,而后按ECS退出编辑模式,输出:wq后按下Enter键保留并退出。

data:  config.yaml: |-    sinks:    - name: default      type: sftp      host: {批改为试验机器的ip}      port: 22      user: galaxykube      password: Polardbx123      rootPath: /home/galaxykube/backup/

2.3 执行如下命令,批改备份集存储配置。

kubectl -n polardbx-operator-system patch configmap polardbx-hpfs-config --patch-file backup-storage-patch.yaml

2.4 执行如下命令重启hpfs 组件,让备份集存储配置失效。

kubectl -n polardbx-operator-system rollout restart daemonsets polardbx-hpfs

3.为 PolarDB-X 集群进行备份。

3.1 执行如下命令,创立polardb-x-backup.yaml。

vim polardb-x-backup.yaml

3.2 按i键进入编辑模式,将如下代码复制到文件中,而后按ECS退出编辑模式,输出:wq后按下Enter键保留并退出。

apiVersion: polardbx.aliyun.com/v1kind: PolarDBXBackup                metadata:  name: polardb-x-backup            spec:  cluster:    name: polardb-x            retentionTime: 240h                 storageProvider:                      storageName: SFTP                   sink: default

3.3 执行如下命令创立PolarDBXBackup对象,并对PolarDB-X集群进行备份。

kubectl apply -f polardb-x-backup.yaml

3.4 执行如下命令察看备份状态,等到Phase 变为finished,即示意备份实现。

kubectl get pxb -w

3.5按Ctrl+C键,退出。

复原PolarDB-X

本步骤介绍如何从备份集复原出一个PolarDB-X集群。

1.执行如下命令,进行业务流量并删除以后PolarDB-X集群。

kubectl delete job --all kubectl delete pxc --all

2.执行如下命令,创立polardbx-restore.yaml。

vim polardbx-restore.yaml

3.按i键进入编辑模式,将如下代码复制到文件中,而后按ECS退出编辑模式,输出:wq后按下Enter键保留并退出。

apiVersion: polardbx.aliyun.com/v1kind: PolarDBXClustermetadata:  name: polardb-x-restorespec:  topology:    nodes:      cn:        replicas: 1        template:          resources:            limits:              cpu: "2"              memory: 4Gi            requests:              cpu: 100m              memory: 1Gi      dn:        template:          resources:            limits:              cpu: "1"              memory: 2Gi            requests:              cpu: 100m              memory: 1Gi  restore:    backupset: polardb-x-backup

4.执行如下命令,开始复原PolarDB-X。

kubectl apply -f polardbx-restore.yaml

5.执行如下命令,查看PolarDB-X集群创立状态。

kubectl get polardbxCluster polardb-x-restore -o wide -w

返回后果如下,请您急躁期待七分钟左右,当PHASE显示为Running时,示意PolarDB-X集群曾经复原实现。

PolarDB-X集群曾经复原实现后,按Ctrl+C键,退出查看PolarDB-X集群创立状态。

6.连贯PolarDB-X集群,验证数据。

6.1 执行如下命令,查看PolarDB-X集群登录明码。

kubectl get secret polardb-x-restore -o jsonpath="{.data['polardbx_root']}" | base64 -d - | xargs echo "Password: "

返回后果如下,您能够查看到PolarDB-X集群登录明码。

6.2 执行如下命令,将PolarDB-X集群端口转发到3306端口。

阐明:应用MySQL Client形式登录通过k8s部署的PolarDB-X集群前,您须要进行获取PolarDB-X集群登录明码和端口转发。

kubectl port-forward svc/polardb-x-restore 3306

6.3 在试验页面,单击右上角的+图标,创立新的终端三。

6.4 在终端三种,执行如下命令,连贯PolarDB-X集群。

阐明:

  • 您须要将<PolarDB-X集群登录明码>替换为理论获取到的PolarDB-X集群登录明码。
  • 如遇到mysql: [Warning] Using a password on the command line interface can be insecure.ERROR 2013 (HY000): Lost connection to MySQL server at 'reading initial communication packet', system error: 0报错,请您稍等一分钟,从新转发端口并连贯PolarDB-X集群即可。
mysql -h127.0.0.1 -P3306 -upolardbx_root -p<PolarDB-X集群登录明码>

6.5 执行如下SQL 验证数据,确认所有账户的余额总和仍是1000。

use transfer_test; select sum(balance) from accounts;

原文链接

本文为阿里云原创内容,未经容许不得转载。