实践教程之如何对PolarDB-X进行备份恢复

本文涉及的产品
云原生数据库 PolarDB PostgreSQL 版,标准版 2核4GB 50GB
云原生数据库 PolarDB MySQL 版,通用型 2核4GB 50GB
简介: PolarDB-X 为了方便用户体验,提供了免费的实验环境,您可以在实验环境里体验 PolarDB-X 的安装部署和各种内核特性。除了免费的实验,PolarDB-X 也提供免费的视频课程,手把手教你玩转 PolarDB-X 分布式数据库。本期实验将指导您如何对PolarDB-X进行备份恢复。

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

c1.jpeg

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集群登录密码。

b3.png

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

说明:使用MySQL Client方式登录通过k8s部署的PolarDB-X集群前,您需要进行获取PolarDB-X集群登录密码和端口转发。

kubectl port-forward svc/polardb-x 3306

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

c2.png

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键保存并退出。

c3.jpg

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集群已经恢复完成。

c4.png

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集群登录密码。

c5.png

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

说明:使用MySQL Client方式登录通过k8s部署的PolarDB-X集群前,您需要进行获取PolarDB-X集群登录密码和端口转发。

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

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

c6.png

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;


本文来源:PolarDB-X知乎号,关注阅读更多技术好文。

相关实践学习
快速体验PolarDB开源数据库
本实验环境已内置PostgreSQL数据库以及PolarDB开源数据库:PolarDB PostgreSQL版和PolarDB分布式版,支持一键拉起使用,方便各位开发者学习使用。
相关文章
|
4月前
|
存储 SQL 安全
应用案例|开源 PolarDB-X 在互联网安全场景的应用实践
中盾集团采用PolarDB-X云原生分布式数据库开源版本,有效解决了大数据量处理、复杂查询以及历史数据维护等难题,实现了业务的高效扩展与优化。
|
18天前
|
SQL 关系型数据库 分布式数据库
基于PolarDB的图分析:银行金融领域图分析实践
本文介绍了如何使用阿里云PolarDB PostgreSQL版及其图数据库引擎(兼容Apache AGE,A Graph Extension)进行图数据分析,特别针对金融交易欺诈检测场景。PolarDB PostgreSQL版支持图数据的高效处理和查询,包括Cypher查询语言的使用。文章详细描述了从数据准备、图结构创建到具体查询示例的过程,展示了如何通过图查询发现欺诈交易的关联关系,计算交易间的Jaccard相似度,从而进行欺诈预警。
基于PolarDB的图分析:银行金融领域图分析实践
|
5月前
|
存储 Cloud Native 关系型数据库
PolarDB 高可用架构设计与实践
【8月更文第27天】 在现代互联网应用中,数据库作为核心的数据存储层,其稳定性和可靠性尤为重要。阿里云的 PolarDB 作为一款云原生的关系型数据库服务,提供了高可用、高性能和自动化的特性,适用于各种规模的应用。本文将详细介绍 PolarDB 的高可用架构设计,并探讨其实现数据安全性和业务连续性的关键技术。
137 0
|
1月前
|
SQL 人工智能 自然语言处理
PolarDB-PG AI最佳实践 1:基础能力实践
Polar_AI 是 PolarDB 数据库的 AI 扩展,集成了先进的人工智能模型和算法,使数据库能够执行机器学习和自然语言处理任务。它支持 PostgreSQL 及 Oracle 兼容版本,通过标准 SQL 轻松调用 AI 模型,具备简单易用、灵活可定制、无缝数据融合、数据安全和高性能等优势。用户可以通过 SQL 快速实现文本转向量、情感分类等功能,并能自定义扩展 AI 模型。
|
2月前
|
关系型数据库 Linux 分布式数据库
rpm安装polarDB-PG的实践
安装PolarDB for PostgreSQL的实践,需要帮助到有同样需要的小伙伴
172 2
|
2月前
|
NoSQL Cloud Native atlas
探索云原生数据库:MongoDB Atlas 的实践与思考
【10月更文挑战第21天】本文探讨了MongoDB Atlas的核心特性、实践应用及对云原生数据库未来的思考。MongoDB Atlas作为MongoDB的云原生版本,提供全球分布式、完全托管、弹性伸缩和安全合规等优势,支持快速部署、数据全球化、自动化运维和灵活定价。文章还讨论了云原生数据库的未来趋势,如架构灵活性、智能化运维和混合云支持,并分享了实施MongoDB Atlas的最佳实践。
|
3月前
|
NoSQL Cloud Native atlas
探索云原生数据库:MongoDB Atlas 的实践与思考
【10月更文挑战第20天】本文探讨了MongoDB Atlas的核心特性、实践应用及对未来云原生数据库的思考。MongoDB Atlas作为云原生数据库服务,具备全球分布、完全托管、弹性伸缩和安全合规等优势,支持快速部署、数据全球化、自动化运维和灵活定价。文章还讨论了实施MongoDB Atlas的最佳实践和职业心得,展望了云原生数据库的发展趋势。
|
8月前
|
监控 关系型数据库 分布式数据库
【PolarDB 开源】PolarDB HTAP 实践:混合事务与分析处理的性能优化策略
【5月更文挑战第21天】PolarDB开源后在HTAP领域表现出色,允许在同一系统处理事务和分析工作负载,提高数据实时性。通过资源分配、数据分区、索引优化等策略提升性能。示例代码展示了创建和查询事务及分析表的基本操作。PolarDB还提供监控工具,帮助企业优化系统并应对业务变化。其HTAP能力为开发者和企业提供了强大支持,推动技术进步,加速数字化时代的业务发展。
450 1
|
6月前
|
存储 关系型数据库 MySQL
深度评测:PolarDB-X 开源分布式数据库的优势与实践
本文对阿里云开源分布式数据库 PolarDB-X 进行了详细评测。PolarDB-X 以其高性能、强可用性和出色的扩展能力在云原生数据库市场中脱颖而出。文章首先介绍了 PolarDB-X 的核心产品优势,包括金融级高可靠性、海量数据处理能力和高效的混合负载处理能力。随后,分析了其分布式架构设计,包括计算节点、存储节点、元数据服务和日志节点的功能分工。评测还涵盖了在 Windows 平台通过 WSL 环境部署 PolarDB-X 的过程,强调了环境准备和工具安装的关键步骤。使用体验方面,PolarDB-X 在处理分布式事务和实时分析时表现稳定,但在网络问题和性能瓶颈上仍需优化。最后,提出了改进建
7099 2
|
6月前
|
关系型数据库 分布式数据库 数据库
基于PolarDB的图分析:保险数据分析实践
本文以公开的保险数据集为例,示例了基于云原生数据库PolarDB上,在保险理赔场景下,执行图查询来发现异常理赔记录和欺诈团伙:例如,查询与欺诈保单有相同理赔病人的其他保单,或者找出欺诈保单的投保人社交关系,以便进行欺诈预警。PolarDB在关系型数据库的基础上,提供了图分析能力,为企业的统一数据管理和分析,提供了强有力的支撑。

热门文章

最新文章

相关产品

  • 云原生数据库 PolarDB