实验记录:PolarDB-X集群kill POD自动恢复实验

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云原生数据库 PolarDB 分布式版,标准版 2核8GB
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
简介: 实验记录:PolarDB-X集群kill POD自动恢复实验

1 PolarDB-x集群创建

galaxykube$ kubectl get polardbxCluster polardb-x -o wide -w

   NAME    PROTOCOL GMS   CN    DN    CDC   PHASE   DISK AGE

  polardb-x   8.0  1/1   0/2   1/1   0/1   Creating       3m58s

  polardb-x   8.0  1/1   0/2   1/1   1/1   Creating       5m6s

  polardb-x   8.0  1/1   1/2   1/1   1/1   Creating       5m26s

  polardb-x   8.0  1/1   2/2   1/1   1/1   Running  7.2 GiB       8.0.3-PXC-5.4.13-16534775/8.0.18   5m47s

  polardb-x   8.0  1/1   2/2   1/1   1/1   Running  7.2 GiB        8.0.3-PXC-5.4.13-16534775/8.0.18   6m47s

集群有两个CN节点,一个GMS节点、一个CDC节点。

集群的登录密码可以用一下命令获得:

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

   Password:  8zpmncf5

 可以看到,登录集群的密码存在k8s集群的资源secret ploardb-x中。

在创建集群的同时,PolarDB-X operator也创建了一个polardb-x服务,详细信息如下(kubectl get pod命令的-o wide 选项用来显示资源的详细信息):

galaxykube$ kubectl get svc polardb-x -o wide

NAME        TYPE        CLUSTER-IP     EXTERNAL-IP   PORT(S)         AGE   SELECTOR

polardb-x   ClusterIP   10.106.6.253   <none>     3306/TCP,8081/TCP   30m   polardbx/cn-type=rw,polardbx/name=polardb-x,polardbx/rand=4k6z,polardbx/role=c

需要将此服务转发至本地3306端口才能使用本地客户端访问PolarDB-X集群,转发后不能退出命令,需要保持执行命令的会话处于open状态。

galaxykube$kubectl port-forward svc/polardb-x 33061

2 连接至PolarDB-X集群

重新打开一个会话,连接至PolarDB-X所在集群服务器,在root用户下操作即可,服务器上需要提前安装号MySQL客户端,使用MySQL客户端即可登录到PolarDB-X集群,用户名是polardbx_root,密码用上节获得的,地址使用本地环回地址,端口为转发端口3306

root# mysql -h127.0.0.1 -P3306 -upolardbx_root -p8zpmncf5

mysql: [Warning] Using a password on the command line interface can be insecure.

     Welcome to the MySQL monitor.  Commands end with ; or \g.

     ........

     Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

3 使用sysbench模拟一个业务环境

创建sysbench所需数据库,数据库名字为sysbench_test

mysql> create database sysbench_test;

退出会话后登录galaxykube用户. 使用su命令时加上 - ,切换至galaxykube用户环境

su - galaxykube

下载sysbench-prepare.yaml(sysbench准备数据pod),sysbench-oltp.yaml(sysbench模拟业务pod文件)

wget https://labfileapp.oss-cn-hangzhou.aliyuncs.com/learn-some-polardb-x-main-class-5/sysbench-prepare.yaml

wget https://labfileapp.oss-cn-hangzhou.aliyuncs.com/learn-some-polardb-x-main-class-5/sysbench-oltp.yaml

主备sysbench数据,创建sysbench-prepare job

galaxykube$ kubectl apply -f sysbench-prepare.yaml

检查job状态,

galaxykube@iZbp12b91re208jg1y8likZ ~]$ kubectl get jobs

   NAME                               COMPLETIONS   DURATION   AGE

   sysbench-prepare-data-test   0/1           34s        34s

COMPLETIONS为1/1时,sysben数据已经准备好,可以开始创建和启动模拟业务pod了

galaxykube$ kubectl apply -f sysbench-oltp.yaml

查看sysbench-oltp pod名称

galaxykube$ kubectl get pods

NAME                                              READY   STATUS      RESTARTS      AGE

   polardb-x-rz2l-cdc-default-579b4b7549-qdrk8   2/2     Running     2 (10m ago)   9d

        ........

   polardb-x-rz2l-gms-log-0                      3/3     Running     3 (10m ago)   9d

   sysbench-oltp-test-d5hhs                      1/1     Running     0             27s

   sysbench-prepare-data-test-btt7g              0/1     Completed   0             2m8s

从上面可以看到,业务模拟pod的名称是sysbench-oltp-test-d5hhs,持续监控这个pod的日志输出


galaxykube$ kubectl logs -f sysbench-oltp-test-d5hhs

  WARNING: --num-threads is deprecated, use --threads instead

   sysbench 1.0.17 (using bundled LuaJIT 2.1.0-beta2)

   Running the test with following options:

   Number of threads: 8

   Report intermediate results every 5 second(s)

   Initializing random number generator from current time

   Initializing worker threads...

   Threads started!

   [ 5s ] thds: 8 tps: 40.45 qps: 745.28 (r/w/o: 582.90/162.38/0.00) lat (ms,95%): 287.38 err/s: 0.00 reconn/s: 0.00

   [ 10s ] thds: 8 tps: 49.35 qps: 887.70 (r/w/o: 690.09/197.60/0.00) lat (ms,95%): 314.45 err/s: 0.00 reconn/s: 0.00

   [ 15s ] thds: 8 tps: 62.68 qps: 1135.51 (r/w/o: 882.38/253.13/0.00) lat (ms,95%): 186.54 err/s: 0.00 reconn/s: 0.00

PolarDB-X集群目前的tps为62.68,qps为1135.31。

4 删除一个pod,观察PolarDB-X集群状态及业务负载的变化

[galaxykube@iZbp16rl52hr6rd8xo8rwyZ ~]$ kubectl get pods

   NAME                                           READY   STATUS      RESTARTS      AGE

   polardb-x-t6jd-cdc-default-5c9c46bcbd-svhvb   2/2     Running     0             14m

   polardb-x-t6jd-cn-default-b84868666-w6sbm     3/3     Running     0             14m

   polardb-x-t6jd-cn-default-b84868666-wzbdg     3/3     Running     1 (13m ago)   14m

   .....

集群内目前有两个cn  pod,标红的字符串为这两个cn的名称,删除第二个pod

galaxykube$ kubectl delete pod polardb-x-t6jd-cn-default-b84868666-wzbdg

pod "polardb-x-t6jd-cn-default-b84868666-wzbdg" deleted

检查集群中pod的状态

galaxykube$ kubectl get pods

NAME                                          READY   STATUS      RESTARTS   AGE

polardb-x-t6jd-cdc-default-5c9c46bcbd-svhvb   2/2     Running     0          20m

polardb-x-t6jd-cn-default-b84868666-r6m7j     2/3     Running     0          13s

polardb-x-t6jd-cn-default-b84868666-w6sbm     3/3     Running     0          20m

集群重新创建了一个pod,名称同删除cn pod的名称不同,该pod正处于启动状态

启动完毕后,pod的ready为3/3

[galaxykube@iZbp16rl52hr6rd8xo8rwyZ ~]$ kubectl get pods

NAME                                          READY   STATUS      RESTARTS   AGE

polardb-x-t6jd-cdc-default-5c9c46bcbd-svhvb   2/2     Running     0          21m

polardb-x-t6jd-cn-default-b84868666-r6m7j     3/3     Running     0          49s

polardb-x-t6jd-cn-default-b84868666-w6sbm     3/3     Running     0          21m

....

查看一下业务负载pod的日志,观察业务负载的变化

屏幕截图(990).png



业务负载在删除cn pod、重建cn pod的时间段内有所降低,在cn pod重建完成后业务负载恢复到删除之前的数值,这个期间errs为0,有一个时间间隔内有重连,显示了在删除节点(pod)运行的业务重新连接到了正常的节点(pod),可以看出来,PolarDB-X集群cn节点的删除和重建不会影响到业务运行,可以在线执行。




   







相关实践学习
快速体验PolarDB开源数据库
本实验环境已内置PostgreSQL数据库以及PolarDB开源数据库:PolarDB PostgreSQL版和PolarDB分布式版,支持一键拉起使用,方便各位开发者学习使用。
相关文章
|
4月前
|
关系型数据库 分布式数据库 数据库
PolarDB产品使用问题之“主集群和从集群地域映射表”指的是什么
PolarDB产品使用合集涵盖了从创建与管理、数据管理、性能优化与诊断、安全与合规到生态与集成、运维与支持等全方位的功能和服务,旨在帮助企业轻松构建高可用、高性能且易于管理的数据库环境,满足不同业务场景的需求。用户可以通过阿里云控制台、API、SDK等方式便捷地使用这些功能,实现数据库的高效运维与持续优化。
PolarDB产品使用问题之“主集群和从集群地域映射表”指的是什么
|
3月前
|
关系型数据库 MySQL Serverless
在部署云数据库PolarDB MySQL版 Serverless集群的过程中问题点
在部署PolarDB MySQL Serverless过程中,常见问题包括配置误解、网络配置错误、资源未及时释放及压测不熟练。建议深入理解配置项,确保合理设置伸缩策略;明确业务需求,使PolarDB与现有服务同处一地域与VPC;利用提醒功能管理资源生命周期;按官方指南执行压测。新用户面临的学习曲线、资源管理自动化不足及成本控制难题,可通过增强文档友好性、引入智能成本管理与用户界面优化来改善。
65 1
|
4月前
|
关系型数据库 分布式数据库 PolarDB
PolarDB产品使用问题之原PolarDB-X集群无法连接且Docker容器已经被删除,如何恢复数据
PolarDB产品使用合集涵盖了从创建与管理、数据管理、性能优化与诊断、安全与合规到生态与集成、运维与支持等全方位的功能和服务,旨在帮助企业轻松构建高可用、高性能且易于管理的数据库环境,满足不同业务场景的需求。用户可以通过阿里云控制台、API、SDK等方式便捷地使用这些功能,实现数据库的高效运维与持续优化。
|
4月前
|
SQL 关系型数据库 分布式数据库
PolarDB产品使用问题之如何查看并进入您的PolarDB-X 2.0集群
PolarDB产品使用合集涵盖了从创建与管理、数据管理、性能优化与诊断、安全与合规到生态与集成、运维与支持等全方位的功能和服务,旨在帮助企业轻松构建高可用、高性能且易于管理的数据库环境,满足不同业务场景的需求。用户可以通过阿里云控制台、API、SDK等方式便捷地使用这些功能,实现数据库的高效运维与持续优化。
|
4月前
|
关系型数据库 Serverless 分布式数据库
PolarDB产品使用问题之inplace方式是否支持集群所有节点的弹性扩容
PolarDB产品使用合集涵盖了从创建与管理、数据管理、性能优化与诊断、安全与合规到生态与集成、运维与支持等全方位的功能和服务,旨在帮助企业轻松构建高可用、高性能且易于管理的数据库环境,满足不同业务场景的需求。用户可以通过阿里云控制台、API、SDK等方式便捷地使用这些功能,实现数据库的高效运维与持续优化。
|
4月前
|
关系型数据库 MySQL 分布式数据库
PolarDB产品使用问题之如何将旧主加入原集群
PolarDB产品使用合集涵盖了从创建与管理、数据管理、性能优化与诊断、安全与合规到生态与集成、运维与支持等全方位的功能和服务,旨在帮助企业轻松构建高可用、高性能且易于管理的数据库环境,满足不同业务场景的需求。用户可以通过阿里云控制台、API、SDK等方式便捷地使用这些功能,实现数据库的高效运维与持续优化。
|
3月前
|
Kubernetes Cloud Native 关系型数据库
k8s 部署polardb-x集群
k8s 部署polardb-x集群
160 0
|
4月前
|
关系型数据库 MySQL Serverless
体验阿里云PolarDB MySQL Serverless集群
体验阿里云PolarDB MySQL Serverless集群
|
4月前
|
关系型数据库 分布式数据库 PolarDB
**PolarDB开源指南:构建分布式数据库集群**踏上PolarDB开源之旅,了解如何从零开始搭建分布式集群
【7月更文挑战第3天】**PolarDB开源指南:构建分布式数据库集群**踏上PolarDB开源之旅,了解如何从零开始搭建分布式集群。采用存储计算分离架构,适用于大规模OLTP和OLAP。先准备硬件和软件环境,包括Linux、Docker和Git。然后,克隆源码,构建Docker镜像,部署控制节点和计算节点。使用PDCli验证集群状态,开始探索PolarDB的高性能与高可用性。在实践中深化学习,贡献于数据库技术创新。记得在安全环境下测试。
186 1