TiDB Docker 部署方案

    阅读本章前,请先确保阅读 TiDB 整体架构 及 。

    Docker 可以方便地在 Linux / Mac OS / Windows 平台安装,安装方法请参考 Docker 官方文档

    拉取 TiDB 的 Docker 镜像

    部署 TiDB 集群主要包括 3 个服务组件:

    • TiDB
    • TiKV
    • PD

    对应的最新 Docker 镜像可以通过 Docker 官方镜像仓库 获取:

    部署一个多节点集群

    登录 host1 执行:

    1. -p 2379:2379 \
    2. -p 2380:2380 \
    3. -v /etc/localtime:/etc/localtime:ro \
    4. -v /data:/data \
    5. pingcap/pd:latest \
    6. --name="pd1" \
    7. --data-dir="/data/pd1" \
    8. --client-urls="http://0.0.0.0:2379" \
    9. --advertise-client-urls="http://192.168.1.101:2379" \
    10. --peer-urls="http://0.0.0.0:2380" \
    11. --advertise-peer-urls="http://192.168.1.101:2380" \
    12. --initial-cluster="pd1=http://192.168.1.101:2380,pd2=http://192.168.1.102:2380,pd3=http://192.168.1.103:2380"

    登录 host2 执行:

    1. docker run -d --name pd2 \
    2. -p 2379:2379 \
    3. -p 2380:2380 \
    4. -v /etc/localtime:/etc/localtime:ro \
    5. pingcap/pd:latest \
    6. --name="pd2" \
    7. --data-dir="/data/pd2" \
    8. --client-urls="http://0.0.0.0:2379" \
    9. --advertise-client-urls="http://192.168.1.102:2379" \
    10. --peer-urls="http://0.0.0.0:2380" \
    11. --advertise-peer-urls="http://192.168.1.102:2380" \
    12. --initial-cluster="pd1=http://192.168.1.101:2380,pd2=http://192.168.1.102:2380,pd3=http://192.168.1.103:2380"

    登录 host3 执行:

    启动 TiKV

    登录 host4 执行:

    1. docker run -d --name tikv1 \
    2. --ulimit nofile=1000000:1000000 \
    3. -v /etc/localtime:/etc/localtime:ro \
    4. -v /data:/data \
    5. pingcap/tikv:latest \
    6. --addr="0.0.0.0:20160" \
    7. --advertise-addr="192.168.1.104:20160" \
    8. --data-dir="/data/tikv1" \
    9. --pd="192.168.1.101:2379,192.168.1.102:2379,192.168.1.103:2379"
    1. docker run -d --name tikv2 \
    2. -p 20160:20160 \
    3. --ulimit nofile=1000000:1000000 \
    4. -v /etc/localtime:/etc/localtime:ro \
    5. -v /data:/data \
    6. pingcap/tikv:latest \
    7. --addr="0.0.0.0:20160" \
    8. --advertise-addr="192.168.1.105:20160" \
    9. --data-dir="/data/tikv2" \
    10. --pd="192.168.1.101:2379,192.168.1.102:2379,192.168.1.103:2379"

    登录 host6 执行:

    登录 host1 执行:

    1. docker run -d --name tidb \
    2. -p 10080:10080 \
    3. -v /etc/localtime:/etc/localtime:ro \
    4. pingcap/tidb:latest \
    5. --store=tikv \
    6. --path="192.168.1.101:2379,192.168.1.102:2379,192.168.1.103:2379"

    使用 MySQL 标准客户端连接 TiDB 测试

    登录 host1 并确保已安装 MySQL 命令行客户端,执行:

    1. $ mysql -h 127.0.0.1 -P 4000 -u root -D test
    2. +--------------------+
    3. | Database |
    4. +--------------------+
    5. | INFORMATION_SCHEMA |
    6. | PERFORMANCE_SCHEMA |
    7. | mysql |
    8. | test |
    9. +--------------------+
    10. 4 rows in set (0.00 sec)

    TiKV 和 PD 可以通过指定配置文件的方式来加载更加丰富的启动参数,用于性能调优。

    1. docker run -d --name pd1 \
    2. -p 2379:2379 \
    3. -p 2380:2380 \
    4. -v /etc/localtime:/etc/localtime:ro \
    5. -v /data:/data \
    6. -v /path/to/config/pd.toml:/pd.toml:ro \
    7. pingcap/pd:latest \
    8. --name="pd1" \
    9. --data-dir="/data/pd1" \
    10. --client-urls="http://0.0.0.0:2379" \
    11. --advertise-client-urls="http://192.168.1.101:2379" \
    12. --peer-urls="http://0.0.0.0:2380" \
    13. --advertise-peer-urls="http://192.168.1.101:2380" \
    14. --config="/pd.toml"