操作场景
本文档为您介绍如何利用 CKafka 提供的迁移工具将自建 Kafka 集群的 Topic 迁移到 CKafka 的实例中。
前提条件
已 购买云上实例
操作步骤
1. 下载 迁移工具 并解压到可以连通自建实例的 broker 和 zk 的机器上。
2. 在 ckafka-migrate.py 文件中填写配置参数。
说明
请保证后面迁移操作所在的机器和 CKafka 以及自建 Kafka 集群的网络互通。
云API 的密钥对应的用户需要拥有 CKafka 的写权限,建议使用主账号的密钥对。
# your local broker ip:port list# 自建实例的broker列表 ["broker1:port1","ip2:port2"]bootstrapServers = ["$ip:$port"]# your local zk ip:port list# 自建实例的zk列表 ["zk1:port1","zk2:port2"],非必设配置,未设置则用bootstrapServers方式获取源集群信息sourceZk = ["$ip:$port"]# 如果zk有auth鉴权,需要设置该参数,格式为 [("digest", "$user:$password")]zkAuthData = []# 如果zk路径有前缀,需要设置该参数,例如 "/cluster1"zkPathPrefix = ""# ckafka instanceId# 云上实例id "ckafka-xxx"instanceId = "$yourinstanceId"# topic regex,just migrate match topics# topic名称正则表达式,非空则只迁移匹配到的topictopicRegex = ""# your secretId and secretKey# 腾讯云账号的密钥对secretId = "$yoursecretId"secretKey = "$yoursecretKey"# your cloud instance region# 云上实例的地域 ckafka已开区地域码:# 广州 ap-guangzhou;上海 ap-shanghai;南京 ap-nanjing;北京 ap-beijing; 成都 ap-chengdu;重庆 ap-chongqing;# 香港 ap-hongkong;新加坡 ap-singapore;印度孟买 ap-mumbai;日本东京 ap-tokyo;美西硅谷 na-siliconvalley;# 美东弗吉尼 na-ashburn;中国台北 ap-taipei;天津 ap-tianjin;上海金融 ap-shanghai-fsi;# 深圳金融 ap-shenzhen-fsi;深圳 ap-shenzhen;德国法兰克 eu-frankfur;首尔 ap-seoul;清远 ap-qingyuan;# 北京金融 ap-beijing-fsi;曼谷 ap-bangkok;长沙 ap-changsha-ec;雅加达 ap-jakarta# 杭州ec ap-hangzhou-ec;圣保罗 sa-saopaulo;上海自动驾驶 ap-shanghai-adc;武汉ec ap-wuhan-ec;西安ec ap-xian-ec;region = "ap-tokyo"# if you make sure the migrate topic List,please modify checkFlag = 1# 检查标记,设0只显示将要迁移的topic列表不做真正迁移,请先以0运行检查将要迁移的topic列表,确认无误后修改为1开始迁移# 0:列出迁移topic列表后脚本终止# 1:列出迁移topic列表并开始迁移checkFlag = 0# force transfer your cloud-topic config to migrate# 如果为0转换本地topic到云上topic时,属性不一致不会迁移上云。如果为1,会强制转换topic属性和云上最近的值# 例如云上topic的副本只支持1,2,3副本,如果本地的某topic副本数为5,则不会迁移上云。如果force设置为1,则会取和5最接近的3副本,在云上创建3副本topic。# 0:本地和云上topic副本数或topic属性不兼容时,跳过不兼容的topic或者topic属性# 1:本地和云上topic副本数或topic属性不兼容时,强制迁移至云上,云上topic的属性将根据自建topic的属性做出最接近的修正 (不会修改本地自建源kafka的任何数据)force = 0
参数 | 说明 |
bootstrapServers | 自建实例的broker列表,["ip1:port1","ip2:port2"]。 |
sourceZk | 自建实例的zookeeper列表, ["zk1:port1","zk2:port2"],非必设配置,未设置则用bootstrapServers方式获取源集群信息 |
zkAuthData | 如果zk有auth鉴权,需要设置该参数,格式为 [("digest", "$user:$password")]。 |
zkPathPrefix | 如果zk路径有前缀,需要设置该参数,例如 "/cluster1"。 |
instanceId | |
secretId | 腾讯云账号的密钥对-ID。 |
secretKey | 腾讯云账号的密钥对-密码。 |
region | |
checkFlag | 检查标记,设置为0时只显示将要迁移的 Topic 列表并不开始迁移,设置为非0时开始迁移 Topic。 |
topicRegex | Topic 名称正则表达式,设置为空时迁移所有的 Topic,非空时则只迁移匹配到的 Topic。 |
force | 是否强制迁移,如果为0转换本地 Topic 到云上 Topic 时,属性不一致不会迁移上云。如果为1,会强制转换 Topic 属性和云上规定最接近的值。 |
3. 将 ckafka-migrate.py 的 checkFlag 参数设为0,运行脚本 python ckafka-migrate.py,根据输出结果检查需要迁移的Topic列表。
说明
如果缺少部分自建的 Topic,可能是自建Topic命名不符合规则或者Topic副本数、Topic属性数值与云上数值范围无法兼容。
4. 把 ckafka-migrate.py 的 checkFlag 参数设为1,运行脚本 python ckafka-migrate.py,开始迁移 Topic。
5. 登录 CKafka 控制台,在迁移上云页面查看任务列表,等待 Topic 迁移完毕。
任务列表如下:
迁移成功界面如下: