实践教程之如何对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.设置本地转发。

1.1 执行如下命令,设置端口转发并保持进程存活。

nohup kubectl port-forward svc/polardb-x 3306 > forward.log 2>&1 &

1.2 执行如下命令,查看输出日志,确认是否转发成功。

cat forward.log

返回结果如下,表示转发成功。

b1.png

2.执行如下命令,获取登录密码。

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

返回结果如下,你可查看到密码。

a2.png

3.执行如下命令,建库。

说明:您需要将命令中的{上文获得的密码}替换为上一步骤获取的密码。

mysql -h127.1 -upolardbx_root -p{上文获得的密码} -Ac -e "create database sysbench_test"


4.导入数据。

4.1 依次执行如下命令,安装sysbench。

#回到root用户 
 exit  
#安装sysbench
 sudo yum -y install sysbench
#登录到galaxykube
 su galaxykube  cd

说明:您可通过sysbench --help查看是否安装成功。

4.2 执行如下命令,导入数据。

说明:您需要将命令中的{数据库密码}替换为上文中获取的密码。

sysbench oltp_insert --mysql-host=127.0.0.1 --mysql-port=3306 --mysql-user=polardbx_root --mysql-password={数据库密码} --mysql-db=sysbench_test --db-driver=mysql --tables=1 --table-size=10000 --report-interval=1 prepare

模拟DN节点无法提供服务的场景

本步骤将指导您如何模拟DN节点无法提供服务的场景。备库重搭的目标节点,不允许是leader节点。

1.执行如下命令,登录角色为follower的DN Pod。

说明:本实验中只有一个follower dn pod,因此可使用如下命令。

kubectl exec -it `kubectl get pods -l xstore/name,xstore/role=follower,polardbx/role=dn -o name` bash


2.查看某个表的checksum。

2.1 执行如下命令,登录mysql控制台。

myc

2.2 执行如下命令,选择一个分库。

show databases;  
use sysbench_test_single

2.3 执行如下命令,查看这个库下的表,通过checksum table {表名}来查看这个表的checksum值。

show tables; 
#查看表  checksum table {表名};  
#查看该表的checksum  exit

返回结果如下,您需要记录库表名及其checksum。

a3.jpeg

3.破坏数据文件。

3.1 执行如下命令,删除数据文件。

rm -fR /data/mysql/data

3.2 执行如下命令,登录mysql控制台,执行shutdown。

myc  shutdown;

3.3 查看该Pod的状态。

在实验页面,单机右上角的+图标,创建新的终端。在新的终端中,执行如下命令,切换到galaxykube用户。

su galaxykube cd

在新的终端中,执行如下命令,查看Pod状态。

kubectl get pods -l xstore/name,xstore/role=follower,polardbx/role=dn -w

返回结果如下,您可看见该Pod的状态会变为NotReady。

a4.png

发起备库重搭

本步骤将指导您如何发起备库重搭。

1.执行如下命令,获取输入参数。

  • 需要重搭的POD的名称
  • 需要重搭的POD所在的xstore名称(可查看POD的label xstore/name的值)
kubectl get pods -l xstore/name,xstore/role=follower,polardbx/role=dn --show-labels

返回结果如下,您可查看到重搭的POD的名称和重搭的POD所在的xstore名称。

a5.png

2. 发起备库重搭任务。

2.1 执行如下命令,通过vi创建rebuildjob.yaml文件.

vi rebuildjob.yaml

2.2按i键进入编辑模式,将如下代码复制到文件中,填入“需要重搭(无法提供服务)的POD名称”“被重搭(无法提供服务)的POD所在xstore的名称”,然后按ECS退出编辑模式,输入:wq后按下Enter键保存并退出。

apiVersion: polardbx.aliyun.com/v1
kind: XStoreFollower
metadata:
  name: rebuildjob
spec:
  local: false
  targetPodName: {{需要重搭的POD名称}}
  xStoreName: {{被重搭的POD所在xstore的名称}}

2.3 执行如下命令,创建重搭任务。

kubectl apply -f rebuildjob.yaml


3.观察重搭任务状态

3.1 执行如下命令,观察重搭任务状态。

最后返回结果为FollowerPhaseSuccess则表示重搭成功。

kubectl get xf -w

3.2 执行如下命令,查看POD状态。如果READY为3/3,且STATUS为Running表示重搭成功。

kubectl get pods -l xstore/name,xstore/role=follower,polardbx/role=dn


4.校验数据。

4.1 执行如下命令,登录POD。

kubectl exec -it `kubectl get pods -l xstore/name,xstore/role=follower,polardbx/role=dn -o name` bash

4.2 执行如下命令,登录mysql控制台。

myc

4.3 执行校验语句,检查checksum是否和破坏数据前一致。

show databases;
use sysbench_test_single  
show tables;  
checksum table {记录的表名};  #查看该表的checksum  
exit


5. 清除重搭任务。

退出Pod后,清理重搭任务。

kubectl delete xf rebuildjob


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

相关实践学习
快速体验PolarDB开源数据库
本实验环境已内置PostgreSQL数据库以及PolarDB开源数据库:PolarDB PostgreSQL版和PolarDB分布式版,支持一键拉起使用,方便各位开发者学习使用。
相关文章
|
3月前
|
存储 SQL 运维
“震撼发布!PolarDB-X:云原生分布式数据库巨擘,超高并发、海量存储、复杂查询,一网打尽!错过等哭!”
【8月更文挑战第7天】PolarDB-X 是面向超高并发、海量存储和复杂查询场景设计的云原生分布式数据库系统
107 1
|
4月前
|
SQL 关系型数据库 分布式数据库
PolarDB产品使用问题之主节点和列存节点的执行计划相同,而只读行存节点的执行计划不同,是什么原因
PolarDB产品使用合集涵盖了从创建与管理、数据管理、性能优化与诊断、安全与合规到生态与集成、运维与支持等全方位的功能和服务,旨在帮助企业轻松构建高可用、高性能且易于管理的数据库环境,满足不同业务场景的需求。用户可以通过阿里云控制台、API、SDK等方式便捷地使用这些功能,实现数据库的高效运维与持续优化。
|
4月前
|
存储 运维 关系型数据库
PolarDB产品使用问题之在删除主节点上的表后尝试查询归档表遇到问题,该如何解决
PolarDB产品使用合集涵盖了从创建与管理、数据管理、性能优化与诊断、安全与合规到生态与集成、运维与支持等全方位的功能和服务,旨在帮助企业轻松构建高可用、高性能且易于管理的数据库环境,满足不同业务场景的需求。用户可以通过阿里云控制台、API、SDK等方式便捷地使用这些功能,实现数据库的高效运维与持续优化。
|
4月前
|
运维 关系型数据库 分布式数据库
PolarDB产品使用问题之将部分表设置为压缩表,是否会对节点的整体性能影响
PolarDB产品使用合集涵盖了从创建与管理、数据管理、性能优化与诊断、安全与合规到生态与集成、运维与支持等全方位的功能和服务,旨在帮助企业轻松构建高可用、高性能且易于管理的数据库环境,满足不同业务场景的需求。用户可以通过阿里云控制台、API、SDK等方式便捷地使用这些功能,实现数据库的高效运维与持续优化。
|
4月前
|
关系型数据库 Serverless 分布式数据库
PolarDB产品使用问题之inplace方式是否支持集群所有节点的弹性扩容
PolarDB产品使用合集涵盖了从创建与管理、数据管理、性能优化与诊断、安全与合规到生态与集成、运维与支持等全方位的功能和服务,旨在帮助企业轻松构建高可用、高性能且易于管理的数据库环境,满足不同业务场景的需求。用户可以通过阿里云控制台、API、SDK等方式便捷地使用这些功能,实现数据库的高效运维与持续优化。
|
3月前
|
SQL 关系型数据库 数据库连接
drds配置逻辑库和物理表
【8月更文挑战第6天】
105 0
|
4月前
|
存储 关系型数据库 分布式数据库
PolarDB,阿里云的云原生分布式数据库,以其存储计算分离架构为核心,解决传统数据库的扩展性问题
【7月更文挑战第3天】PolarDB,阿里云的云原生分布式数据库,以其存储计算分离架构为核心,解决传统数据库的扩展性问题。此架构让存储层专注数据可靠性,计算层专注处理SQL,提升性能并降低运维复杂度。通过RDMA加速通信,多副本确保高可用性。资源可独立扩展,便于成本控制。动态添加计算节点以应对流量高峰,展示了其灵活性。PolarDB的开源促进了数据库技术的持续创新和发展。
296 2
|
5月前
|
运维 关系型数据库 MySQL
PolarDB产品使用问题之多主集群配置多个全局只读节点最多可增加到多少个
PolarDB产品使用合集涵盖了从创建与管理、数据管理、性能优化与诊断、安全与合规到生态与集成、运维与支持等全方位的功能和服务,旨在帮助企业轻松构建高可用、高性能且易于管理的数据库环境,满足不同业务场景的需求。用户可以通过阿里云控制台、API、SDK等方式便捷地使用这些功能,实现数据库的高效运维与持续优化。
|
5月前
|
存储 关系型数据库 分布式数据库
PolarDB操作报错合集之修改了binlog的存储时间为1小时,但在重启后发现仍有90GB的binlog文件未被删除,是什么原因
在使用阿里云的PolarDB(包括PolarDB-X)时,用户可能会遇到各种操作报错。下面汇总了一些常见的报错情况及其可能的原因和解决办法:1.安装PolarDB-X报错、2.PolarDB安装后无法连接、3.PolarDB-X 使用rpm安装启动卡顿、4.PolarDB执行UPDATE/INSERT报错、5.DDL操作提示“Lock conflict”、6.数据集成时联通PolarDB报错、7.编译DN报错(RockyLinux)、8.CheckStorage报错(源数据库实例被删除)、9.嵌套事务错误(TDDL-4604)。
|
6月前
|
关系型数据库 分布式数据库 数据库
【PolarDB开源】PolarDB-X源码解读:分布式事务处理机制揭秘
【5月更文挑战第20天】PolarDB-X,PolarDB家族的一员,专注于大规模分布式事务处理,采用2PC协议保证ACID特性。源码解析揭示其通过预提交、一致性快照隔离和乐观锁优化事务性能,以及利用事务日志进行故障恢复。深入理解其事务处理机制对开发者掌握分布式数据库核心技术至关重要。随着开源社区的发展,更多优化方案将涌现,助力构建更强大的分布式数据库系统。
220 6

热门文章

最新文章

相关产品

  • 云原生数据库 PolarDB