Kafka需要java运行环境,需要安装JDK。
上传JDK安装包,并安装:
[root@x86_1_59 ~]# tar -zxvf jdk-8u60-linux-x64.tar.gz
[root@x86_1_59 ~]# mv jdk1.8.0_60/ /usr/local/src/java
修改环境变量:
[root@x86_1_59 ~]# vim /etc/profile
添加:
export JAVA_HOME=/usr/local/src/java/
export PATH=$JAVA_HOME/bin:$PATH
[root@x86_1_59 ~]# source /etc/profile
查看java环境:
[root@x86_1_59 ~]# java -version
1、上传kafka安装包到home目录,并解压:
如需使用其他版本kafka,可通过http://kafka.apache.org/downloads下载
[root@x86_1_59 home]# tar -zxvf kafka_2.12-3.1.2.tgz
2、修改server.properties文件
[root@x86_1_59 home]# cd kafka_2.12-3.1.2/config/
[root@x86_1_59 config]# ls
创建日志存放路径:
[root@x86_1_59 ~]# cd /home/kafka_2.12-3.1.2
[root@x86_1_59 kafka_2.12-3.1.2]# mkdir -p logs/server
[root@x86_1_59 config]# vim server.properties
修改如下内容:
broker.id=0
port=9092 #端口号
host.name=10.15.1.59 #单机可直接用localhost
log.dirs=/home/kafka_2.12-3.1.2/logs/server #日志存放路径可修改可不修改
zookeeper.connect=10.15.1.59:2181 #zookeeper地址和端口,单机配置部署,localhost:2181
#因为本次使用的kafka版本中自带zookeeper,使用默认配置即可
3、修改zookeeper.properties文件
创建日志存放路径:
[root@x86_1_59 ~]# cd /home/kafka_2.12-3.1.2
[root@x86_1_59 kafka_2.12-3.1.2]# mkdir -p logs/zookeeper
[root@x86_1_59 config]# vim zookeeper.properties
修改如下内容:
dataDir=/home/zerone/zxf/local/kafka/data/zookeeper #zookeeper数据目录 (可以修改可以不修改)
dataLogDir=/home/zerone/zxf/local/kafka/logs/zookeeper #zookeeper日志目录 (可以修改可以不修改)
clientPort=2181
maxClientCnxns=100
tickTime=2000
initLimit=10
4、启动zookeeper和kafka
[root@x86_1_59 ~]# cd /home/kafka_2.12-3.1.2/bin/
[root@x86_1_59 bin]# vim kafkaStart.sh
添加:
#!/bin/bash
#启动zookeeper
nohup /home/kafka_2.12-3.1.2/bin/zookeeper-server-start.sh /home/kafka_2.12-3.1.2/config/zookeeper.properties 1>& /home/kafka_2.12-3.1.2/logs/zookeeper/zookeeper.log &
sleep 3 #默默等3秒后执行
#启动kafka
nohup /home/kafka_2.12-3.1.2/bin/kafka-server-start.sh /home/kafka_2.12-3.1.2/config/server.properties 1>& /home/kafka_2.12-3.1.2/logs/server/kafka.log &
授予脚本执行权限:
[root@x86_1_59 bin]# chmod 755 kafkaStart.sh
执行启动脚本:
[root@x86_1_59 bin]# ./kafkaStart.sh
5、创建topic
[root@x86_1_59 bin]# ./kafka-topics.sh --bootstrap-server 10.15.1.59:9092 --create --replication-factor 1 --partitions 1 --topic test
创建成功后查询top主题
[root@x86_1_59 bin]# ./kafka-topics.sh --list --bootstrap-server 10.15.1.59:9092
6、测试生成者和消费者
[root@x86_1_59 bin]# ./kafka-console-producer.sh --broker-list 10.15.1.59:9092 --topic test
输入 一些信息,然后启动消费者查询是否可查看到生产者发送的信息
[root@x86_1_59 bin]# ./kafka-console-consumer.sh --bootstrap-server 10.15.1.59:9092 --topic test --from-beginning
Extract install files.........
Please select the installer's language (E/e:English C/c:Chinese)[E/e]:c
-----------欢迎使用达梦数据复制软件安装工具-----------
输入[exit]可退出安装。
-----------安装目录-----------
指定安装目录[/home/dmdba/dmdrs5]:/home/dmdba/dmdrs5
-----------安装组件-----------
请选择需要安装的组件
1.安装达梦数据融合管理平台
2.安装代理
请选择安装组件数字序号(使用空格间隔):1
选择的组件有:
1.安装达梦数据融合管理平台
"确认?[Y/y(确认选择) or N/n(重新选择)]:y
-----------许可证文件-----------
1.免费试用达梦数据复制软件(必须在试用期范围内使用,反复安装无效,使用时间为3个月)
2.使用许可证文件
指定许可证文件(1,2)[1]:1
免费试用许可证文件限制信息如下:
有效日期:2024-07-11
用户名称:DEVELOP USER
版本编号:4.0
许可证编号:dm66n367
版本:试用版
版本类型:试用版
用户编号:1
并发用户编号:0
数据源类型:DM6,DM7,DM8,ORACLE,SQL SERVER,MYSQL,DB2,PG,KAFKA
DRS主备:支持
动态对比:支持
当前默认许可证文件支持数据库类型为[DM6,DM7,DM8,ORACLE,SQL SERVER,MYSQL,DB2,PG,KAFKA],是否继续安装?[Y/y or N/n]:y
-----------配置-----------
依赖环境配置 -数据库动态库路径[/cs/dmdbms/bin]:/cs/dmdbms/bin
达梦数据融合管理平台配置-管理平台端口[8080]:8080
是否使用外置库(0:不使用 1:使用 )[0]:0
-----------安装小结-----------
安装目录:[/home/dmdba/dmdrs5]
依赖环境配置-NEED_LIB_PATH:[/cs/dmdbms/bin]
达梦数据融合管理平台IP:[127.0.0.1]
达梦数据融合管理平台端口:[8080]
内置库信息:
数据库IP:[127.0.0.1]
数据库端口:[15236]
用户名:[SYSDBA]
密码:[******]
所需磁盘空间/可用磁盘空间:[1,836 MB/2,217,278 MB]
确认安装?[Y/y or N/n]:y
-----------安装中-----------
server start ... server finished.
default start ... default finished.
web start ... web finished.
doc start ... doc finished.
db start ... db finished.
安装成功
-----------系统服务-----------
内置数据库服务设置
1.自动(注册为系统服务)
2.手动(脚本启动)
启动方式(1,2)[2]:
正在创建内置数据库服务....
达梦数据融合管理平台服务设置
1.自动(注册为系统服务)
2.手动(脚本启动)
启动方式(1,2)[2]:
正在创建达梦数据融合管理平台服务....
正在启动服务[DmServiceDFDB]
正在启动服务[DfmWebService]
-----------安装总结-----------
达梦数据复制软件V5安装完成
地址:http://127.0.0.1:8080
用户名/密码:admin/admin
更多安装信息,请查看安装日志文件:/home/dmdba/dmdrs5/log/install.log
略
1、初始化实例
[dmdba@x86_1_55 ~]$ cd /cs/dmdbms/bin
[dmdba@x86_1_55 bin]$ ./dminit PATH=/home/dmdba/data EXTENT_SIZE=32 PAGE_SIZE=32 LOG_SIZE=2048 PORT_NUM=5233
2、注册服务
[root@x86_1_55 ~]# cd /cs/dmdbms/script/root/
[root@x86_1_55 root]# ./dm_service_installer.sh -t dmserver -p DMSERVER -dm_ini /home/dmdba/data/DAMENG/dm.ini
1、开启归档
[dmdba@x86_1_55 ~]$ vim /home/dmdba/data/DAMENG/dm.ini
ARCH_INI = 1
[dmdba@x86_1_55 data]$ vim /home/dmdba/data/DAMENG/dmarch.ini
[ARCHIVE_LOCAL1]
ARCH_TYPE = LOCAL
ARCH_DEST = /home/dmdba/data/arch
ARCH_FILE_SIZE = 512
ARCH_SPACE_LIMIT = 10240
2、开启逻辑日志
[dmdba@x86_1_55 ~]$ vim /home/dmdba/data/DAMENG/dm.ini
#redo log
RLOG_APPEND_LOGIC = 1
3、重启数据库生效
[dmdba@x86_1_55 data]$ cd /cs/dmdbms/bin
[dmdba@x86_1_55 bin]$ ./DmServiceDMSERVER restart
1、创建数据库同步用户。
[dmdba@x86_1_55 bin]$ ./disql sysdba/SYSDBA:5233
SQL> create tablespace DRS datafile '/home/dmdba/data/DAMENG/DRS.DBF' size 2048 autoextend on next 2048;
SQL> CREATE USER DRS IDENTIFIED BY 123456789 default tablespace DRS default index tablespace DRS;
2、赋予同步用户权限
本次测试授予同步用户DBA权限。
GRANT dba TO DRS;
在源数据库执行“ddl_sql_dm8.sql”脚本创建辅助表,脚本默认位置在DRS执行程序目录下的scripts子目录中。
1、创建辅助表
start /home/dmdba/dmdrs5/bin/scripts/ddl_sql_dm8.sql
2、检查创建的辅助表和触发器是否有效
select owner, trigger_name from dba_triggers where owner = 'SYSDBA' and trigger_name like 'DRS_$%' and status = 'Y';
select owner, table_name from dba_tables where owner = 'SYSDBA' and table_name like 'DRS_$%' and status = 'VALID';
如果存在以上查询结果,表示DRS辅助表和触发器创建有效。
[dmdba@x86_1_55 ~]$ cd /home/dmdba/dmdrs5/bin
[dmdba@x86_1_55 bin]$ vim cpt.xml
<?xml version="1.0" encoding="GB2312" standalone="no"?>
<drs>
<base>
<mgr_port>5345</mgr_port>
<siteid>1</siteid>
</base>
<cpt>
<name>cpt_dm8</name>
<login>
<dbtype>dm8</dbtype>
<server>10.15.1.55</server>
<user>SYSDBA</user>
<pwd>SYSDBA</pwd>
<port>5233</port>
<char_code>GB18030</char_code>
<ddl_mask>OBJ:OP</ddl_mask>
</login>
<send>
<ip>10.15.1.59</ip>
<port>5346</port>
<target_name>exec_kafka</target_name>
<map>
<item>DRS.*==DRS.*</item>
</map>
</send>
<load/>
</cpt>
</drs>
[dmdba@x86_1_55 home]$ ./DRS_V5.0.4.1_rev157302_rh6_64_20240411.bin -i
Extract install files.........
Please select the installer's language (E/e:English C/c:Chinese)[E/e]:c
-----------欢迎使用达梦数据复制软件安装工具-----------
输入[exit]可退出安装。
-----------安装目录-----------
指定安装目录[/home/dmdba/dmdrs5]:/home/dmdba/dmdrs5
-----------安装组件-----------
请选择需要安装的组件
1.安装达梦数据融合管理平台
2.安装代理
请选择安装组件数字序号(使用空格间隔):1
选择的组件有:
1.安装达梦数据融合管理平台
"确认?[Y/y(确认选择) or N/n(重新选择)]:y
-----------许可证文件-----------
1.免费试用达梦数据复制软件(必须在试用期范围内使用,反复安装无效,使用时间为3个月)
2.使用许可证文件
指定许可证文件(1,2)[1]:1
免费试用许可证文件限制信息如下:
有效日期:2024-07-11
用户名称:DEVELOP USER
版本编号:4.0
许可证编号:dm66n367
版本:试用版
版本类型:试用版
用户编号:1
并发用户编号:0
数据源类型:DM6,DM7,DM8,ORACLE,SQL SERVER,MYSQL,DB2,PG,KAFKA
DRS主备:支持
动态对比:支持
当前默认许可证文件支持数据库类型为[DM6,DM7,DM8,ORACLE,SQL SERVER,MYSQL,DB2,PG,KAFKA],是否继续安装?[Y/y or N/n]:y
-----------配置-----------
依赖环境配置 -数据库动态库路径[/cs/dmdbms/bin]:/cs/dmdbms/bin
达梦数据融合管理平台配置-管理平台端口[8080]:8080
是否使用外置库(0:不使用 1:使用 )[0]:0
-----------安装小结-----------
安装目录:[/home/dmdba/dmdrs5]
依赖环境配置-NEED_LIB_PATH:[/cs/dmdbms/bin]
达梦数据融合管理平台IP:[127.0.0.1]
达梦数据融合管理平台端口:[8080]
内置库信息:
数据库IP:[127.0.0.1]
数据库端口:[15236]
用户名:[SYSDBA]
密码:[******]
所需磁盘空间/可用磁盘空间:[1,836 MB/2,217,278 MB]
确认安装?[Y/y or N/n]:y
-----------安装中-----------
server start ... server finished.
default start ... default finished.
web start ... web finished.
doc start ... doc finished.
db start ... db finished.
安装成功
-----------系统服务-----------
内置数据库服务设置
1.自动(注册为系统服务)
2.手动(脚本启动)
启动方式(1,2)[2]:
正在创建内置数据库服务....
达梦数据融合管理平台服务设置
1.自动(注册为系统服务)
2.手动(脚本启动)
启动方式(1,2)[2]:
正在创建达梦数据融合管理平台服务....
正在启动服务[DmServiceDFDB]
正在启动服务[DfmWebService]
-----------安装总结-----------
达梦数据复制软件V5安装完成
地址:http://127.0.0.1:8080
用户名/密码:admin/admin
更多安装信息,请查看安装日志文件:/home/dmdba/dmdrs5/log/install.log
[dmdba@x86_1_59 ~]$ cd /home/dmdba/dmdrs5/bin
[dmdba@x86_1_59 bin]$ vim json_format.ini
#DMDRS kafka json format Configuration file
#this is comments
#common format control parameters
OP_TIME_FORMAT = (yyyy-mm-dd hh:mi:ss)
CUR_TIME_FORMAT = (yyyy-mm-dd hh:mi:ss)
NULL_FORMAT = "null"
SET_QUOTA = 0
SET_ROWID_COL = 0
NEED_CRLF = 1
CHAR_REPLACE =(",\"),(\,\\)
OLD_VALUES = ALL
NEW_VALUES = ALL
OLD_LOB_FLAG = "empty_lob()"
JSON_FORMAT_INS = {
"table":"#SCHEMA.#TABLE",
"op_type":"#OP_TYPE",
"op_ts":"#OP_TIME",
"current_ts":"#TIME",
"pos":"#POS",
"primary_keys":[#PRIMARY_KEY],
"after":{#NEW_VALUES}
}
JSON_FORMAT_UPD = {
"table":"#SCHEMA.#TABLE",
"op_type":"#OP_TYPE",
"op_ts":"#OP_TIME",
"current_ts":"#TIME",
"pos":"#POS",
"primary_keys":[#PRIMARY_KEY],
"before":{#OLD_VALUES},
"after":{#NEW_VALUES}
}
JSON_FORMAT_DEL = {
"table":"#SCHEMA.#TABLE",
"op_type":"#OP_TYPE",
"op_ts":"#OP_TIME",
"current_ts":"#TIME",
"pos":"#POS",
"primary_keys":[#PRIMARY_KEY],
"before":{#OLD_VALUES}
}
JSON_FORMAT_DDL = {
"table":"#SCHEMA.#TABLE",
"op_type":"#OP_TYPE",
"op_ts":"#OP_TIME",
"current_ts":"#TIME",
"pos":"#POS",
"after":
{"DB_TYPE":"ORA",
"OBJECT_TYPE":"#OP_TYPE",
"OBJECT_NAME":"#SCHEMA.#TABLE",
"DDL_TEXT":"#DDL_SQL"}
}
[dmdba@x86_1_59 ~]$ cd /home/dmdba/dmdrs5/bin
[dmdba@x86_1_59 bin]$ vim producer.properties
bootstrap.servers=10.15.1.59:9092
[dmdba@x86_1_59 ~]$ cd /home/dmdba/dmdrs5/bin
[dmdba@x86_1_59 bin]$ vim exec.xml
<?xml version="1.0" encoding="GB2312"?>
<drs>
<base>
<mgr_port>5346</mgr_port>
<siteid>1</siteid>
</base>
<exec>
<name>exec_kafka</name>
<login>
<dbtype>kafka</dbtype>
<producer_properties>/home/dmdba/dmdrs5/bin/producer.properties</producer_properties>
</login>
<group>
<item>
<id>0</id>
<topic_name>test</topic_name>
<json_format_path>/home/dmdba/dmdrs5/bin/json_format.ini</json_format_path>
</item>
</group>
</exec>
</drs>
[dmdba@x86_1_55 ~]$ cd /home/dmdba/dmdrs5/bin
[dmdba@x86_1_55 bin]$ cp service_template/TemplateService ./DrsServiceCPT
修改DrsServiceCPT服务脚本相关配置
INSTALL_HOME=/home/dmdba/dmdrs5
PROG_DIR=/home/dmdba/dmdrs5/bin
CONF_PATH=/home/dmdba/dmdrs5/bin/cpt.xml
NEED_LIB_PATH=/cs/dmdbms/bin:/home/dmdba/dmdrs5/bin
EXEC_PROG_NAME=drsvr
SERVICE_TYPE_NAME=drs server
[dmdba@x86_1_59 ~]$ cd /home/dmdba/dmdrs5/bin
[dmdba@x86_1_59 bin]$ cp service_template/TemplateService ./DrsServiceEXEC
修改DrsServiceCPT服务脚本相关配置
INSTALL_HOME=/home/dmdba/dmdrs5
PROG_DIR=/home/dmdba/dmdrs5/bin
CONF_PATH=/home/dmdba/dmdrs5/bin/exec.xml
NEED_LIB_PATH=/cs/dmdbms/bin:/home/dmdba/dmdrs5/bin
EXEC_PROG_NAME=drsvr
SERVICE_TYPE_NAME=drs server
[dmdba@x86_1_59 ~]$ cd /home/dmdba/dmdrs5/bin
[dmdba@x86_1_59 bin]$ ./drsvr exec.xml
[dmdba@x86_1_55 ~]$ cd /home/dmdba/dmdrs5/bin
[dmdba@x86_1_55 bin]$ ./drsvr cpt.xml
[dmdba@x86_1_55 ~]$ cd /home/dmdba/dmdrs5/bin
[dmdba@x86_1_55 bin]$ ./drcsl cpt.xml
#连接DRS服务
CSL> connect
#设置数据库当前最新的日志LSN作为日志解析的起始位置
CSL> alter cpt_dm8 set lsn
#启动源DMDRS服务中的CPT模块
CSL> start
#将源数据库中DRS模式下所有的表添加同步,并在同步之前把源端表的全量数据装载到目标数据库。
CSL> alter cpt_dm8 add table "sch.name='DRS'"
1、源端日志
2、目的端日志
此时可通过日志看出同步数据正常
此时消费者输出同步的表和数据,同步正常,无问题。
Exception in thread "main" joptsimple.UnrecognizedOptionException: zookeeper is not a recognized option
【解决方式】
原因是kafka版本过高所致,本次测试使用3.1.2版本,2.2+的版本已经不需要依赖zookeeper来查看或创建topic,新版本使用-bootstrap-server替换老版本的--zookeeper-server
Error while executing topic command : Timed out waiting for a node assignment. Call: createTopics
因为访问了错的端口,所以请求失败导致超时。需要使用Kafka端口,本次使用9092
WARN [Consumer clientId=console-consumer, groupId=console-consumer-549] Error while fetching metadata with correlation id 2 : {crawl_data=LEADER_NOT_AVAILABLE} (org.apache.kafka.clients.NetworkClient)
原因是未指定正确的topic,修改成正确的主题名后可正常获取信息
【解决方式】
查询libdrekafka.so依赖的动态库
[dmdba@x86_1_59 bin]$ ldd libdrekafka.so
查找libsasl2.so文件
[root@x86_1_59 ~]# find / -name libsasl2*
查找到后cp一份到drs安装目录bin下
[root@x86_1_59 ~]# cp /usr/lib64/libsasl2.so /home/dmdba/dmdrs5/bin/libsasl2.so.2
[root@x86_1_59 ~]# chown -R dmdba. /home/dmdba/dmdrs5/bin/libsasl2.so.2
[root@x86_1_59 ~]# chmod 755 /home/dmdba/dmdrs5/bin/libsasl2.so.2
再次查询libdrekafka.so依赖的动态库,确认不缺少动态库即可
[dmdba@x86_1_59 bin]$ ldd libdrekafka.so
文章
阅读量
获赞
