ref tikv/pd#9707 - Updated store stats collection to skip DFS stat items with zero written bytes and write requests. - Added logging of collection duration and item count. - Expanded unit tests to cover filtering of zero-value DFS stat entries and verify aggregation correctness. Signed-off-by: JmPotato <github@ipotato.me> |
||
|---|---|---|
| .github | ||
| client | ||
| cmd/pd-server | ||
| conf | ||
| docs | ||
| metrics | ||
| pkg | ||
| plugin/scheduler_example | ||
| scripts | ||
| server | ||
| tests | ||
| tools | ||
| .deepsource.toml | ||
| .gitignore | ||
| .golangci.yml | ||
| CHANGELOG.md | ||
| CONTRIBUTING.md | ||
| Dockerfile | ||
| LICENSE | ||
| Makefile | ||
| OWNERS | ||
| OWNERS_ALIASES | ||
| README.md | ||
| codecov.yml | ||
| errors.toml | ||
| go.mod | ||
| go.sum | ||
| pd.code-workspace | ||
| tools.go | ||
README.md
PD
PD is the abbreviation for Placement Driver. It manages and schedules TiKV clusters.
PD supports fault-tolerance by embedding etcd.
If you're interested in contributing to PD, see CONTRIBUTING.md. For more contributing information about where to start, click on the contributor icon above.
Build
- Make sure Go (version 1.23) is installed.
- Use
maketo install PD.pd-serverwill be installed in thebindirectory.
Usage
PD can be configured using command-line flags. For more information, see PD Configuration Flags.
Single node with default ports
You can run pd-server directly on your local machine. If you want to connect to PD from outside, you can let PD listen on the host IP.
# Set HOST_IP to the address you want to listen on
export HOST_IP="192.168.199.105"
pd-server --name="pd" \
--data-dir="pd" \
--client-urls="http://${HOST_IP}:2379" \
--peer-urls="http://${HOST_IP}:2380" \
--log-file=pd.log
Using curl to view PD members:
curl http://${HOST_IP}:2379/pd/api/v1/members
{
"members": [
{
"name": "pd",
"member_id": 15980934438217023866,
"peer_urls": [
"http://192.168.199.105:2380"
],
"client_urls": [
"http://192.168.199.105:2379"
],
"deploy_path": "/",
"binary_version": "v6.1.3",
"git_hash": "1a4e975892512a97fb0e5b45c9be69aa76148793"
}
]
}
You can also use httpie to call the API:
http http://${HOST_IP}:2379/pd/api/v1/members
Access-Control-Allow-Headers: accept, content-type, authorization
Access-Control-Allow-Methods: POST, GET, OPTIONS, PUT, DELETE
Access-Control-Allow-Origin: *
Content-Length: 1003
Content-Type: application/json; charset=UTF-8
Date: Mon, 12 Dec 2022 13:46:33 GMT
{
"members": [
{
"name": "pd",
"member_id": 15980934438217023866,
"peer_urls": [
"http://192.168.199.105:2380"
],
"client_urls": [
"http://192.168.199.105:2379"
],
"deploy_path": "/",
"binary_version": "v6.1.3",
"git_hash": "1a4e975892512a97fb0e5b45c9be69aa76148793"
}
]
}
Docker
You can choose one of the following methods to get a PD image:
-
Build locally:
docker build -t pingcap/pd . -
Pull from Docker Hub:
docker pull pingcap/pd
Then you can run a single node using the following command:
# Set HOST_IP to the address you want to listen on
export HOST_IP="192.168.199.105"
docker run -d -p 2379:2379 -p 2380:2380 --name pd pingcap/pd \
--name="pd" \
--data-dir="pd" \
--client-urls="http://0.0.0.0:2379" \
--advertise-client-urls="http://${HOST_IP}:2379" \
--peer-urls="http://0.0.0.0:2380" \
--advertise-peer-urls="http://${HOST_IP}:2380" \
--log-file=pd.log
Cluster
As a component of the TiKV project, PD needs to run with TiKV to work. The cluster can also include TiDB to provide SQL services. For detailed instructions to deploy a cluster, refer to Deploy a TiDB Cluster Using TiUP or TiDB on Kubernetes Documentation.
