实践教程之如何对PolarDB-X的存储节点发起备库重搭
  vayqoWYwGSbP 2023年11月05日 28 0

PolarDB-X 为了方便用户体验,提供了免费的实验环境,您可以在实验环境里体验 PolarDB-X 的安装部署和各种内核特性。除了免费的实验,PolarDB-X 也提供免费的视频课程,手把手教你玩转 PolarDB-X 分布式数据库。

本期实验将指导您如何对PolarDB-X的存储节点发起备库重搭

本期免费实验地址

本期教学视频地址


前置准备

假设已经根据前一讲内容完成了PolarDB-X的搭建部署,使用PolarDB-X Operator安装PolarDB-X,并且可以成功链接上PolarDB-X数据库。

实践教程之如何快速安装部署PolarDB-X


准备业务数据

本步骤将指导您如何准备业务数据。

1.设置本地转发。

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

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

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

cat forward.log

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

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

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

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

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

实践教程之如何对PolarDB-X的存储节点发起备库重搭_返回结果_02

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。

实践教程之如何对PolarDB-X的存储节点发起备库重搭_返回结果_03

3.破坏数据文件。

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

rm -fR /data/mysql/data

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

myc  shutdown;

3.3 查看该Pod的状态。

在实验页面,单机右上角的

实践教程之如何对PolarDB-X的存储节点发起备库重搭_返回结果_04

图标,创建新的终端。在新的终端中,执行如下命令,切换到galaxykube用户。

su galaxykube cd

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

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

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

实践教程之如何对PolarDB-X的存储节点发起备库重搭_返回结果_05


发起备库重搭

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

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名称。

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


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
【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月08日 0

暂无评论

推荐阅读
  xaeiTka4h8LY   2024年05月31日   32   0   0 MySQL索引
  xaeiTka4h8LY   2024年05月31日   44   0   0 MySQLSQL
  xaeiTka4h8LY   2024年05月31日   28   0   0 字段MySQL
  xaeiTka4h8LY   2024年05月31日   38   0   0 MySQL数据库
  xaeiTka4h8LY   2024年05月17日   46   0   0 MySQLgithub
  xaeiTka4h8LY   2024年05月17日   37   0   0 MySQL数据库
vayqoWYwGSbP