MaxwellはMySQLインクリメンタルデータを監視します

MaxwellはMySQLインクリメンタルデータを監視します

前置条件

1.カフカは普通に使えます

2.Mysqlは通常どおり使用できます

Mysqlのbinlogを開きます

binlogを開く方法:

https://blog.csdn.net/qq_41489540/article/details/112709210

上記の投稿を表示するようにbinlogを構成する方法、my.cnfのコンテンツを次のように置き換えます

my.cnfコンテンツ

#设置binlog清理时间
expire_logs_days = 5
#binlog每个日志文件大小
max_binlog_size = 50m
server-id=1
log-bin=master
binlog_format=row
# 这个数据库发生数据改变就产生binlog日志
binlog-do-db=gmall202004

ユーザーをmaxwellに割り当て、maxwellデータを保存するデータを作成します

データベースにmaxwellライブラリを作成して、Maxwellメタデータを保存します。

 $ mysql -uroot -proot

mysql> CREATE DATABASE maxwell ;

#  分配一个账号可以操作该数据库

mysql> GRANT ALL ON maxwell.* TO 'maxwell'@'%' IDENTIFIED BY '123456';

#  分配这个账号可以监控其他数据库的权限

mysql> GRANT SELECT ,REPLICATION SLAVE , REPLICATION CLIENT ON *.* TO maxwell@'%';

マクスウェルテストを開始するのは簡単ですか?

開始コマンド:

bin/maxwell --user='maxwell' --password='123456' --host='zjj101' --producer=stdout
# --user:上述创建的用户
# --password:maxwell对应的密码
# --host:mysql的ip
# --producer:生产者,即将数据写入到哪里。stdout表示将数据输出到控制台,kafka表示写入到kafka.

gmall202004データベースにテーブルを作成し、追加、削除、変更、およびデータクエリ操作を実行するだけで、maxwellが以下のjsonを出力していることがわかります。

これは、maxwellと以前のbinlogが使いやすいことを示しています。

[root@zjj101 maxwell-1.25.0]# bin/maxwell --user='maxwell' --password='123456' --host='zjj101' --producer=stdout
Using kafka version: 1.0.0
16:11:12,343 WARN  MaxwellMetrics - Metrics will not be exposed: metricsReportingType not configured.
16:11:12,857 INFO  SchemaStoreSchema - Creating maxwell database
16:11:12,991 INFO  Maxwell - Maxwell v1.25.0 is booting (StdoutProducer), starting at Position[BinlogPosition[master.000001:120], lastHeartbeat=0]
16:11:13,144 INFO  AbstractSchemaStore - Maxwell is capturing initial schema
16:11:13,698 INFO  BinlogConnectorReplicator - Setting initial binlog pos to: master.000001:120
16:11:13,789 INFO  BinaryLogClient - Connected to zjj101:3306 at master.000001/120 (sid:6379, cid:38)
16:11:13,789 INFO  BinlogConnectorLifecycleListener - Binlog connected.
{
    
    "database":"gmall202004","table":"z_user_info","type":"delete","ts":1610784697,"xid":1540,"commit":true,"data":{
    
    "id":30,"user_name":"zhang3","tel":"13810001010"}}

マクスウェルはカフカを統合します

maxwellのルートディレクトリにあるconfig.properties.exampleをコピーし、名前をconfig.propertiesに変更します。

 cp config.properties.example  config.properties

config.propertiesを変更します

producer=kafka
# 因为你要把读到的数据发送到Kafka,所以这里需要Kafka地址
kafka.bootstrap.servers=hadoop202:9092,hadoop203:9092,hadoop204:9092
#将数据放到哪个Kafka的topic里面.
kafka_topic=gmall2020_db_m
# mysql  登录账号密码啥的
host=zjj101
user=maxwell
password=123456
#需要添加 后续初始化会用
client_id=maxwell_1

注:データは、デフォルトで指定されたKafkaトピックのKafkaパーティションに出力されます。これは、複数のパーティションが並列にあると、binlogの順序(つまり、ビジネスデータの挿入の順序)が乱れる可能性があるためです。

並列度を上げたいが、binlogの順序(つまり、ビジネスデータの挿入の順序)を考慮しない場合は、最初にkafkaのパーティション数を1より大きい値に設定してから、producer_partition_by属性を設定します。

可選択值producer_partition_by = database | table | primary_key | random | カラム

マクスウェルを開始

maxwellスクリプトを書く

maxwell.sh

/root/soft/maxwell-1.25.0/bin/maxwell --config /root/soft/maxwell-1.25.0/config.properties >/dev/null 2>&1 &

起動スクリプトを実行する

sh maxwell.sh

有効になっているか確認してください

マクスウェルが開始されたことがわかりました

[root@zjj101 bin]# jps
123016 Maxwell

消費者を始める

 kafka-console-consumer.sh --bootstrap-server zjj101:9092 --topic gmall2020_db_m

テストを開始します

gmall202004データベースに何気なくテーブルを作成し、追加、削除、変更、およびデータクエリ操作を実行します

現時点では、kafkaコンシューマーがjson形式のデータを持っていることがわかります

[root@zjj101 bin]# kafka-console-consumer.sh --bootstrap-server zjj101:9092 --topic gmall2020_db_m
{
    
    "database":"gmall202004","table":"z_user_info","type":"delete","ts":1610785227,"xid":2119,"commit":true,"data":{
    
    "id":31,"user_name":"li4","tel":"1389999999"}}
{
    
    "database":"gmall202004","table":"z_user_info","type":"insert","ts":1610785232,"xid":2141,"xoffset":0,"data":{
    
    "id":30,"user_name":"zhang3","tel":"13810001010"}}
{
    
    "database":"gmall202004","table":"z_user_info","type":"insert","ts":1610785232,"xid":2141,"commit":true,"data":{
    
    "id":31,"user_name":"li4","tel":"1389999999"}}

おすすめ

転載: blog.csdn.net/qq_41489540/article/details/113800578