Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

tools: add TiDB Controller guide #432

Merged
merged 3 commits into from
Apr 25, 2018
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -107,6 +107,7 @@
- [Loader User Guide](tools/loader.md)
- [TiDB-Binlog User Guide](tools/tidb-binlog-kafka.md)
- [PD Control User Guide](tools/pd-control.md)
- [TiDB Controller User Guide](tools/tidb-controller.md)
+ The TiDB Connector for Spark
- [Quick Start Guide](tispark/tispark-quick-start-guide.md)
- [User Guide](tispark/tispark-user-guide.md)
Expand Down
110 changes: 110 additions & 0 deletions tools/tidb-controller.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,110 @@
---
title: TiDB Controller User Guide
category: tools
---

# TiDB Controller User Guide

TiDB Controller is a command line tool of TiDB, usually used to obtain the status information of TiDB in tuning.
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

tuning usually means that it could make the database run faster or something. But tidb-ctl is a debug tool for most common scenes.


## Compile from source code

- Compilation environment requirement: [Go](https://golang.org/) Version 1.7 or later
- Compilation procedures: Go the root directory of the [TiDB Controller project](https://github.com/pingcap/tidb-ctl), use the `make` command to compile, and generate `tidb-ctl`.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Go to the root directory

- Compilation documentation: you can find the help files in the `doc` directory; if the help files are lost or you want to update them, use the `make doc` command to generate the help files.

## Usage introduction

The usage of `tidb-ctl` consists of command (including subcommand), option, and flag.

- command: characters without `-` or `--`
- option: characters with `-` or `--`
- flag: characters exactly following the command or option, passing value to the command or option

Usage example: `tidb-ctl schema in mysql -n db`

- `schema`: the command
- `in`: the subcommand of schema
- `mysql`: the flag of `in`
- `-n`: the option
- `db`: the flag of `-n`

### Get help

Use `tidb-ctl -h/--help` to get the help information. `tidb-ctl` consists of multiple layers of commands. You can use `-h/--help` to get the help information of `tidb-ctl` and all other subcommands.

### Connect

```
tidb-ctl -H/--host {TiDB service address} -P/--port {TiDB service port}
```

If you do not add an address or a port, the default value is used. The default address is `127.0.0.1` (service address must be the IP address); the default port is `10080`. Connection options are top-level options and apply to all of the following commands.

Currently, TiDB Controller can obtain four categories of information using the following four commands:

- `tidb-ctl mvcc`: MVCC information
- `tidb-ctl region`: Region information
- `tidb-ctl schema`: Schema information
- `tidb-ctl table`: Table information

### Examples

The following example shows how to obtain the schema information:

Use `tidb-ctl schema -h` to get the help information of the subcommands. `schema` has two subcommands: `in` and `tid`.

- `in` is used to obtain the table structure of all tables in the database through the database name.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

table structure -> table schema?

- `tid` is used to obtain the table structure through the unique `table_id` in the whole database.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

ditto


#### The `in` command

You can also use `tidb-ctl schema in -h/--help` to get the help information of the `in` subcommand.

##### Basic usage

```
tidb-ctl schema in {database name}
```

For example, `tidb-ctl schema in mysql` returns the following result:

```text
[
{
"id": 13,
"name": {
"O": "columns_priv",
"L": "columns_priv"
},
...
"update_timestamp": 399494726837600268,
"ShardRowIDBits": 0,
"Partition": null
}
]
```

The result is long and displayed in JSON. The above result is a truncated one.

- If you want to specify the table name, use `tidb-ctl schema in {database} -n {table name}` to filter.

For example, `tidb-ctl schema in mysql -n db` returns the table structure of the `db` table in the `mysql` database:
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

ditto


```text
{
"id": 9,
"name": {
"O": "db",
"L": "db"
},
...
"Partition": null
}
```

The above result is a truncated one, too.

- If you want to specify the server name, use the `-H -P` option.
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Use server address or sth is better. This tool does not support to use the server name directly. Only IP + port is available.


For example, `tidb-ctl -H 127.0.0.1 -P 10080 schema in mysql -n db`.