实践教程之如何对PolarDB-X的存储节点发起备库重搭

本文涉及的产品
云原生数据库 PolarDB MySQL 版,Serverless 5000PCU 100GB
简介: 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-x 弹性伸缩实验
本实验主要介绍如何对PolarDB-X进行手动收缩扩容,了解PolarDB-X 中各个节点的含义,以及如何对不同配置的PolarDB-x 进行压测。
相关文章
|
1月前
|
关系型数据库 分布式数据库 数据库
PolarDB常见问题之数据库不能自己减少节点如何解决
PolarDB是阿里云推出的下一代关系型数据库,具有高性能、高可用性和弹性伸缩能力,适用于大规模数据处理场景。本汇总囊括了PolarDB使用中用户可能遭遇的一系列常见问题及解答,旨在为数据库管理员和开发者提供全面的问题指导,确保数据库平稳运行和优化使用体验。
|
3月前
|
关系型数据库 MySQL 分布式数据库
PolarDB MySQL版标准版计算节点规格详解
PolarDB MySQL版标准版计算节点规格详解
119 1
|
4月前
|
存储 安全 关系型数据库
PolarDB行列存节点的路由不是通过proxy路由的 是节点内部的路由吗?
PolarDB行列存节点的路由不是通过proxy路由的 是节点内部的路由吗?
19 0
|
6月前
|
关系型数据库 测试技术 数据库连接
实践教程之使用PolarDB-X进行冷热数据归档
PolarDB-X 为了方便用户体验,提供了免费的实验环境,您可以在实验环境里体验 PolarDB-X 的安装部署和各种内核特性。除了免费的实验,PolarDB-X 也提供免费的视频课程,手把手教你玩转 PolarDB-X 分布式数据库。
|
2月前
|
存储 NoSQL MongoDB
Python爬虫之非关系型数据库存储#5
MongoDB、Redis【2月更文挑战第18天】
43 1
|
2月前
|
SQL 关系型数据库 MySQL
Python爬虫之关系型数据库存储#5
python MySQL 增删改查操作【2月更文挑战第17天】
29 1
|
2月前
|
Oracle 关系型数据库 分布式数据库
PolarDB for PostgreSQL报错问题之跨节点执行报错如何解决
PolarDB for PostgreSQL是基于PostgreSQL开发的一款云原生关系型数据库服务,它提供了高性能、高可用性和弹性扩展的特性;本合集将围绕PolarDB(pg)的部署、管理和优化提供指导,以及常见问题的排查和解决办法。
|
3月前
|
存储 关系型数据库 MySQL
美柚:消息2.0引入PolarDB-M支撑大表并发和存储
美柚旗下的移动互联网软件包括美柚、宝宝记、柚子街等丰富的产品矩阵,为广大女性用户提供全面的健康管理、知识科普、线上购物、互联网医疗等服务。
|
4月前
|
关系型数据库 数据库 PostgreSQL
PostgreSQL【应用 01】使用Vector插件实现向量相似度查询(Docker部署的PostgreSQL安装pgvector插件说明)和Milvus向量库对比
PostgreSQL【应用 01】使用Vector插件实现向量相似度查询(Docker部署的PostgreSQL安装pgvector插件说明)和Milvus向量库对比
186 1
|
4月前
|
存储 关系型数据库 MySQL
存储成本最高降至原来的5%,PolarDB分布式冷数据归档的业务实践
国内某家兼具投资理财、文化旅游、票务为一体的大型综合型集团公司,2015年成立至今,由于业务高速发展,业务数据增长非常快,数据库系统屡次不堪重负。该公司数据库运维总监介绍,他们目前业务压力比较大的是票务和订单系统,他们的平台每天新增几千万的订单数据,订单的数据来自于各个终端,近几年每个月以300G的数据规模在高速增长,由于数据不断增加,数据库系统迄今为止迭代过了3次。

热门文章

最新文章

相关产品

  • 云原生数据库 PolarDB