部署 CDC 服务器
本指南提供了部署 Milvus-CDC 服务器的分步过程。
先决条件
在部署 Milvus-CDC 服务器之前,请确保满足以下条件:
-
Milvus 实例:源 Milvus 和至少一个目标 Milvus 都应已部署并运行。
-
源和目标 Milvus 版本都必须是 2.3.2 或更高版本,最好是 2.4.x。我们建议为源和目标 Milvus 使用相同版本以确保兼容性。
-
将目标 Milvus 的
common.ttMsgEnabled配置设置为false。 -
为源和目标 Milvus 配置不同的元数据和消息存储设置以避免冲突。例如,避免使用相同的 etcd 和 rootPath 配置,以及相同的 Pulsar 服务和多个 Milvus 实例中的
chanNamePrefix。
-
-
Metastore:为 Milvus-CDC metastore 准备一个 etcd 或 MySQL 数据库。
步骤
获取 Milvus-CDC 配置文件
克隆 Milvus-CDC 仓库 并导航到 milvus-cdc/server/configs 目录以访问 cdc.yaml 配置文件。
git clone https://github.com/zilliztech/milvus-cdc.git
cd milvus-cdc/server/configs
编辑配置文件
在 milvus-cdc/server/configs 目录中,修改 cdc.yaml 文件以自定义与 Milvus-CDC metastore 和源 Milvus 连接详细信息相关的配置。
-
Metastore 配置:
-
metaStoreConfig.storeType:Milvus-CDC 的 metastore 类型。可能的值为etcd或mysql。 -
metaStoreConfig.etcdEndpoints:连接到 Milvus-CDC 的 etcd 的地址。如果storeType设置为etcd,则为必需。 -
metaStoreConfig.mysqlSourceUrl:Milvus-CDC 服务器的 MySQL 数据库连接地址。如果storeType设置为mysql,则为必需。 -
metaStoreConfig.rootPath:Milvus-CDC metastore 的根路径。此配置支持多租户,允许多个 CDC 服务使用相同的 etcd 或 MySQL 实例,同时通过不同的根路径实现隔离。
示例配置:
# cdc meta data config
metaStoreConfig:
# the metastore type, available value: etcd, mysql
storeType: etcd
# etcd address
etcdEndpoints:
- localhost:2379
# mysql connection address
# mysqlSourceUrl: root:root@tcp(127.0.0.1:3306)/milvus-cdc?charset=utf8
# meta data prefix, if multiple cdc services use the same store service, you can set different rootPaths to achieve multi-tenancy
rootPath: cdc -
-
源 Milvus 配置:
指定源 Milvus 的连接详细信息,包括 etcd 和消息存储,以建立 Milvus-CDC 服务器与源 Milvus 之间的连接。
-
sourceConfig.etcdAddress:连接到源 Milvus 的 etcd 的地址。有关更多信息,请参阅 etcd 相关配置。 -
sourceConfig.etcdRootPath:源 Milvus 在 etcd 中存储数据的键的根前缀。该值可能因 Milvus 实例的部署方法而异:-
Helm 或 Docker Compose:默认为
by-dev。 -
Operator:默认为
<release_name>。
-
-
replicateChan:milvus 复制通道名称,即 milvus.yaml 文件中的{msgChannel.chanNamePrefix.cluster}/{msgChannel.chanNamePrefix.replicateMsg} -
sourceConfig.pulsar:源 Milvus 的 Pulsar 配置。如果源 Milvus 使用 Kafka 进行消息存储,请删除所有 Pulsar 相关配置。有关更多信息,请参阅 Pulsar 相关配置。 -
sourceConfig.kafka.address:源 Milvus 的 Kafka 地址。如果源 Milvus 使用 Kafka 进行消息存储,请取消注释此配置。
-
示例配置:
# milvus-source config, these settings are basically the same as the corresponding configuration of milvus.yaml in milvus source.
sourceConfig:
# etcd config
etcdAddress:
- localhost:2379
etcdRootPath: by-dev
etcdMetaSubPath: meta
# default partition name
defaultPartitionName: _default
# read buffer length, mainly used for buffering if writing data to milvus-target is slow.
readChanLen: 10
replicateChan: by-dev-replicate-msg
# milvus-source mq config, which is pulsar or kafka
pulsar:
address: pulsar://localhost:6650
webAddress: localhost:80
maxMessageSize: 5242880
tenant: public
namespace: default
# authPlugin: org.apache.pulsar.client.impl.auth.AuthenticationToken
# authParams: token:xxx
# kafka:
# address: 127.0.0.1:9092
编译 Milvus-CDC 服务器
保存 cdc.yaml 文件后,导航到 milvus-cdc 目录并运行以下命令之一来编译服务器:
-
对于二进制文件:
make build -
对于 Docker 镜像:
bash build_image.sh对于 Docker 镜像,将编译的文件挂载到容器内的
/app/server/configs/cdc.yaml。
启动服务器
-
使用二进制文件
导航到包含
milvus-cdc二进制文件和包含cdc.yaml文件的configs目录的目录,然后启动服务器:# dir tree
.
├── milvus-cdc # build from source code or download from release page
├── configs
│ └── cdc.yaml # config for cdc and source milvus
# start milvus cdc
./milvus-cdc server -
使用 Docker Compose:
docker compose up -d