3.test-command-group.md 18.7 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 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157
## 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` 为集群名称,一个集群只能有一个名称,且集群名称不能重复。

选项说明见下表:

| 选项名                  | 是否必选 | 数据类型 | 默认值                             | 说明                                                         |
| ----------------------- | -------- | -------- | ---------------------------------- | ------------------------------------------------------------ |
| --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 已提交
158 159
## 备注

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

```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
羽飞 已提交
166 167
sudo yum install -y obtpch
sudo yum install -y obtpcc
F
v1.4.0  
frf12 已提交
168 169 170 171 172 173 174
```

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

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