标准最新官方文档: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 上自动创建 topicbroker.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 |
---|
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
下载压缩包
# 下载压缩包 # 检查文件完整性,返回 ok 则正确 # 解开压缩包 |
---|
配置文件
addr = "172.168.101.27:8249" [syncer] [syncer.to] |
---|
启动
./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里面查看应该有相应的表数据。