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"}}