郑州正规的网站制作,新零售六大模式,北京的制作网站的公司在哪里,tinypng图片压缩网站iLogtail是阿里云日志服务#xff08;SLS#xff09;团队自研的可观测数据采集Agent#xff0c;拥有的轻量级、高性能、自动化配置等诸多生产级别特性#xff0c;可以署于物理机、虚拟机、Kubernetes等多种环境中来采集遥测数据。iLogtail在阿里云上服务了数万家客户主机和…iLogtail是阿里云日志服务SLS团队自研的可观测数据采集Agent拥有的轻量级、高性能、自动化配置等诸多生产级别特性可以署于物理机、虚拟机、Kubernetes等多种环境中来采集遥测数据。iLogtail在阿里云上服务了数万家客户主机和容器的可观测性采集工作在阿里巴巴集团的核心产品线如淘宝、天猫、支付宝、菜鸟、高德地图等也是默认的日志、监控、Trace等多种可观测数据的采集工具。目前iLogtail已有千万级的安装量每天采集数十PB的可观测数据广泛应用于线上监控、问题分析/定位、运营分析、安全分析等多种场景在实战中验证了其强大的性能和稳定性。
在当今云原生的时代我们坚信开源才是iLogtail最优的发展策略也是释放其最大价值的方法。因此我们决定将iLogtail开源期望同众多开发者一起将iLogtail打造成世界一流的可观测数据采集器。
MySQL Binlog背景
MySQL Binlog记录了MySQL的变更日志包括DML、DDL等其中DML不会记录SELECT、SHOW等因为只读的SQL语句不会对数据库的状态产生影响。
Binlog对于MySQL的重要性不言而喻在数据库崩溃的情况下可以借助Binlog进行恢复。因为Binlog记录了每个变更的内容所以理论上可以将数据库的状态恢复到Binlog存在的任意时刻常用数据库备份。
主从复制也是Binlog的一个重要使用场景在读多写少的互联网应用中数据库一主多从的部署架构可以给应用增加更多的响应能力从库从主库同步数据往往也会借助Binlog。
数据库操作审计由于Binlog记录了所有对数据库的更改操作所以一些误操作或者危险操作也会记录其中将Binlog记录下来分析其中的操作行为可以实现轻量级的数据库操作审计追踪其中的误操作发生的时间或者识别危险SQL的发生。
Binlog如此重要业界也有一些方案来同步Binlog的数据如Canal、MaxWell、DTS等。不同的工具可以实现不同的目标iLogtail也提供了便捷的Binlog同步功能iLogtail采集到Binlog后可以将结果输出到各类flusher本文以采集到Kafka为例进行介绍。
理解iLogtail采集Binlog原理
iLogtail内部实现了MySQL Slave节点的交互协议具体流程如下所示。
iLogtail模拟MySQL Slave节点向MySQL master节点发送dump请求。MySQL master节点收到dump请求后会将自身的Binlog实时发送给iLogtail。iLogtail对Binlog进行事件解析、过滤、数据解析等操作并将解析好的数据上传到Flusher。支持Binlog位点
通过指定Binlog的位置支持从Binlog特定位点进行消费。
支持Checkpoint
在iLogtail重启或者机器意外重启的情况下iLogtail会对当前消费的位点进行保存并在下次重新启动时从上次消费的位置进行消费。
支持多种数据库过滤
支持对数据库的表进行黑白名单配置。
支持全局事务IDGTID
支持MySQL数据库服务器的GTID功能避免主从切换引起的数据丢失。
使用场景
本文介绍使用iLogtail对数据库的增删改的Binlog进行采集并且将采集到的数据输出到Kafka。本文以MySQL的示例数据库employees为例进行采集。其中涉及的表为titles。内容如下
emp_no title from_date to_date
10006 Senior Engineer 1990-08-05 9999-01-01
部署iLogtail采集MySQL Binlog
接下来介绍如果使用iLogtail采集MySQL的Binlog
前提条件
安装MySQL并且开启BinlogBinlog为ROW模式参考链接。安装kafka
# 下载、解压
$ wget https://dlcdn.apache.org/kafka/3.2.0/kafka_2.13-3.2.0.tgz
$ tar -xzf kafka_2.13-3.2.0.tgz
$ cd kafka_2.13-3.2.0
# 启动
# Start the ZooKeeper service
# Note: Soon, ZooKeeper will no longer be required by Apache Kafka.
$ nohup bin/zookeeper-server-start.sh config/zookeeper.properties
# Start the Kafka broker service
$ nohup bin/kafka-server-start.sh config/server.properties
创建topic设置为binlog。
bin/kafka-topics.sh--create--topicbinlog--bootstrap-serverlocalhost:9092
更多部署说明详见链接。
安装iLogtail
下载iLogtail
$ wget https://ilogtail-community-edition.oss-cn-shanghai.aliyuncs.com/1.1.0/ilogtail-1.1.0.linux-amd64.tar.gz
$ tar -xzvf ilogtail-1.1.0.linux-amd64.tar.gz
$ cd ilogtail-1.1.0
$ ll
drwxrwxr-x 5 505 505 4096 7月 10 18:00 example_config
-rwxr-xr-x 1 505 505 84242040 7月 11 00:00 ilogtail
-rwxr-xr-x 1 505 505 16400 7月 11 00:00 libPluginAdapter.so
-rw-r--r-- 1 505 505 115963144 7月 11 00:00 libPluginBase.so
-rw-rw-r-- 1 505 505 11356 7月 11 00:00 LICENSE
-rw-rw-r-- 1 505 505 5810 7月 11 00:00 README-cn.md
-rw-rw-r-- 1 505 505 4834 7月 11 00:00 README.md
-rw-rw-r-- 1 505 505 118 7月 14 11:22 ilogtail_config.json
drwxr-xr-x 2 root root 4096 7月 12 09:55 user_yaml_config.d
采集配置
在user_yaml_config.d目录下创建binlog.yaml
enable: true
inputs:- Type: service_canalHost: 127.0.0.1Port: 3306ServerID: 123456Password: xxxxxEnableDDL: trueTextToString: true
flushers:- Type: flusher_kafkaBrokers:- localhost:9092Topic: access-log
$ tree user_yaml_config.d/
user_yaml_config.d/
└── binlog.yaml
启动
$ nohup ./ilogtail stdout.log 2 stderr.log
验证
# 终端1: 启动kafka-console-consumer消费binlog
$ bin/kafka-console-consumer.sh--topicbinlog--from-beginning--bootstrap-serverlocalhost:9092
终端2分别执行三条语句更新数据库
# 分别执行三条sql语句
update titles set title test-update where emp_no 10006 delete from titles where emp_no 10006 INSERT INTO titles (emp_no, title, from_date, to_date) VALUES (10006, Senior Engineer, 1990-08-05, 9999-01-01);
终端1查看结果
# 终端1: 消费到写入的访问日志说明流程正常。
{Time:1657890330,Contents:[{Key:_table_,Value:titles},{Key:_offset_,Value:4308},{Key:_old_emp_no,Value:10006},{Key:from_date,Value:1990-08-05},{Key:_host_,Value:127.0.0.1},{Key:_event_,Value:row_update},{Key:_id_,Value:12},{Key:_old_from_date,Value:1990-08-05},{Key:_gtid_,Value:00000000-0000-0000-0000-000000000000:0},{Key:_db_,Value:employees},{Key:_filename_,Value:mysql-bin.000001},{Key:_old_title,Value:Senior Engineer},{Key:_old_to_date,Value:9999-01-01},{Key:emp_no,Value:10006},{Key:title,Value:test-update},{Key:to_date,Value:9999-01-01}]}
{Time:1657890333,Contents:[{Key:_id_,Value:13},{Key:_filename_,Value:mysql-bin.000001},{Key:emp_no,Value:10006},{Key:title,Value:test-update},{Key:_db_,Value:employees},{Key:_table_,Value:titles},{Key:_event_,Value:row_delete},{Key:from_date,Value:1990-08-05},{Key:to_date,Value:9999-01-01},{Key:_host_,Value:127.0.0.1},{Key:_gtid_,Value:00000000-0000-0000-0000-000000000000:0},{Key:_offset_,Value:4660}]}
{Time:1657890335,Contents:[{Key:_offset_,Value:4975},{Key:emp_no,Value:10006},{Key:title,Value:Senior Engineer},{Key:from_date,Value:1990-08-05},{Key:_gtid_,Value:00000000-0000-0000-0000-000000000000:0},{Key:_filename_,Value:mysql-bin.000001},{Key:_table_,Value:titles},{Key:_event_,Value:row_insert},{Key:_id_,Value:14},{Key:to_date,Value:9999-01-01},{Key:_host_,Value:127.0.0.1},{Key:_db_,Value:employees}]}
总结
通过以上的示例演示了如何使用iLogtail采集MySQL的Binlog日志。借助iLogtail进行简单的配置即可完成对Binlog的采集同时iLogtail也支持更多的灵活的配置对采集的格式进行配置iLogtail基于Canal的方案来对数据库进行采集。
通过采集Binlog可以在SLS对数据库的增量改动进行查询、分析、可视化也可以借助SLS的告警功能对于危险SQL进行监控告警配置在SLS可以进行低成本长期存储高性能查询来实现审计的需求。
关于iLogtail
iLogtail作为阿里云SLS提供的可观测数据采集器可以运行在服务器、容器、K8s、嵌入式等多种环境支持采集数百种可观测数据日志、监控、Trace、事件等已经有千万级的安装量。目前iLogtail已正式开源欢迎使用及参与共建。
GitHub: https://github.com/alibaba/ilogtail
社区版文档https://ilogtail.gitbook.io/ilogtail-docs/about/readme
企业版官网https://help.aliyun.com/document_detail/65018.html
原文链接
本文为阿里云原创内容未经允许不得转载。