tidb数据库3主机分布式集群docker-compose离线部署

TiDB分布式集群离线部署指南

#3台机器,每台部署1pd,1tikv,1tidb;共3pd,3tikv,3tidb

#外加nginx负载均衡单节点dockers-compose部署

#tidb的3台机器192.168.1.41;192.168.1.42;192.168.1.43

#nginx单节点192.168.1.24

 

#首先自行初始化服务器关闭防火墙、SElinux、设置时间同步等,云服务器可以直接开始部署

#部署docker和dockers-compose,本次选择docker-27.3.1和docker-compose-2.29.7

#下载地址:https://download.docker.com/linux/static/stable/x86_64/

 

#上传docker-27.3.1.tgz到/opt下

cd /opt && tar -xvf docker-27.3.1.tgz

 

#复制所有解压出来的文件进/usr/bin

cp /opt/docker/* /usr/bin/

vim /etc/systemd/system/docker.service

#复制写入下述配置

[Unit]

Description=Docker Application Container Engine

Documentation=https://docs.docker.com

After=network-online.target firewalld.service

Wants=network-online.target

[Service]

Type=notify

ExecStart=/usr/bin/dockerd

ExecReload=/bin/kill -s HUP $MAINPID

LimitNOFILE=infinity

LimitNPROC=infinity

TimeoutStartSec=0

Delegate=yes

KillMode=process

Restart=on-failure

StartLimitBurst=3

StartLimitInterval=60s

[Install]

WantedBy=multi-user.target

#完成写入配置后给予权限

chmod +x /etc/systemd/system/docker.service

systemctl daemon-reload

 

#启动并设置开机自启docker

systemctl enable docker --now

 

<think>我们参考用户提供的引用内容,特别是引用[2]和引用[3],它们提到了使用Docker部署TiDB集群的方法。用户的需求是在Linux系统中使用Docker部署TiDB镜像(单机版)。根据引用[3],我们可以通过运行一个TiDB容器,并连接到已有的TiKV节点(这里我们使用单机部署,所以可以同时部署一个TiKV节点,但注意引用[3]中指定了TiKV的地址,所以我们需要先部署一个TiKV服务,或者使用一个包含多个容器的部署方式(如docker-compose))。 然而,用户提到“单机版”,我们可以使用一个更简单的方式:使用官方提供的docker-compose方式部署一个单机集群(包含PD、TiKV、TiDB三个组件)。引用[2]中详细描述了使用docker-compose部署TiDB集群的步骤。 因此,我们将按照以下步骤进行: 1. 确保系统已安装DockerDocker Compose。 2. 下载tidb-docker-compose项目(包含docker-compose.yml配置文件)。 3. 使用docker-compose命令启动整个集群。 注意:引用[5]提到“基于docker-compose搭建tiDB集群”,但链接不完整,我们可以参考引用[2]中的步骤。 具体步骤: 步骤1:检查本地环境(DockerDocker Compose) 步骤2:下载tidb-docker-compose 步骤3:使用docker-compose启动集群 步骤4:访问TiDB集群 另外,引用[4]提到一个镜像中包含了所需环境,但TiDB官方已经提供了镜像,我们可以直接使用。 由于用户要求离线部署,但Docker部署通常需要在线下载镜像。如果需要在离线环境中部署,需要预先将镜像导出并在目标机器上导入。 但用户的问题中并没有明确要求完全离线,而是“Linux离线部署TIDB单机版”和后续“使用Docker部署TiDB镜像”。考虑到Docker部署通常需要镜像,如果用户确实需要在无网络环境下部署,我们需要额外说明如何离线准备镜像。 结合用户之前的问题(离线部署)和当前问题(使用Docker),我们给出两种方案: 方案一:在线环境使用Docker部署(简单) 方案二:离线环境使用Docker部署(需要提前准备镜像) 由于用户最初的问题要求离线部署,所以这里我们重点说明方案二(离线部署Docker镜像)。 步骤概览: 1. 在联网机器上下载TiDB相关的Docker镜像。 2. 将镜像保存为文件,传输到离线服务器。 3. 在离线服务器上加载镜像。 4. 使用docker-compose部署(需要提前准备好docker-compose.yml和配置)。 详细步骤: 一、准备工作(在联网机器上) 1. 安装DockerDocker Compose(如果尚未安装)。 2. 下载tidb-docker-compose项目: ``` git clone https://github.com/pingcap/tidb-docker-compose.git ``` 3. 进入项目目录,使用docker-compose拉取镜像(但不启动): ``` cd tidb-docker-compose docker-compose pull ``` 4. 将镜像保存为tar文件: ``` docker save -o tidb-images.tar $(docker images --format &#39;{{.Repository}}:{{.Tag}}&#39; | grep pingcap) ``` 或者单独保存每个镜像(如果上面的命令不能捕获所有镜像,可以手动列出): ``` docker save -o tidb-images.tar pingcap/tidb:latest pingcap/tikv:latest pingcap/pd:latest pingcap/tidb-binlog:latest pingcap/tidb-monitor-initializer:latest pingcap/ticdc:latest ``` 注意:具体镜像列表请查看tidb-docker-compose目录下的docker-compose.yml文件,里面定义了所有服务使用的镜像。 5. 将tidb-images.tar和tidb-docker-compose目录打包,传输到离线服务器。 二、离线服务器部署 1. 安装DockerDocker Compose(需要提前下载安装包进行离线安装,这里不展开)。 2. 加载镜像: ``` docker load -i tidb-images.tar ``` 3. 解压tidb-docker-compose目录,进入该目录。 4. 启动集群: ``` docker-compose up -d ``` 5. 验证部署- 检查容器状态:`docker-compose ps` - 连接TiDB:`mysql -h 127.0.0.1 -P 4000 -u root` 注意:默认情况下,TiDB服务监听4000端口,PD服务监听2379端口,Grafana监控在3000端口,可以通过这些端口访问。 三、在线部署(如果离线服务器可以临时联网,或者不需要离线) 步骤同上,但无需保存和加载镜像,直接使用docker-compose pull和docker-compose up -d即可。 另外,引用[3]提到单独运行TiDB容器并连接到已有的TiKV,但这里我们使用docker-compose部署整个集群(包含PD、TiKV、TiDB)更简单。 最后,根据引用[2],我们可以通过以下方式访问监控: - Grafana: http://服务器IP:3000 默认用户名密码 admin/admin。 - Spark Web UI: http://服务器IP:8080 - phpMyAdmin: http://服务器IP:8010(如果配置了的话,在tidb-docker-compose中默认没有,需要额外配置) 由于tidb-docker-compose项目已经包含了这些组件的配置,所以按照上述步骤部署后,可以直接访问。 注意:如果服务器开启了防火墙,需要开放相关端口(4000, 2379, 3000等)。 总结:我们推荐使用docker-compose方式部署单机版TiDB集群,方便快捷。 下面给出详细步骤:</think>### 在 Linux 中使用 Docker 部署 TiDB 单机版指南 #### 一、环境准备 1. **系统要求** - CentOS 7.9+ 或 Ubuntu 20.04+(本文以 CentOS 7.9 为例) - 内存 ≥ 16GB(推荐 32GB),磁盘 ≥ 50GB SSD - 已安装 DockerDocker Compose([参考引用²](#参考引用)) ```bash # 验证环境 cat /etc/redhat-release # CentOS Linux release 7.9.2009 (Core) free -h # 内存 ≥ 16GB docker --version # Docker 20.10+ docker-compose --version # 1.29+ ``` 2. **离线镜像准备**(联网机器操作) ```bash # 下载 TiDB 官方镜像 docker pull pingcap/tidb:latest docker pull pingcap/tikv:latest docker pull pingcap/pd:latest # 保存为离线docker save -o tidb-offline.tar pingcap/tidb:latest pingcap/tikv:latest pingcap/pd:latest ``` #### 二、离线部署流程 1. **传输并加载镜像**(目标服务器) ```bash # 加载离线镜像 docker load -i tidb-offline.tar # 验证镜像 docker images | grep pingcap ``` ``` pingcap/tidb latest d8f4a3... 2GB pingcap/tikv latest 1a9b2c... 1.5GB pingcap/pd latest 3e7d5f... 800MB ``` 2. **创建 Docker Compose 文件** `tidb-docker-compose.yml` ```yaml version: &#39;3.7&#39; services: pd: image: pingcap/pd:latest command: ["--name=pd1", "--data-dir=/data/pd"] volumes: - pd-data:/data/pd ports: - "2379:2379" tikv: image: pingcap/tikv:latest command: ["--addr=0.0.0.0:20160", "--pd=pd:2379"] volumes: - tikv-data:/data/tikv ports: - "20160:20160" depends_on: - pd tidb: image: pingcap/tidb:latest command: ["--store=tikv", "--path=pd:2379"] ports: - "4000:4000" - "10080:10080" depends_on: - tikv volumes: pd-data: tikv-data: ``` 3. **启动 TiDB 集群** ```bash # 创建部署目录 mkdir tidb-docker && cd tidb-docker mv /path/to/tidb-docker-compose.yml ./ # 启动服务 docker-compose -f tidb-docker-compose.yml up -d ``` #### 三、验证部署 1. **检查容器状态** ```bash docker-compose ps ``` ``` Name Command State Ports tidb-docker_pd_1 /pd-server --name=pd1 ... Up 0.0.0.0:2379->2379/tcp tidb-docker_tidb_1 /tidb-server --store= ... Up 0.0.0.0:4000->4000/tcp, 10080/tcp tidb-docker_tikv_1 /tikv-server --addr= ... Up 0.0.0.0:20160->20160/tcp ``` 2. **连接数据库** ```bash mysql -h 127.0.0.1 -P 4000 -u root ``` ```sql -- 执行测试命令 SELECT version(); -- 显示 TiDB 版本 CREATE DATABASE test; USE test; CREATE TABLE users(id INT PRIMARY KEY, name VARCHAR(20)); INSERT INTO users VALUES(1, &#39;TiDB&#39;); SELECT * FROM users; ``` #### 四、访问监控系统 1. **Grafana 监控**(需额外部署) 在 `docker-compose.yml` 中添加: ```yaml grafana: image: grafana/grafana:latest ports: - "3000:3000" ``` 访问 `http://服务器IP:3000` 使用 admin/admin 登录 2. **查看集群状态** ```bash docker exec -it tidb-docker_tidb_1 sh tiup cluster display ``` #### 五、日常管理 | **操作** | **命令** | |----------|----------| | 启动集群 | `docker-compose start` | | 停止集群 | `docker-compose stop` | | 删除集群 | `docker-compose down -v` | | 查看日志 | `docker-compose logs -f tidb` | | 备份数据 | `docker exec tidb-docker_tidb_1 sh -c &#39;tiup dumpling -h 127.0.0.1 -P 4000&#39;` | > **关键提示** > 1. 数据持久化:确保 `volumes` 配置正确,避免数据丢失[^4] > 2. 资源限制:通过 `cpus: 4` 和 `mem_limit: 8g` 限制容器资源 > 3. 生产建议:单机版仅用于测试,生产环境需分布式部署[^1] --- ### 相关问题 1. **如何优化单机版 TiDB 的内存占用?** - 修改 TiKV 配置:`docker-compose.yml` 中添加 `command: ["--memory-limit=4GB"]` - 调整 TiDB 查询内存:`SET GLOBAL tidb_mem_quota_query = 2147483648;`(2GB)[^3] 2. **离线环境下如何更新 TiDB 镜像版本?** ```bash # 联网机器下载新镜像 docker pull pingcap/tidb:v8.1.0 docker save -o tidb-v8.1.0.tar pingcap/tidb:v8.1.0 # 离线服务器操作 docker load -i tidb-v8.1.0.tar # 修改 docker-compose.yml 中的 image 版本 docker-compose up -d --force-recreate ``` 3. **部署时遇到端口冲突如何解决?** - 修改 `docker-compose.yml` 中的端口映射: ```yaml tidb: ports: - "5000:4000" # 将外部访问端口改为 5000 ``` - 检查端口占用:`ss -tunlp | grep &#39;4000\|2379\|20160&#39;` 4. **如何备份和恢复 TiDB 单机数据?** ```bash # 逻辑备份 docker exec tidb-container tiup dumpling -h 127.0.0.1 -P 4000 -o /backup # 物理备份(需停服) docker-compose stop cp -r /var/lib/docker/volumes/tidb-docker_pd-data /backup/ docker-compose start ``` ### 参考引用 [^1]: 确保开发环境满足 TiDB 的运行要求,支持 Linux、macOS 和 Windows 系统[^1] [^2]: 使用 Docker 部署 TiDB 集群需检查 Docker 状态和版本[^2] [^3]: TiDB 容器启动需指定存储后端和 PD 路径[^3] [^4]: Docker 镜像已包含所需环境如 JDK,无需单独安装[^4]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值