执行同步binlog数据命令路径
maxwell安装目录下执行启动命令
增量同步命令:
./bin/maxwell --config ./conf/meituan(文件目录)/具体配置文件名.properties --daemon
采集历史数据
./bin/maxwell-bootstrap --config ./conf/meituan(文件目录)/具体配置文件名.properties --database maicai_bigdata --table price_table --client_id meituan_maicai_cps_prod
完成配置文件
# tl;dr config
log_level=info
producer=kafka
#ddl_kafka_topic=maxwell_ddl
#output_ddl=true
#init_position=binlog.000155:426808694:0
# 创建maxwell库所在主机
host=存储maxwell元数据的mysql url
#mysql用户名
user=存储maxwell元数据的mysql 用户名
#mysql密码
password=存储maxwell元数据的mysql 密码
#端口
port=存储maxwell元数据的mysql 端口(一般是3306,也有不为3306的mysql端口)
#maxwell唯一实例
client_id=本着一个配置文件一个client_id原则设置
# 创建的储存同步信息的库
schema_database=存储maxwell元数据的mysql 库名
#监听的mysql配置信息
replication_host=maxwell监听表所在的mysql url
replication_user=maxwell监听表所在的mysql 用户名
replication_password=maxwell监听表所在的mysql 密码
replication_port=maxwell监听表所在的mysql 端口
# *** kafka ***
kafka.bootstrap.servers=大数据集群 kafka server
kafka.compression.type=snappy
kafka.retries=5
kafka.acks=all
kafka.enable.idempotence=true
#kafka_topic=qy_%{database}_%{table}
kafka_topic=存放采集到的binlog数据kakfa topic(最好在采集前手动建好三分区三副本kafka topic,系统自动创建的kafka topic不是三分区三副本)
# 创建三分区三副本kafka topic (kafka安装目录下的bin目录下)
# kafka-topics.sh --bootstrap-server test002:9092,test003:9092,test004:9092 --create --topic dwd_kyy_db_glory_user_kafka2kafka --partitions 3 --replication-factor 3
jdbc_options = useSSL=false&serverTimezone=Asia/Shanghai
replication_jdbc_options = useSSL=false&serverTimezone=Asia/Shanghai
#filter=exclude: *.*,include: cps.admin
# 该ID不能与mysql my.cnf中的一样,也不能与其他监控同一个库的CDC中配置id一样
replica_server_id=1684391561
filter=exclude: *.*,include: maicai_bigdata.price_table
#http_config=true
# *** general ***
# choose where to produce data to. stdout|file|kafka|kinesis|pubsub|sqs|rabbitmq|redis
#producer=kafka
# set the log level. note that you can configure things further in log4j2.xml
#log_level=DEBUG # [DEBUG, INFO, WARN, ERROR]
# if set, maxwell will look up the scoped environment variables, strip off the prefix and inject the configs
#env_config_prefix=MAXWELL_
# *** output format 输出格式***
# records include binlog position (default false)
output_binlog_position=true
# DML records include list of values that make up a row's primary key (default false)
output_primary_keys=true
# DML records include list of columns that make up a row's primary key (default false)
output_primary_key_columns=true
添加监听表
先搜进程
ps -ef|grep Maxwell(也可以搜 maxwell)
然后 kill掉(注意不是kill - 9)
kill + 进程号(搜到的进程号)
直接在filter=exclude: *.*,后边加上库名.表名
重新启动增量进程(先启动增量进程,再启动全量进程[同步历史])
增量同步命令:
./bin/maxwell --config ./conf/meituan(文件目录)/具体配置文件名.properties --daemon
采集历史数据
./bin/maxwell-bootstrap --config ./conf/meituan(文件目录)/具体配置文件名.properties --database maicai_bigdata --table tianjia_table --client_id meituan_maicai_cps_prod
如果需要同步的表历史binlog日志数据比较多,耗费时间较长,中途不想同步了,需要停止历史同步进程
别 ctrl + c 终止
需要 ps -ef|grep Maxwell 找到同步历史数据进程(一般有bootstrap字样)
用kill + 搜索到的进程号
解决异常终止maxwell采集历史数据进程
如果终止同步历史进程没那么顺利,后边maxwell可能会受到影响(异常终止
同步历史数据进程的影响),而导致maxwell不健康
下图是盛放maxwell元数据的库表,其中有一张 bootstrap表
找到同步历史数据表的那一条数据,该条数据有一个 completed_at 字段,
将这条数据的该字段值修改为 1
解决Maxwell报错RuntimeException: Couldn‘t find database(一般这个库都是采集url里的库) xxx
1. 有没有开启binlog
SHOW VARIABLES LIKE 'log_bin'; -- 可以在采集url里执行一下 (on 是已经开放,off 尚未开放)
2. 已经开启binlog 但是还是报此异常
那可能是采集文件中给到的 需要采集库表url 对应的用户 权限不足
例如: 买菜部门数据库url下有 shouguo库,shucai库 现在只需要分析蔬菜相关指标,故只需要采集shucai库下的库表
但是 蔬菜,水果 库下表产生的binlog日志混合滚动写到相应的binlog日志文件中
(这样理解一个binlog文件中包含蔬菜,水果两个库下的binlog日志数据)
如果此时我们从运维老师那拿到的用户权限仅有蔬菜库的访问权限(即便是读写权限,也是没法去抓取binlog日志文件的)
如果启动 maxwell 进程有问题,网上百度搜索需要清除 maxwell元数据
先尝试清(仅清) positions 表里相关数据,再试着去启动
如果不行,问题还没解决那就把各个表里的相关数据清理一下,再去重新启动
maxwell各个元数据库表(各表之间有字段对应关系,可以相应的删除采集表的元数据信息):
columns表 schema_id = 186
database表 id= 17 and schema_id = 186
heartbeats表 server_id = 2125681723 and client_id = meituan_cps_prod
positions 表 server_id = 2125681723 and client_id = meituan_cps_prod
schemas(库)表 id=186 and server_id = 2125681723
tables 表 schema_id = 186 and database_id = 17 and name= price_table