TiDB集群线上部署kafka、zk记录

标准最新官方文档:https://github.com/pingcap/docs-cn/

参考文档地址:

https://pingcap.com/docs-cn/tools/tidb-binlog-kafka/#kafka-zookeeper

https://github.com/pingcap/thirdparty-ops/tree/master/kafka-ansible

架构图:

wget http://download.pingcap.org/tidb-binlog-latest-linux-amd64.tar.gz

TiDB-Binlog 安装

下载官方 Binary

CentOS 7+

# 下载压缩包  wget http://download.pingcap.org/tidb-binlog-latest-linux-amd64.tar.gz
wget http://download.pingcap.org/tidb-binlog-latest-linux-amd64.sha256

# 检查文件完整性,返回 ok 则正确  sha256sum -c tidb-binlog-latest-linux-amd64.sha256

# 解开压缩包  tar -xzf tidb-binlog-latest-linux-amd64.tar.gz
cd tidb-binlog-latest-linux-amd64

Kafka 集群配置推荐

名字 数量 内存 CPU 硬盘
Kafka 3+ 16G 8+ 2+ 1TB
ZooKeeper 3+ 8G 4+ 2+ 300G

Kafka 配置参数推荐

  • auto.create.topics.enable = true:如果还没有创建 topic,Kafka 会在 broker 上自动创建 topic
  • broker.id:用来标识 Kafka 集群的必备参数,不能重复;如 broker.id = 1
  • fs.file-max = 1000000:Kafka 会使用大量文件和网络 socket,建议修改成 1000000,通过 vi /etc/sysctl.conf 进行修改

使用kafka-ansible部署kafka集群
参考文档https://github.com/pingcap/thirdparty-ops/tree/master/kafka-ansible
1,在中控机上下载Kafka-Ansible
git clone https://github.com/pingcap/thirdparty-ops.git
mv thirdparty-ops/kafka-ansible .
cd kafka-ansible

这里因为功能测试,zookeeper所以放到tidb1st、tidb2st、tidb3st里面

172.168.101.18
172.168.101.29
172.168.101.48

kafka放到tikv1st、tikv2st,tikv3st
172.168.101.32 
172.168.101.40 
172.168.101.46

部署kafka集群
ansible-playbook -i inventory.ini local_prepare.yml
ansible-playbook -i inventory.ini bootstrap.yml
ansible-playbook -i inventory.ini deploy.yml
ansible-playbook -i inventory.ini start.yml


启动consumer,随时坚挺kafka消息
tools/kafka-console-consumer -brokers="172.168.101.32:9092,172.168.101.40:9092,172.168.101.46:9092" -topic=test

启动producer,产生消息,让前面的consumer能接受到
tools/kafka-console-producer -brokers="172.168.101.32:9092,172.168.101.40:9092,172.168.101.46:9092" -topic=test -value=world -key=hello

执行后,consumer就会有如下消息
Partition: 0
Offset: 1
Key: hello
Value: world

使用tidb-ansible部署pump

先确保已经安装完kafka+zk,如果没有安装需要提前安装好,上面已经安装的zk地址如:

172.168.101.18
172.168.101.29
172.168.101.48

使用 tidb-ansible 部署 TiDB 集群时,修改 tidb-ansible/inventory.ini 文件,设置 enable_binlog = True,并配置 zookeeper_addrs 变量为 Kafka 集群的 ZooKeeper 地址,这样部署 TiDB 集群时会部署 Pump。

## binlog trigger
enable_binlog = True
# zookeeper address of kafka cluster for binlog, example:
# zookeeper_addrs = "192.168.0.11:2181,192.168.0.12:2181,192.168.0.13:2181"
zookeeper_addrs = "172.168.101.18:2181,172.168.101.29:2181,172.168.101.48:2181"

PS:如果第一次安装tidb的时候,设置的是enable_binlog=false,那么可以这样操作:停止集群,在 inventory 打开 Binlog 开关,执行deploy ,然后启动。这是最简洁的方案

执行命令前,注释添加的zk配置和关闭binlog,执行stop后,添加zk配置和打开binlog

(1)关闭binlog参数zk参数,停止集群,ansible-playbook stop.yml

(2)deploy,ansible-playbook deploy.yml

(3)start,ansible-playbook start.yml

使用binary部署drainer

下载压缩包

# 下载压缩包
wget http://download.pingcap.org/tidb-binlog-latest-linux-amd64.tar.gz
wget http://download.pingcap.org/tidb-binlog-latest-linux-amd64.sha256

# 检查文件完整性,返回 ok 则正确
sha256sum -c tidb-binlog-latest-linux-amd64.sha256

# 解开压缩包
tar -xzf tidb-binlog-latest-linux-amd64.tar.gz
cd tidb-binlog-latest-linux-amd64

配置文件

addr = "172.168.101.27:8249"
detect-interval = 10
data-dir = "data.drainer"
kafka-addrs = "172.168.101.32:9092,172.168.101.40:9092,172.168.101.46:9092"
pd-urls = "http://172.168.101.18:2379,http://172.168.101.29:2379,http://172.168.101.48:2379"
log-file = "drainer.log"

[syncer]
ignore-schemas = "INFORMATION_SCHEMA,PERFORMANCE_SCHEMA,mysql"
txn-batch = 1
worker-count = 1
disable-dispatch = false
db-type = "mysql"

[syncer.to]
host = "172.168.76.63"
user = "root"
password = "xxxxxx"
port = 3306

启动

./bin/drainer -config drainer.toml &

后台日志显示:

2018/07/04 17:19:19 client.go:646: [sarama] client/metadata fetching metadata for all topics from broker 172.168.101.32:9092
2018/07/04 17:29:08 client.go:646: [sarama] client/metadata fetching metadata for all topics from broker 172.168.101.46:9092
2018/07/04 17:29:08 client.go:646: [sarama] client/metadata fetching metadata for all topics from broker 172.168.101.40:9092
2018/07/04 17:29:19 client.go:646: [sarama] client/metadata fetching metadata for all topics from broker 172.168.101.40:9092
2018/07/04 17:29:19 client.go:646: [sarama] client/metadata fetching metadata for all topics from broker 172.168.101.40:9092
2018/07/04 17:29:19 client.go:646: [sarama] client/metadata fetching metadata for all topics from broker 172.168.101.32:9092
2018/07/04 17:29:19 client.go:646: [sarama] client/metadata fetching metadata for all topics from broker 172.168.101.32:9092

表示链路已经打通

测试,再tidb集群建表录入数据,然后去syncer.to里面查看应该有相应的表数据。

猜你喜欢

转载自blog.csdn.net/mchdba/article/details/85150734