实践教程之用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数据库。

启动业务

本步骤将指导您如何使用Sysbench OLTP场景模拟业务流量。

1.准备压测数据。
a.执行如下SQL语句,创建压测数据库sysbench_test。

create database sysbench_test;

b.输入exit退出数据库。
d1.jpg

c.执行如下命令,切换到账号galaxykube。

su galaxykube

d.执行如下命令,进入到/home/galaxykube目录。

cd

e.执行如下命令,创建准备压测数据的sysbench-prepare.yaml文件。

vim sysbench-prepare.yaml

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

kind: Job
metadata:
  name: sysbench-prepare-data-test
  namespace: default
spec:
  backoffLimit: 0
  template:
    spec:
      restartPolicy: Never
      containers:
        - name: sysbench-prepare
          image: severalnines/sysbench
          env:
            - name: POLARDB_X_USER
              value: polardbx_root
            - name: POLARDB_X_PASSWD
              valueFrom:
                secretKeyRef:
                  name: polardb-x
                  key: polardbx_root
          command: [ 'sysbench' ]
          args:
            - --db-driver=mysql
            - --mysql-host=$(POLARDB_X_SERVICE_HOST)
            - --mysql-port=$(POLARDB_X_SERVICE_PORT)
            - --mysql-user=$(POLARDB_X_USER)
            - --mysql_password=$(POLARDB_X_PASSWD)
            - --mysql-db=sysbench_test
            - --mysql-table-engine=innodb
            - --rand-init=on
            - --max-requests=1
            - --oltp-tables-count=1
            - --report-interval=5
            - --oltp-table-size=160000
            - --oltp_skip_trx=on
            - --oltp_auto_inc=off
            - --oltp_secondary
            - --oltp_range_size=5
            - --mysql_table_options=dbpartition by hash(`id`)
            - --num-threads=1
            - --time=3600
            - /usr/share/sysbench/tests/include/oltp_legacy/parallel_prepare.lua
            - run

g.执行如下命令,运行准备压测数据的sysbench-prepare.yaml文件,初始化测试数据。

kubectl apply -f sysbench-prepare.yaml

h.执行如下命令,获取任务进行状态。

kubectl get jobs

返回结果如下,请您耐心等待大约1分钟,当任务状态COMPLETIONS为1/1时,表示数据已经初始化完成。
20230314151624.jpg

2.启动压测流量。
a.执行如下命令,创建启动压测的sysbench-oltp.yaml文件。

vim sysbench-oltp.yaml

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

kind: Job
metadata:
  name: sysbench-oltp-test
  namespace: default
spec:
  backoffLimit: 0
  template:
    spec:
      restartPolicy: Never
      containers:
        - name: sysbench-oltp
          image: severalnines/sysbench
          env:
            - name: POLARDB_X_USER
              value: polardbx_root
            - name: POLARDB_X_PASSWD
              valueFrom:
                secretKeyRef:
                  name: polardb-x
                  key: polardbx_root
          command: [ 'sysbench' ]
          args:
            - --db-driver=mysql
            - --mysql-host=$(POLARDB_X_SERVICE_HOST)
            - --mysql-port=$(POLARDB_X_SERVICE_PORT)
            - --mysql-user=$(POLARDB_X_USER)
            - --mysql_password=$(POLARDB_X_PASSWD)
            - --mysql-db=sysbench_test
            - --mysql-table-engine=innodb
            - --rand-init=on
            - --max-requests=0
            - --oltp-tables-count=1
            - --report-interval=5
            - --oltp-table-size=160000
            - --oltp_skip_trx=on
            - --oltp_auto_inc=off
            - --oltp_secondary
            - --oltp_range_size=5
            - --mysql-ignore-errors=all
            - --num-threads=8
            - --time=3600
            - /usr/share/sysbench/tests/include/oltp_legacy/oltp.lua
            - run

c.执行如下命令,运行启动压测的sysbench-oltp.yaml文件,开始压测。

kubectl apply -f sysbench-oltp.yaml

d.执行如下命令,查找压测脚本运行的POD。

kubectl get pods

返回结果如下, 以‘sysbench-oltp-test-’开头的POD即为目标POD。
6.jpeg

e.执行如下命令,查看QPS等流量数据。

说明:您需要将命令中的目标POD替换为以‘sysbench-oltp-test-’开头的POD。

kubectl logs -f 目标POD

体验PolarDB-X高可用能力

经过前面的准备工作,我们已经用PolarDB-X+Sysbench OLTP搭建了一个正在运行的业务系统。本步骤将指导您通过使用kill POD的方式,模拟物理机宕机、断网等导致的节点不可用场景,并观察业务QPS的变化情况。

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

2.kill CN。

a.执行如下命令,切换到账号galaxykube。

su galaxykube

b.执行如下命令,获取CN POD的名字。

kubectl get pods

返回结果如下,以‘polardb-x-xxxx-cn-default’开头的是CN POD的名字。

v2-a08d54d06b67a261a68c977ae22feddd_r.jpeg

c.执行如下命令,删除任意一个CN POD。

说明:您需要将命令中的替换为任意一个以‘polardb-x-xxxx-cn-default’开头的CN POD的名字。

kubectl delete pod <CN POD>

d.执行如下命令,查看CN POD自动创建情况。

kubectl get pods

返回结果如下,您可查看到CN POD已经处于自动创建中。
20230314152125.jpg

经过几十秒后,被kill的CN POD自动恢复正常。
20230314152222.jpg

e.切换至终端二,您可查看kill CN之后业务QPS的情况。
20230314152300.jpg

3.kill DN。
a.切换至终端三,执行如下命令,获取DN POD的名字。

kubectl get pods

返回结果如下,以‘polardb-x-xxxx-dn’开头的是DN POD的名字。

20230314152341.jpg

b.执行如下命令,删除任意一个DN POD。

说明:

您需要将命令中的替换为任意一个以‘polardb-x-xxxx-dn’开头的DN POD的名字。
DN每个逻辑节点为三副本架构,也就是说一个DN节点对应3个POD,可任意选择一个进行删除操作。此外,GMS节点是一个特殊角色的DN,同样具备高可用能力,可选择任一POD进行删除。

kubectl delete pod <DN POD>

c.执行如下命令,查看DN POD自动创建情况。

kubectl get pods

返回结果如下,您可查看到DN POD已经处于自动创建中。
20230314152426.jpg
经过几十秒后,被kill的DN POD自动恢复正常。
20230314152453.jpg
d.切换至终端二,您可查看kill DN之后业务QPS的情况。
20230314152519.jpg

4.kill CDC。

a.切换至终端三,执行如下命令,获取CDC POD的名字。

kubectl get pods

返回结果如下,以‘polardb-x-xxxx-cdc-defaul’开头的是CDC POD的名字。

20230314152610.jpg

b.执行如下命令,删除任意一个CDC POD。

说明:您需要将命令中的替换为任意一个以‘polardb-x-xxxx-cdc-defaul’开头的CDC POD的名字。

kubectl delete pod <CDC POD>

c.执行如下命令,查看CDC POD自动创建情况。

kubectl get pods

返回结果如下,您可查看到CDC POD已经处于自动创建中。
20230314152646.jpg

经过几十秒后,被kill的CDC POD自动恢复正常。
20230314152716.jpg
d.切换至终端二,您可查看kill CDC之后业务QPS的情况。
20230314152818.jpg

本文来源:PolarDB-X知乎号

相关实践学习
快速体验PolarDB开源数据库
本实验环境已内置PostgreSQL数据库以及PolarDB开源数据库:PolarDB PostgreSQL版和PolarDB分布式版,支持一键拉起使用,方便各位开发者学习使用。
相关文章
|
2月前
|
存储 SQL 安全
应用案例|开源 PolarDB-X 在互联网安全场景的应用实践
中盾集团采用PolarDB-X云原生分布式数据库开源版本,有效解决了大数据量处理、复杂查询以及历史数据维护等难题,实现了业务的高效扩展与优化。
|
3月前
|
存储 Cloud Native 关系型数据库
PolarDB 高可用架构设计与实践
【8月更文第27天】 在现代互联网应用中,数据库作为核心的数据存储层,其稳定性和可靠性尤为重要。阿里云的 PolarDB 作为一款云原生的关系型数据库服务,提供了高可用、高性能和自动化的特性,适用于各种规模的应用。本文将详细介绍 PolarDB 的高可用架构设计,并探讨其实现数据安全性和业务连续性的关键技术。
91 0
|
15天前
|
NoSQL Cloud Native atlas
探索云原生数据库:MongoDB Atlas 的实践与思考
【10月更文挑战第21天】本文探讨了MongoDB Atlas的核心特性、实践应用及对云原生数据库未来的思考。MongoDB Atlas作为MongoDB的云原生版本,提供全球分布式、完全托管、弹性伸缩和安全合规等优势,支持快速部署、数据全球化、自动化运维和灵活定价。文章还讨论了云原生数据库的未来趋势,如架构灵活性、智能化运维和混合云支持,并分享了实施MongoDB Atlas的最佳实践。
|
4月前
|
SQL 自然语言处理 关系型数据库
PolarDB上实现一个自然语言查询系统
PolarDB上实现一个自然语言查询系统
|
16天前
|
NoSQL Cloud Native atlas
探索云原生数据库:MongoDB Atlas 的实践与思考
【10月更文挑战第20天】本文探讨了MongoDB Atlas的核心特性、实践应用及对未来云原生数据库的思考。MongoDB Atlas作为云原生数据库服务,具备全球分布、完全托管、弹性伸缩和安全合规等优势,支持快速部署、数据全球化、自动化运维和灵活定价。文章还讨论了实施MongoDB Atlas的最佳实践和职业心得,展望了云原生数据库的发展趋势。
|
1月前
|
SQL JSON 关系型数据库
MySQL是一个广泛使用的开源关系型数据库管理系统,它有许多不同的版本
【10月更文挑战第3天】MySQL是一个广泛使用的开源关系型数据库管理系统,它有许多不同的版本
121 5
|
1月前
|
关系型数据库 Unix MySQL
MySQL是一种关系型数据库管理系统
MySQL是一种关系型数据库管理系统
41 2
|
2月前
|
并行计算 关系型数据库 分布式数据库
朗坤智慧科技「LiEMS企业管理信息系统」通过PolarDB产品生态集成认证!
近日,朗坤智慧科技股份有限公司「LiEMS企业管理信息系统软件」通过PolarDB产品生态集成认证!
|
4月前
|
存储 关系型数据库 MySQL
深度评测:PolarDB-X 开源分布式数据库的优势与实践
本文对阿里云开源分布式数据库 PolarDB-X 进行了详细评测。PolarDB-X 以其高性能、强可用性和出色的扩展能力在云原生数据库市场中脱颖而出。文章首先介绍了 PolarDB-X 的核心产品优势,包括金融级高可靠性、海量数据处理能力和高效的混合负载处理能力。随后,分析了其分布式架构设计,包括计算节点、存储节点、元数据服务和日志节点的功能分工。评测还涵盖了在 Windows 平台通过 WSL 环境部署 PolarDB-X 的过程,强调了环境准备和工具安装的关键步骤。使用体验方面,PolarDB-X 在处理分布式事务和实时分析时表现稳定,但在网络问题和性能瓶颈上仍需优化。最后,提出了改进建
6995 2
|
4月前
|
关系型数据库 分布式数据库 数据库
基于PolarDB的图分析:保险数据分析实践
本文以公开的保险数据集为例,示例了基于云原生数据库PolarDB上,在保险理赔场景下,执行图查询来发现异常理赔记录和欺诈团伙:例如,查询与欺诈保单有相同理赔病人的其他保单,或者找出欺诈保单的投保人社交关系,以便进行欺诈预警。PolarDB在关系型数据库的基础上,提供了图分析能力,为企业的统一数据管理和分析,提供了强有力的支撑。

热门文章

最新文章

相关产品

  • 云原生数据库 PolarDB
  • 下一篇
    无影云桌面