Skip to content

2. 快速上手

woqutech-qdecoder edited this page Mar 11, 2022 · 5 revisions

o2k非常容易上手,只须简单配置,就可以开始工作。主要配置有:

  • 源端oracle数据库配置:数据库名,用户名,密码,ASM帐号和密码
  • 需要解析的表名,如:user1.t1,user2.t2
  • 输出目的地:kafka/socket/file

在docker容器中运行o2k

执行如下命令,启动o2k,通过交互方式配置并运行o2k:

docker run -it --name=o2k -p 9191:9191 -p 9092:9092 --pull  always registry.cn-hangzhou.aliyuncs.com/woqutech/o2k

o2k内部会使用以下端口:

  • 9191: 用于从o2k获取binlog。如果o2k输出binlog的方式是socket或file,用户可以从这个端口读取binlog。
  • 9192: parser和assembler通信使用,外界无须关注。
  • 9193: o2k的管理端口,qdcadm工具可以通过这个端口管理o2k。
  • 9194: o2k状态服务端口,prometheus server可以从这个端口读取o2k的各种metrics
  • 9092: 如果选择将binlog输出到kafka,且bootstrap.server选择了默认的localhost:9092,则内部会启动kafka,使用该端口。

如果binlog输出到容器内部的kaffa,且要从外部读取容器内部的kafka,请导出9092端口;

如果binlog输出到file/socket,请导出9191端口。

如果要从主机查看o2k的metrics,请导出9194端口。

下图演示了o2k的启动和配置过程:

o2k运行示例

注意: 如果要在内网中运行docker,且内网机器无法访问docker镜像仓库,那么需要先找一台能访问docker镜像仓库的机器,拉取qdeocder镜像,将镜像保存为tar包,然后将tar包复制到内网机器上,再在内网机器上导入镜像即可:

// 在能访问docker镜像仓库的机器上安装docker,拉取镜像:
docker pull registry.cn-hangzhou.aliyuncs.com/woqutech/o2k
// 将镜像保存为tar包:
docker save registry.cn-hangzhou.aliyuncs.com/woqutech/o2k > o2k-docker-image.tar
// 将o2k-docker-image.tar复制到内网机器上,然后在内网机器上加载镜像:
docker load < o2k-docker-image.tar
// 在内网机器上运行o2k
docker run -it --name=o2k -p 9191:9191 -p 9092:9092 registry.cn-hangzhou.aliyuncs.com/woqutech/o2k

更多信息,请参考o2k的docker hub页面

在主机上运行o2k

** 初级用户不建议在主机上运行o2k! **

安装部署

  • 将o2k解压到/app/o2k
mkdir /app/
cd /app
tar xzvf o2k-3.0.3-4C.el7.x86_64.tar.gz
tar xzvf o2k-oracle-lib-19.13.tar.gz
  • 设置LD_LIBRARY_PATH
export LD_LIBRARY_PATH=/app/o2k/lib:/app/o2k/lib/oracle:$LD_LIBRARY_PATH

运行o2k

/app/o2k/bin/startup.sh

按照提示配置和运行o2k即可。

使用binlogdump工具查看binlog

  • 如果binlog输出到kafka,可以用binlogdumpK读取并查看binlog:
/app/o2k/bin/binlogdumpK -b 127.0.0.1:9092 -s user1

其中-b指定kafka bootstrap.server, -s指定schema name,该示例读取user1这个schema下所有table的binlog。

  • 如果binlog输出到socket,可以用binlogdumpS读取并查看binlog:
/app/qdecoder/bin/binlogdumpS -a 127.0.0.1:9191

其中-a指定binlog server的地址和端口

撰写程序消费binlog

请参考github中的o2k相关代码,其中:

  • JBinlogDump: java程序读取并反序列化binlog
    • JBinlogDumpK: 从kafka读取binlog
    • JBinlogDumpS: 从socket读取binlog
  • binlogdump: C++程序读取并反序列化binlog
    • binlogdumpK: 从kafka读取binlog
    • binlogdumpS: 从socket读取binlog

QDAdm设置和获取配置

o2k提供了一个命令行配置管理工具qdcadm,可以在运行时查看或更新o2k的一些配置。如:

/app/o2k/bin/qdcadm 127.0.0.1:9193 qdecoder list
/app/o2k/bin/qdcadm 127.0.0.1:9193 qdecoder get_conf binlog.output.dest

其中第一个参数: 127.0.0.1:9193为o2k AdmServer的地址和端口,第二个参数为AdmServer设置的密码,后面是发送给AdmServer的实际命令和参数。

更多使用方法,请参考QDAdm使用手册。