乐趣区

关于数据库:实践教程之如何对-PolarDBX-进行备份恢复

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: v1
kind: ConfigMap
metadata:
  name: transfer-test-polardbx-config
data:
  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/v1
kind: Job
metadata:
  name: transfer-test-polardbx
spec:
  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/v1
kind: 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/v1
kind: PolarDBXCluster
metadata:
  name: polardb-x-restore
spec:
  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;

原文链接

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

退出移动版