使用FlinkCDC-mongodb连接器的前期准备工作

该文详细介绍了在Linux环境中如何安装Docker,包括查看内核版本、卸载旧版、安装Docker及设置自动启动。然后,文章展示了如何下载mongoDB镜像,创建容器并配置副本集,包括端口映射和初始化副本。此外,还提到了创建数据库角色、用户以及数据操作的步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、安装docker环境

# 	查看当前的内核版本, Linux 内核:官方建议 3.10 以上.
uname -r

#	卸载旧的docker 
yum remove docker  docker-common docker-selinux docker-engine

#  安装需要的软件包, yum-util 提供yum-config-manager功能,另两个是devicemapper驱动依赖
yum install -y yum-utils device-mapper-persistent-data lvm2

#	设置一个yum源,下面两个都可用
yum-config-manager --add-repo http://download.docker.com/linux/centos/docker-ce.repo   			#(中央仓库)
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo   #(阿里仓库)

#	查看可用版本有哪些
yum list docker-ce --showduplicates | sort -r

#	选择一个版本并安装:yum install docker-ce-版本号
yum -y install docker-ce-18.03.1.ce

# 	启动 Docker 并设置开机自启
systemctl start docker
systemctl enable docker

#	查看docker信息
docker info

2、安装mongoDB,并开启副本

# 	搜索镜像
docker search mongo


#	拉取镜像
docker pull mongo:4.4.0

#	创建容器:
#		--name 		容器名称 
#		/docker/images/mongo4/data:/data/db  	mongo的数据映射到主机的位置,/docker/images/mongo4/data为主机位置,需要事先创建
#		27017:27017 	将mongo的27017端口,映射到主机的27017端口
# 		--replSet rs0 	创建一个副本,命名为rs0
docker run -itd --name mongo4 -v /docker/images/mongo4/data:/data/db -p 27017:27017 mongo:4.4.0   --replSet rs0

#	查看是否启动成功
docker ps
docker logs mongo4

#	进入mongo容器
docker exec -it mongo4 mongo 

#	初始化副本
rs.initiate()


#	创建规则 (可选)
db.createRole(
    {
        role: "flinkrole",
        privileges: [{
            resource: { db: "", collection: "" },
            actions: [
                "splitVector",
                "listDatabases",
                "listCollections",
                "collStats",
                "find",
                "changeStream" ]
        }],
        roles: [
            { role: 'read', db: 'config' }
        ]
    }
	
);


#	创建用户,并赋予规则(可选)
db.createUser(
  {
      user: 'flinkuser',
      pwd: 'flinkpwd',
      roles: [
         { role: 'flinkrole', db: 'admin' }
      ]
  }
);

#创建数据库和集合,并制造数据
use test
db.users.insert( { name:"test1", age:22} )
db.users.insert( { name:"test2", age:22} )
db.users.update( { name:"test1"},{$set:{name:"user1"}} )
db.users.update( { name:"test2"},{$set:{name:"user2"}} )

### Flink CDC 面试常见问题及解答 #### MySQL CDC连接器的新特性 Flink CDC 2.0版本里的MySQL CDC连接器引入了多项改进,包括但不限于无锁算法、并发读取以及断点续传等功能[^1]。这些新特性的加入显著提升了系统的稳定性和性能。 #### 数据捕获方式的选择 对于MongoDB的数据变更捕捉(MongoDB CDC),存在两种不同的启动模式供选择:initial模式会先完成全量数据的一次性迁移后再持续跟踪后续的变化;而latest-offset模式则专注于实时获取最新的更改记录而不涉及历史数据的初次加载[^4]。 #### 时间语义的理解 在讨论Flink应用时,理解其支持的不同时间概念非常重要。例如事件时间(Event Time)指的是消息创建时刻附带的时间戳,适用于处理乱序或者延迟到达的消息;相比之下,处理时间(Processing Time)反映的是每条记录实际抵达Flink节点之时的本地钟表读数,更适合于那些对即时响应敏感的应用场合[^3]。 #### 并行执行策略 当涉及到Kafka作为输入源的情况下,并行度设置通常依据topic分区数量来决定——一般建议每个partition对应三个gigabyte级别的吞吐率需求。另外需要注意广播联结操作(broadcast join)的具体实现细节[^2]。 #### 处理保障级别 最后,在设计基于Flink构建的大规模分布式应用程序之前,还需要明确期望达到的数据一致性水平。比如精确一次性(exactly-once)能够确保所有事务都被正确提交且仅有单次发生,这对于银行转账之类的高可靠性场景至关重要;而对于某些允许一定程度冗余的日志聚合类任务,则可能采用至少一次(at-least-once)就足够了。 ```python # Python伪代码展示如何配置Flink作业以启用特定的时间特征 env = StreamExecutionEnvironment.get_execution_environment() env.set_stream_time_characteristic(TimeCharacteristic.EventTime) # 启动带有checkpointing功能的任务以便提供exactly once保证 env.enable_checkpointing(interval=60000) ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值