在 Debian 上的 Kafka 数据迁移实操指南
一、迁移场景与总体策略
二、跨集群迁移与不停机切换(推荐 MM2)
clusters = src, dst
src.bootstrap.servers = PLAINTEXT://src-broker:9092
dst.bootstrap.servers = PLAINTEXT://dst-broker:9092
src->dst.enabled = true
dst->src.enabled = false
# 同步消费者组偏移量(可选)
src->dst.sync.group.offsets.enabled = true
src->dst.sync.group.offsets.interval.seconds = 60
# 主题映射(可选:重命名或过滤)
topics = .*
# 复制限流(按带宽/分区调节)
tasks.max = 8
replication.factor = 3
bin/connect-mirror-maker.sh mm2.properties
三、同版本存储层搬迁与分区重分配
bin/kafka-reassign-partitions.sh --bootstrap-server <broker:9092> \
--generate --topics-to-move-json-file topics.json --broker-list "<new-brokers>"
topics.json 示例:{"topics": [{"topic": "my_topic"}], "version": 1}
bin/kafka-reassign-partitions.sh --bootstrap-server <broker:9092> \
--execute --reassignment-json-file reassignment.json
bin/kafka-reassign-partitions.sh --bootstrap-server <broker:9092> \
--verify --reassignment-json-file reassignment.json
四、数据库到 Kafka 的初始化导入(CDC)
sudo apt-get update
sudo apt-get install -y docker.io
sudo systemctl start docker
sudo systemctl enable docker
version: '2'
services:
zookeeper:
image: quay.io/debezium/zookeeper:2.0
ports: ["2181:2181","2888:2888","3888:3888"]
kafka:
image: quay.io/debezium/kafka:2.0
ports: ["9092:9092"]
links: ["zookeeper"]
connect:
image: quay.io/debezium/connect:2.0
ports: ["8083:8083","5005:5005"]
environment:
- bootstrap.servers=kafka:9092
- group.id=1
- config.storage.topic=my_connect_configs
- offset.storage.topic=my_connect_offsets
- status.storage.topic=my_source_connect_statuses
kafka-ui:
image: provectuslabs/kafka-ui:latest
ports: ["9093:8080"]
environment:
- KAFKA_CLUSTERS_0_BOOTSTRAP_SERVERS=kafka:9092
debezium-ui:
image: debezium/debezium-ui:2.0
ports: ["8080:8080"]
environment:
- KAFKA_CONNECT_URIS=http://connect:8083
启动:docker-compose -f docker-compose.yaml -p debezium up -d
五、迁移验证与注意事项