3.test-command-group.md 19.0 KB
Newer Older
F
v1.4.0  
frf12 已提交
1 2 3 4
# 测试命令组

OBD 有多级命令,您可以在每个层级中使用 `-h/--help` 选项查看子命令的帮助信息。本文将介绍 OBD 中测试命令的使用。

羽飞's avatar
羽飞 已提交
5
## obd test mysqltest
F
v1.4.0  
frf12 已提交
6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112

使用该命令可对 OcecanBase 数据库或 ODP 组件的指定节点执行 mysqltest。

执行 mysqltest 需要 OBClient,请先确认您已安装 OBClient。

```shell
obd test mysqltest <deploy name> [--test-set <test-set>] [flags]
```

参数 `deploy name` 为集群名称,一个集群只能有一个名称,且集群名称不能重复。

选项说明见下表:

|       选项名        | 是否必选 |  数据类型  |           默认值           |                                                     说明                                                     |
|------------------|------|--------|-------------------------|------------------------------------------------------------------------------------------------------------|
| -c/--component   | 否    | string | 默认为空                    | 待测试的组件名。候选项为 `oceanbase-ce``obproxy`。为空时,按 `obproxy``oceanbase-ce` 的顺序进行检查。检查到组件存在则不再遍历,使用命中的组件进行后续测试。 |
| --test-server    | 否    | string | 默指定的组件下服务器中的第一个节点       | 必须是指定的组件下的某个节点名。                                                                                           |
| --user           | 否    | string | root                    | 执行测试的用户名。                                                                                                  |
| --password       | 否    | string | 默认为空                    | 执行测试的用户密码。                                                                                                 |
| --mysqltest-bin  | 否    | string | mysqltest               | mysqltest 二进制文件路径。                                                                                         |
| --obclient-bin   | 否    | string | obclient                | OBClient 二进制文件路径。                                                                                          |
| --test-dir       | 否    | string | ./mysql_test/t          | mysqltest 所需的 `test-file` 存放的目录。test 文件找不到时会尝试在 OBD 内置中查找。                                                 |
| --result-dir     | 否    | string | ./mysql_test/r          | mysqltest 所需的 `result-file` 存放的目录。result 文件找不到时会尝试在 OBD 内置中查找。                                             |
| --tmp-dir        | 否    | string | ./tmp                   | 为 mysqltest tmpdir 选项。                                                                                     |
| --var-dir        | 否    | string | ./var                   | 将在该目录下创建 log 目录并作为 logdir 选项传入 mysqltest。                                                                  |
| --test-set       | 否    | string | 无                       | test case 数组。多个数组使用英文逗号 `,` 间隔。                                                                            |
| --test-pattern   | 否    | string | 无                       | test 文件名匹配的正则表达式。所有匹配表达式的 case 将覆盖 `test-set` 选项。                                                          |
| --suite          | 否    | string | 无                       | suite 数组。一个 suite 下包含多个 test。可以使用英文逗号 `,` 间隔。使用该选项后 `--test-pattern``--test-set` 都将失效。                  |
| --suite-dir      | 否    | string | ./mysql_test/test_suite | 存放 suite 目录的目录。suite 目录找不到时会尝试在 OBD 内置中查找。                                                                 |
| --all            | 否    | bool   | false                   | 执行 `--suite-dir` 下全部的 case。存放 suite 目录的目录。                                                                 |
| --need-init      | 否    | bool   | false                   | 执行 init sql 文件。一个新的集群要执行 mysqltest 前可能需要执行一些初始化文件,比如创建 case 所需要的账号和租户等。存放 suite 目录的目录。默认不开启。               |
| --init-sql-dir   | 否    | string | ./                      | init sql 文件所在目录。sql 文件找不到时会尝试在 OBD 内置中查找。                                                                  |
| --init-sql-files | 否    | string |                         | 需要 init 时执行的 init sql 文件数组。英文逗号 `,` 间隔。不填时,如果需要 init,OBD 会根据集群配置执行内置的 init。                                |
| --auto-retry     | 否    | bool   | false                   | 失败时自动重部署集群进行重试。                                                                                            |

## obd test sysbench

使用该命令可对 OcecanBase 数据库或 ODP 组件的指定节点执行 Sysbench。

执行 Sysbench 需要 OBClient 和 ob-sysbench,请确认您已安装 OBClient 和 ob-sysbench。

```shell
obd test sysbench <deploy name> [flags]
```

参数 `deploy name` 为集群名称,一个集群只能有一个名称,且集群名称不能重复。

选项说明见下表:

|          选项名          | 是否必选 |  数据类型  |             默认值              |                                                     说明                                                     |
|-----------------------|------|--------|------------------------------|------------------------------------------------------------------------------------------------------------|
| --component           | 否    | string | 默认为空                      | 待测试的组件名。候选项为 `oceanbase-ce``obproxy`。为空时,按 `obproxy``oceanbase-ce` 的顺序进行检查。检查到组件存在则不再遍历,使用命中的组件进行后续测试。 |
| --test-server         | 否    | string | 默指定的组件下服务器中的第一个节点 | 必须是指定的组件下的某个节点名。                                                                                           |
| --user                | 否    | string | root                         | 执行测试的用户名。                                                                                                  |
| --password            | 否    | string | 默认为空                      | 执行测试的用户密码。                                                                                                 |
| --tenant              | 否    | string | test                         | 执行测试的租户名。                                                                                                  |
| --database            | 否    | string | test                         | 执行测试的数据库。                                                                                                  |
| --obclient-bin        | 否    | string | obclient                     | OBClient 二进制文件路径。                                                                                          |
| --sysbench-bin        | 否    | string | sysbench                     | sysbench 二进制文件路径。                                                                                          |
| --script-name         | 否    | string | point_select.lua             | 要执行的 sysbench 脚本名。                                                                                         |
| --sysbench-script-dir | 否    | string | /usr/sysbench/share/sysbench | sysbench 脚本存放目录。                                                                                           |
| --tables              | 否    | int    | 30                           | 初始化表的数量。                                                                                                   |
| --table-size          | 否    | int    | 20000                        | 每张表初始化的数据数量。                                                                                               |
| --threads             | 否    | int    | 16                           | 启动的线程数量。                                                                                                   |
| --time                | 否    | int    | 60                           | 运行时间。设置为 `0` 时表示不限制时间。                                                                                     |
| --interval            | 否    | int    | 10                           | 运行期间日志,单位:为秒。                                                                                              |
| --events              | 否    | int    | 0                            | 最大请求数量,定义数量后可以不需要 `--time` 选项。                                                                             |
| --rand-type           | 否    | string | 空                            | 访问数据时使用的随机生成函数。取值可以为 special、uniform、gaussian 或 pareto。默认值为 `special`, 早期值为 `uniform`。                    |
| ---skip-trx           | 否    | string | 空                            | 在只读测试中打开或关闭事务。                                                                                             |
| -O/--optimization     | 否    | int    | 1                            | 自动调优等级。为 `0` 时关闭。                                                                                          |

## obd test tpch

使用该命令可对 OcecanBase 数据库或 ODP 组件的指定节点执行 TPC-H。

执行 TPC-H 需要 OBClient 和 obtpch,请确认您已安装 OBClient 和 obtpch。

TPC-H 需要指定一台 OceanBase 目标服务器作为执行对象。在执行 TPC-H 测试前,OBD 会将测试需要的数据文件传输到指定机器的指定目录下,这些文件可能会比较大,请确保机器上足够的磁盘空间。 当然您也可以提前在目标机器上准备好数据文件,再通过 `--dt/--disable-transfer` 选项关闭传输。

```shell
obd test tpch <deploy name> [flags]
```

参数 `deploy name` 为集群名称,一个集群只能有一个名称,且集群名称不能重复。

选项说明见下表:

|           选项名           | 是否必选 |  数据类型  |               默认值                |                                            说明                                            |
|-------------------------|------|--------|----------------------------------|------------------------------------------------------------------------------------------|
| --test-server           | 否    | string | 默指定的组件下服务器中的第一个节点                | 必须是指定的组件下的某个节点名。                                                                         |
| --user                  | 否    | string | root                             | 执行测试的用户名。                                                                                |
| --password              | 否    | string | 默认为空                             | 执行测试的用户密码。                                                                               |
| --tenant                | 否    | string | test                             | 执行测试的租户名,请确保该租户已经创建。                                                                                |
| --database              | 否    | string | test                             | 执行测试的数据库,如没有创建,测试程序会自动创建。                                                                                |
| --obclient-bin          | 否    | string | obclient                         | OBClient 二进制文件路径。                                                                        |
| --dbgen-bin             | 否    | string | /usr/local/tpc-h-tools/bin/dbgen | dbgen 二进制文件路径。                                                                           |
| --dss-config            | 否    | string | /usr/local/tpc-h-tools/          | `dists.dss` 所在目录。                                                                        |
| -s/--scale-factor       | 否    | int    | 1                                | 自动生成测试数据的规模,单位:G。                                                                        |
| -tmp-dir                | 否    | string | ./tmp                            | 执行 tpch 时的临时目录。自动生成的测试数据,自动调优的 sql 文件,执行测试 sql 的日志文件等都会存在这里。                             |
| --ddl-path              | 否    | string | 默认为空                             | ddl 文件路径或目录。为空时,OBD 会使用自带的 ddl 文件。                                                       |
| --tbl-path              | 否    | string | 默认为空                             | tbl 文件路径或目录。为空时,使用 dbgen 生成测试数据。                                                         |
| --sql-path              | 否    | string | 默认为空                             | sql 文件路径或目录。为空时,OBD 会使用自带的 sql 文件。                                                       |
| --remote-tbl-dir        | 否    | string | 默认为空                             | 目标 OBServer 上存放 tbl 的目录,绝对路径,请保证 OBServer 的启动用户对该目录有读写权限。在不开启 `--test-only` 的情况下该选项为必填项。 |
| --test-only             | 否    | bool   | false                            | 不执行初始化,仅执行测试 SQL。                                                                        |
| --dt/--disable-transfer | 否    | bool   | false                            | 禁用传输。开启后将不会把本地 tbl 传输到远程 `remote-tbl-dir` 下,而是直接使用目标机器 `remote-tbl-dir` 下的 `tbl` 文件。     |
| -O/--optimization       | 否    | int    | 1                                | 自动调优等级。为 `0` 时关闭。                                                                        |

羽飞's avatar
羽飞 已提交
113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139
## obd test tpcc
使用该命令可对 OcecanBase 数据库或 ODP 组件的指定节点执行 TPC-C。

执行 TPC-H 需要 OBClient 、obtpcc和jdk,请确认您已安装。如果您的系统可以使用yum管理包,可以执行下面的命令安装这几个依赖:

```bash
yum install -y obtpcc obclient java-1.8.0-openjdk.x86_64
```

obd 默认使用test租户做测试,如果要使用指定租户做测试,可以使用--tenant参数指定。或者使用下面的命令创建 test 租户:

```bash
obd cluster tenant create <deploy name>
```

在执行 TPC-C 测试前,OBD 会将测试需要的数据文件传输到指定机器的指定目录下,这些文件可能会比较大,请确保机器上足够的磁盘空间。 如果是要多次运行测试,可以在第2次和之后

```shell
obd test tpcc <deploy name> [flags]
```

参数 `deploy name` 为集群名称,一个集群只能有一个名称,且集群名称不能重复。

选项说明见下表:

| 选项名                  | 是否必选 | 数据类型 | 默认值                             | 说明                                                         |
| ----------------------- | -------- | -------- | ---------------------------------- | ------------------------------------------------------------ |
羽飞's avatar
羽飞 已提交
140
| --component   | 否    | string | 默认为空                    | 待测试的组件名。候选项为 `oceanbase-ce``obproxy`。为空时,按 `obproxy``oceanbase-ce` 的顺序进行检查。检查到组件存在则不再遍历,使用命中的组件进行后续测试。 |
羽飞's avatar
羽飞 已提交
141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158
| --test-server           | 否       | string   | 默指定的组件下服务器中的第一个节点 | 必须是指定的组件下的某个节点名。                             |
| --user                  | 否       | string   | root                               | 执行测试的用户名。                                           |
| --password              | 否       | string   | 默认为空                           | 执行测试的用户密码。                                         |
| -t/--tenant             | 否       | string   | test                               | 执行测试的租户名,请确保该租户已经创建。                     |
| --database              | 否       | string   | test                               | 执行测试的数据库,如没有创建,测试程序会自动创建。           |
| --obclient-bin          | 否       | string   | obclient                           | OBClient 二进制文件路径。                                    |
| --java-bin          | 否       | string   | java                           | Java 二进制文件路径。                                    |
| --tmp-dir    | 否       | string   | ./tmp | 运行TPC-C 测试使用的临时目录。                        |
| --bmsql-dir | 否       | string   | 系统目录        | BenchmarkSQL 的目录。                      |
| --bmsql-jar | 否       | string   | 系统目录                              | BenchmarkSQL Jar 路径。       |
| --bmsql-libs    | 否       | string   | 系统目录                          | BenchmarkSQL lib 路径。 |
| --warehouses  | 否       | int | 10                         | warehouses 的数量。 |
| --load-workers | 否       | int | 默认为空                           | 加载数据的worker数量。 |
| --terminals   | 否       | int | 默认为空                           | terminal 的个数。 |
| --run-mins | 否       | int | 10                         | 指定运行时间,单位分钟。 |
| --test-only             | 否       | bool     | false                              | 不执行初始化,仅执行测试 SQL。                               |
| -O/--optimization       | 否       | int      | 1                                  | 自动调优等级。为 `0` 时关闭;1 表示优化一些不需要重启的参数;2 调优所有参数并且在必要时重启。 |

F
v1.4.0  
frf12 已提交
159 160
## 备注

羽飞's avatar
羽飞 已提交
161
请先安装 ob-sysbench、obtpch 和 obtpcc,并保证系统可以联网。
F
v1.4.0  
frf12 已提交
162 163 164 165 166

```shell
sudo yum install -y yum-utils
sudo yum-config-manager --add-repo https://mirrors.aliyun.com/oceanbase/OceanBase.repo
sudo yum install -y ob-sysbench
羽飞's avatar
羽飞 已提交
167 168
sudo yum install -y obtpch
sudo yum install -y obtpcc
F
v1.4.0  
frf12 已提交
169 170 171 172 173 174 175
```

因为 obtpch 安装包有个小 bug,详情参考 <https://github.com/oceanbase/obdeploy/issues/88> (下个版本会 fix 掉),建议做一个软链接。

```shell
ln -s /usr/tpc-h-tools/tpc-h-tools/ /usr/local/
```