maxwell小白入门

执行同步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表

maxwell小白入门_第1张图片

找到同步历史数据表的那一条数据,该条数据有一个 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

你可能感兴趣的:(数据库,etl,bigdata)