YashanDB Feature Test
YashanDB Feature Test
1. 闪回功能测试
1.1 闪回查询
-- 创建测试表 |
1.2 表闪回
-- 创建测试表 |
1.3 DROP 闪回
前置条件:回收站功能开启(默认开启)
测试过程:
-- 创建测试表 |
1.4 TRUNCATE 闪回
前置条件:回收站功能开启
测试过程:
-- 创建测试表 |
1.5 全库闪回
前置条件:已开启全库闪回功能
测试过程:
-- 开启全库闪回 |
2. 备份恢复功能测试
2.1 SQL 命令全量备份
前置条件:数据库已开启归档模式
2.1.1 备份
- 全量备份:
-- 不指定路径,在yasdb_data的backup目录下自动生成备份文件目录 |
- 并行备份:
BACKUP DATABASE FULL FORMAT '/home/yashan/backup/full_p8' PARALLELISM 8; |
- 备份加密:
BACKUP DATABASE ENCRYPTION AES256 IDENTIFIED BY test2025 FORMAT '/home/yashan/backup/full_pwd'; |
- 备份压缩:
BACKUP DATABASE COMPRESSION ALGORITHM ZSTD HIGH; |
- 增量备份:
-- LEVEL 0 增量备份 |
2.1.2 恢复
- 全量恢复:
-- 步骤 1:创建测试表并插入数据 |
- 基于 TAG 增量备份的连续恢复:
-- 步骤 1:执行增量备份 |
- 指定时间点恢复(PITR):
-- 步骤 1:准备测试数据并备份 |
2.2 工具备份与恢复
--创建测试表 |
2.3 exp/imp 工具
# 1. 完整数据库导出 |
4. 安全性测试
4.1 密码策略
测试过程:
1. 系统用户密码设置 |
4.3 审计日志
测试过程:
-- 1.启用安全审计,设置审计策略 |
4.3 三权分立
测试过程:
-- 1. 创建3个用户并分别授权,创建测试表 |
4.4 IP 黑白名单
测试过程:
1.配置黑名单a |
5. 一主一备高可用故障演练测试
5.0 准备
5.0.1 配置开机自启动
- 配置启停脚本
sudo sh -c "cat > /usr/local/bin/yashan_monit.sh" <<'EOF' |
- 配置启停服务
sudo sh -c "cat > /etc/systemd/system/yashan_monit.service" << 'EOF' |
- 启用服务
sudo systemctl daemon-reload |
- 查看服务的状态
sudo systemctl status yashan_monit |
5.1 主节点实例 kill 故障
| 测试专项 | 高可用测试 kill 故障 |
|---|---|
| 用例描述 | Kill 主节点实例 |
| 预置条件 | 一主一备已部署 备节点心跳超时时间设置为 2 秒 Tpcc 测试工具已安装,加载 tpcc 数据完成 |
| 操作步骤 | 【步骤 1】客户端执行 tpcc 测试 10 分钟:./runBenchmark.sh props.yashandb【步骤 2】第 5 分钟时在主节点执行注入故障:kill -9 yasdb 进程 (记录故障注入时间)。 date;kill -9 pid【步骤 3】tpcc 结束查看主备切换完成时间: yasboot election event show -c yashandb【步骤 4】计算 RTO 时间 = 切换完成时间 - 故障注入时间 |
| 预期结果 | RTO < 30 秒。 |
| 实际结果 | [待补充实际结果] |
5.2 备节点实例 kill 故障
| 测试专项 | 高可用测试 kill 故障 |
|---|---|
| 用例描述 | Kill 备节点实例 |
| 预置条件 | 一主一备已部署 备节点心跳超时时间设置为 2 秒 Tpcc 测试工具已安装,加载 tpcc 数据完成 |
| 操作步骤 | 【步骤 1】客户端执行 tpcc 测试 10 分钟:./runBenchmark.sh props.yashandb【步骤 2】第 5 分钟时在备节点执行注入故障:kill -9 yasdb 进程。 date;kill -9 pid |
| 预期结果 | 1、主节点正常,业务不报错 2、备节点自动拉起实例,恢复正常 |
| 实际结果 | 1、主节点正常,业务不报错 2、备节点自动拉起实例,恢复正常 [插入实际结果截图] |
5.3 仲裁节点 kill 故障
| 测试专项 | 高可用测试 kill 故障 |
|---|---|
| 用例描述 | Kill 仲裁节点进程 |
| 预置条件 | 一主一备已部署 备节点心跳超时时间设置为 2 秒 Tpcc 测试工具已安装,加载 tpcc 数据完成 |
| 操作步骤 | 【步骤 1】客户端执行 tpcc 测试 10 分钟:./runBenchmark.sh props.yashandb【步骤 2】第 5 分钟时在仲裁节点执行注入故障:kill -9 yasom 进程。 date;kill -9 pid |
| 预期结果 | 1、主备节点正常,业务不报错 2、仲裁节点自动拉起 yasom 服务,恢复正常 |
| 实际结果 | 1、主备节点正常,业务不报错 2、仲裁节点自动拉起 yasom 服务,恢复正常 [插入实际结果截图] |
5.4 主节点实例 reboot 故障
| 测试专项 | 高可用测试 reboot 故障 |
|---|---|
| 用例描述 | 主节点实例 reboot |
| 预置条件 | 一主一备已部署 备节点心跳超时时间设置为 2 秒 Tpcc 测试工具已安装,加载 tpcc 数据完成 已开启开机自启配置 |
| 操作步骤 | 【步骤 1】客户端执行 tpcc 测试 10 分钟:./runBenchmark.sh props.yashandb【步骤 2】第 5 分钟时在主集群实例 1 节点执行注入故障: date;sudo reboot【步骤 3】tpcc 结束查看主备切换完成时间: yasboot election event show -c yashandb【步骤 4】计算 RTO 时间 = 切换完成时间 - 故障注入时间 |
| 预期结果 | 机器重启后自动恢复实例 1 成功。 |
| 实际结果 | RTO=139 秒(TPMC 压力为 10 万),机器重启后自动恢复实例 1 成功。 [插入实际结果截图] |
5.5 主备实例 reboot 故障
| 测试专项 | 高可用测试 reboot 故障 |
|---|---|
| 用例描述 | 主备所有节点 reboot |
| 预置条件 | 一主一备已部署 备节点心跳超时时间设置为 2 秒 Tpcc 测试工具已安装,加载 tpcc 数据完成 已开启开机自启配置 |
| 操作步骤 | 【步骤 1】客户端执行 tpcc 测试 10 分钟:./runBenchmark.sh props.yashandb【步骤 2】第 5 分钟时注入故障:(记录故障注入时间)。在主、备集群所有节点执行 date;sudo reboot |
| 预期结果 | 业务报错,重启后自动拉起集群,恢复正常 |
| 实际结果 | 业务报错,重启完成后自动拉起集群,主备角色不变。 [插入实际结果截图] |
5.6 仲裁节点 reboot 故障
| 测试专项 | 高可用测试 reboot 故障 |
|---|---|
| 用例描述 | 仲裁节点 reboot |
| 预置条件 | 一主一备已部署 备节点心跳超时时间设置为 2 秒 Tpcc 测试工具已安装,加载 tpcc 数据完成 已开启开机自启配置 |
| 操作步骤 | 【步骤 1】客户端执行 tpcc 测试 10 分钟:./runBenchmark.sh props.yashandb【步骤 2】第 5 分钟时注入故障:(记录故障注入时间)。在仲裁节点执行 date;sudo reboot |
| 预期结果 | 1、主备节点正常,业务不报错 2、仲裁节点重启后自动拉起 yasom 服务,恢复正常 |
| 实际结果 | 1、主备节点正常,业务不报错 2、仲裁节点重启后自动拉起 yasom 服务,恢复正常 [插入实际结果截图] |
5.7 主节点实例网络故障
| 测试专项 | 高可用测试网卡故障 |
|---|---|
| 用例描述 | 主节点网卡故障 |
| 预置条件 | 一主一备已部署 Tpcc 测试工具已安装,加载 tpcc 数据完成 已开启开机自启配置 心跳超时时间设置为 9 秒 |
| 操作步骤 | 【步骤 1】客户端执行 tpcc 测试 10 分钟:./runBenchmark.sh props.yashandb【步骤 2】第 5 分钟时在主节点执行注入故障: date;sudo ifdown 网卡名故障持续 5、20 秒后取消: sleep 20;sudo ifup 网卡名【步骤 3】tpcc 结束查看主备切换完成时间: yasboot election event show -c yashandb【步骤 4】计算 RTO 时间 = 切换完成时间 - 故障注入时间 |
| 预期结果 | 心跳配置 9 秒。故障持续 5 秒取消,数据库正常;故障持续 20 秒,触发 RTO |
| 实际结果 | 故障持续 5 秒取消,集群正常; [插入实际结果截图] 故障持续 20 秒,触发 RTO 耗时 13 秒,其中有 9 秒是心跳检测时间。 [插入实际结果截图] |
All articles on this blog are licensed under CC BY-NC-SA 4.0 unless otherwise stated.