TiDB-部署(tiup方式)

本文详细介绍如何在特定网络环境中部署TiDB集群,包括账户权限设置、TIUP工具安装、TIFLUSH插件问题解决等内容。重点在于基础账户管理、离线包部署及遇到的问题及其解决方法。

一、环境

ip(非真实)功能配置
192.168.1.1中控机(监控等位置所在)最低
192.168.1.2TIDB,PD,TIFLUSH(如果机器多可以分开)
192.168.1.3TIKV_1
192.168.1.4TIKV_2
192.168.1.5TIKV_3

二、基础账户准备

因为要保证权限问题,所以这里面不使用root账户,而是使用tidb账户(以下操作在5台机器中都要进行)

1.添加账户和密码

useradd -m -d /home/tidb tidb
passwd tidb 
# 在下面输入你想要的密码

2.配置tidb账户sudo免密

vi /etc/sudoers

# 在文件最下面一行加入如下代码
tidb ALL=(ALL) NOPASSWD: ALL

3.配置中控机tidb账户到其他机器的免密登录

3.1 中控机操作

# 中控机
# 生成密钥,如果你的tidb有家目录就不用创建目录,如果没有请按照下方操作
su - tidb
sudo mkdir -p /home/tidb/.ssh
cd /home/tidb/
sudo chmod 700 .ssh # 该目录权限必须是700
sudo chown -R tidb:tidb /home/tidb
ssh-keygen -t rsa
# 接下来一路回车就行,这时候生成了id_rsa,id_rsa.pub文件
cd .ssh
touch authorized_keys
cat id_rsa.pub >> authorized_keys
sudo chmod 600 authorized_keys


3.2其他机器操作

把authorized_keys文件复制到其他机器的/home/tidb/.ssh目录下,权限要对,.ssh目录的权限和authorized_keys的权限分别为700和600

三、TIDB环境准备

1.tiup安装

su - tidb
# 安装TIUP工具
curl --proto '=https' --tlsv1.2 -sSf https://tiup-mirrors.pingcap.com/install.sh | sh
# 配置环境变量
source .bash_profile
# 确认工具是否安装
which tiup

2.离线包安装

到官网下载对应版本,解压安装

https://pingcap.com/download-cn/community/

tar xzvf tidb-community-server-${version}-linux-amd64.tar.gz
sh tidb-community-server-${version}-linux-amd64/local_install.sh
source /home/tidb/.bash_profile

local_install.sh 脚本会自动执行 tiup mirror set tidb-community-server-${version}-linux-amd64命令将当前镜像地址设置为 tidb-community-server-${version}-linux-amd64

若需将镜像切换到其他目录,可以通过手动执行 tiup mirror set <mirror-dir> 进行切换。如果需要切换到在线环境,可执行 tiup mirror set https://tiup-mirrors.pingcap.com

四、TIKV环境准备

以下操作需要在几台TIKV的机器上执行

以下操作以root用户执行
# 1.查看数据盘
fdisk -l
# 2.创建分区表
parted -s -a optimal /dev/nvme0n1 mklabel gpt -- mkpart primary ext4 1 -1
# 3.格式化文件系统
mkfs.ext4 /dev/nvme0n1p1
# 4.查看数据盘分区的UUID
lsblk -f
# 5.编辑 /etc/fstab 文件,添加 nodelalloc 挂载参数
vi /etc/fstab
# 将对应的UUID尾部编程如下形式
 ext4 defaults,nodelalloc,noatime 0 2
eg:
UUID=c51eb23b-195c-4061-92a9-3fad812cc12f /data1 ext4 defaults,nodelalloc,noatime 0 2
# 6.挂载数据盘
mkdir /data1 && \
mount -a
# 7.执行以下命令,如果文件系统为 ext4,并且挂载参数中包含 nodelalloc,则表示已生效。
mount -t ext4

*********
如果你的数据盘本身已经挂好,只需要执行步骤5就可以

五、配置文件准备

vim topology.yaml

# # Global variables are applied to all deployments and used as the default value of
# # the deployments if a specific deployment value is missing.
global:
  user: "tidb"
  ssh_port: 22
  deploy_dir: "/data/tidb/tidb-deploy"
  data_dir: "/data/tidb/tidb-data"

server_configs:
  pd:
    replication.enable-placement-rules: true

pd_servers:
  - host: 192.168.1.2
tidb_servers:
  - host: 192.168.1.2
tikv_servers:
  - host: 192.168.1.3
  - host: 192.168.1.4
  - host: 192.168.1.5
tiflash_servers:
  - host: 192.168.1.2
    data_dir: /data1/tiflash/data,/data2/tiflash/data
monitoring_servers:
  - host: 192.168.1.1
grafana_servers:
  - host: 192.168.1.1
alertmanager_servers:
  - host: 192.168.1.1

六、整体部署

tiup cluster deploy tidb-test v4.0.0 topology.yaml --user tidb [-p] [-i /home/root/.ssh/gcp_rsa]
# 因为我们配置了免密,直接如下写就可以
tiup cluster deploy tidb-test v4.0.0 topology.yaml --user tidb
# 启动环境
tiup cluster start tidb-test

 七、问题处理

我启动环境的时候其他服务正常启动,但是TI FLUSH没有启动进来,到tiflush的机器上查看日志

详细报错如下:

bin/tiflash/tiflash: error while loading shared libraries: libcurl.so.4: cannot open shared object file: No such file or directory

可以看到是缺对应插件,我们把对应插件安装上就可以了

sudo apt-get install libcurl4-openssl-dev

八、查看运行状态

tiup cluster display  tidb-test

<think> 我们讨论的是在二进制部署TiDB v7.5.6集群中使用ticdc命令。由于是二进制部署,ticdc可执行文件应该已经在部署目录中。用户需要知道如何运行ticdc命令。 注意:二进制部署的ticdc命令位于部署目录的bin子目录下,例如/tidb-deploy/cdc-8300/bin/ticdc(假设部署目录为/tidb-deploy,实例名为cdc-8300)。但用户可能已经将ticdc加入到PATH环境变量中,也可能没有。 用户需要了解ticdc命令的基本用法,包括: - 如何启动一个cdc server - 如何创建changefeed - 如何管理changefeed(暂停、恢复、删除等) - 如何查询任务状态 根据引用[1]中提到的官方文档,我们可以参考TiDB的官方文档,但注意用户是二进制部署,所以不涉及tiup命令。 另外,引用[2]中提到了v7.5.2的升级实践,我们使用的是v7.5.6,所以配置项force-init-stats在v7.5.6中也是存在的,但这对ticdc命令没有直接影响。 因此,我们回答的重点是:在二进制部署环境下,如何调用ticdc命令行工具,并给出常用命令示例。 注意:用户可能已经将ticdc的路径加入PATH,所以可以直接在命令行使用ticdc。如果没有,则需要使用绝对路径。 假设ticdc的二进制文件路径为:/tidb-deploy/cdc/bin/ticdc 常用命令如下: 1. 启动cdc server(通常已经在运行,但了解如何启动是必要的): /tidb-deploy/cdc/bin/ticdc server --pd=http://<pd_host>:<pd_port> --log-file=/tidb-deploy/cdc/ticdc.log --addr=0.0.0.0:8300 --advertise-addr=<host_ip>:8300 2. 使用ticdc cli创建changefeed: /tidb-deploy/cdc/bin/ticdc cli changefeed create --server=http://<cdc_host>:8300 --sink-uri="mysql://root:123456@127.0.0.1:3306/" --changefeed-id="test-feed" 3. 查询changefeed列表: /tidb-deploy/cdc/bin/ticdc cli changefeed list --server=http://<cdc_host>:8300 4. 暂停changefeed: /tidb-deploy/cdc/bin/ticdc cli changefeed pause --server=http://<cdc_host>:8300 --changefeed-id="test-feed" 5. 恢复changefeed: /tidb-deploy/cdc/bin/ticdc cli changefeed resume --server=http://<cdc_host>:8300 --changefeed-id="test-feed" 6. 删除changefeed: /tidb-deploy/cdc/bin/ticdc cli changefeed remove --server=http://<cdc_host>:8300 --changefeed-id="test-feed" 7. 查询changefeed状态: /tidb-deploy/cdc/bin/ticdc cli changefeed query --server=http://<cdc_host>:8300 --changefeed-id="test-feed" 注意:上述命令中的<cdc_host>是运行cdc server的节点IP,<pd_host>是PD节点的IP,端口默认2379。 另外,还需要注意权限问题,确保运行命令的用户有权限访问对应的目录和端口。 由于用户是二进制部署,所以这些命令都是直接通过二进制文件执行,不需要通过tiup。 下面按照要求组织回答: </think> ### 二进制部署TiDB v7.5.6 集群中使用 TiCDC 命令指南 #### 一、TiCDC 命令基础路径 在二进制部署环境中,TiCDC 可执行文件位于部署目录的 `bin` 子目录下: ```bash /tidb-deploy/cdc/bin/ticdc ``` #### 二、常用 TiCDC 命令操作 1. **查看 TiCDC 节点状态** ```bash curl http://<cdc_node_ip>:8300/status # 示例:检查172.31.28.215节点 curl http://172.31.28.215:8300/status | jq ``` 输出关键字段: - `is_owner`:标记是否为主节点 - `version`:TiCDC 版本(需与集群版本一致) - `cluster_id`:所属集群ID[^1] 2. **创建 changefeed 同步任务** ```bash /tidb-deploy/cdc/bin/ticdc cli changefeed create \ --pd=http://<pd_ip1>:2379,<pd_ip2>:2379 \ --sink-uri="mysql://user:password@mysql-host:3306/" \ --changefeed-id="test-sync" \ --sort-engine="unified" ``` 参数说明: - `--pd`:连接现有 PD 节点(至少2个) - `--sink-uri`:目标数据库连接串 - `--sort-engine`:推荐使用 `unified`(默认)或 `memory` 3. **管理同步任务** ```bash # 暂停任务 ticdc cli changefeed pause --pd=http://<pd_ip>:2379 -c test-sync # 恢复任务 ticdc cli changefeed resume --pd=http://<pd_ip>:2379 -c test-sync # 删除任务 ticdc cli changefeed remove --pd=http://<pd_ip>:2379 -c test-sync ``` 4. **实时监控同步延迟** ```bash ticdc cli changefeed query --pd=http://<pd_ip>:2379 -c test-sync \ | grep -E 'checkpoint|error' ``` 输出关键指标: - `checkpoint-ts`:已同步的时间戳 - `checkpoint-tso`:对应的 TSO - `error`:错误信息(正常应为空) #### 三、高级运维命令 1. **动态调整内存配额(无需重启)** ```bash curl -X POST http://<cdc_node_ip>:8300/api/v1/config \ -d '{"memory-quota": 17179869184}' # 16GB内存限制 ``` 2. **导出同步位点用于灾难恢复** ```bash ticdc cli meta save --pd=http://<pd_ip>:2379 \ --file=cdc_meta_backup.json ``` 3. **过滤特定表同步** ```bash ticdc cli changefeed create \ --filter-rules='test_db.*, !test_db.logs' \ ... # 其他参数 ``` #### 四、配置注意事项 1. **版本一致性** ```bash # 验证版本(所有节点输出应相同) /tidb-deploy/cdc/bin/ticdc version ``` 输出示例:`TiCDC v7.5.6 (built: 2024-03-15)` 2. **高可用配置** 在 `cdc.toml` 添加: ```toml [owner-retry] retry-ms = 500 max-retry-ms = 30000 ``` 此配置确保主节点故障时 30 秒内完成切换[^1] 3. **开启 TLS 加密通信** ```bash ticdc cli changefeed create \ --ca-path=/path/ca.pem \ --cert-path=/path/cdc-cert.pem \ --key-path=/path/cdc-key.pem ... # 其他参数 ``` #### 五、常见问题排查 1. **查看 TiCDC 日志** ```bash tail -f /tidb-deploy/cdc/cdc.log ``` 关键错误关键词: - `ErrGCTTLExceeded`:同步延迟超过 GC 安全窗口 - `ErrFilterNotMatch`:表过滤规则错误 2. **强制重置同步位点** ```bash ticdc cli changefeed update --pd=http://<pd_ip>:2379 \ -c test-sync \ --overwrite-checkpoint-ts=2024-06-01 00:00:00 ``` --- ### 相关问题 1. 如何验证 TiCDC 同步数据的完整性? 2. 二进制部署下如何实现 TiCDC 配置的热更新? 3. 同步任务中断后如何避免全量重新同步? 4. 如何监控 TiCDC 的内存和 CPU 使用峰值? 5. 当同步延迟持续增长时应如何优化? > **操作注意事项** > 1. 执行 `changefeed create` 前需确保目标库存在且用户有权限 > 2. 生产环境建议开启 `--enable-old-value=true` 支持更新同步[^1] > 3. 调整 `memory-quota` 需预留 20% 内存缓冲防止 OOM > 4. 定期备份 `changefeed` 配置:`ticdc cli config export --file=cdc_config_backup.yml`[^2]
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值