maxwell 官网地址:http://maxwells-daemon.io/
因为官网是纯英文的,倒是不难懂,但总觉得写的略粗糙(也可能笔者英文水平确实拉胯,有待提高)。所以还是自己百度了一下。
当mysql的主库发生变更的时候(DDL和DML),master会将日志记录到二进制日志文件中,slave拷贝二进制日志,并重做日志中的相关操作,从而保证与master的一致性。
maxwell其实就是利用这个原理,从mysql获取二进制文件(Binlog),并生成 JSON 格式的消息,作为生产者发送给 Kafka,Kinesis、RabbitMQ、Redis、Google Cloud Pub/Sub、文件或其它平台的应用程序。
cannel也可以做这件事儿,请参考一个大神写的
知乎帖(https://zhuanlan.zhihu.com/p/177001630) 原理类似
binlog记录了mysql的操作日志(DDL和DML)。一方面保证了主从一致,另一方面也方便数据的恢复。
找到mysql的配置文件
locate my.cnf
在参数节 [mysqld] 下可以配置参数 log-bin。参数值列表如下
参数值 | 说明 | 优势 | 不足 |
---|---|---|---|
statement | 语句级,记录每次一执行写操作的语句 | 节约空间 | 可能会导致主从数据不一致(update某张表的时间字段为 now()) |
row | 记录每次操作后每行记录的变化 | 确保数据一致性 | 空间消耗较大 |
mixed | 混合级别,默认还是 statement,某些情况下会以row方式维护 | 节省空间,同时兼顾了一定的一致性 | 仍然会有不一致的情况 |
上传安装包并解压
tar -zxvf 安装包路径 -C 安装路径
登录mysql库
mysql -uroot -p密码
创建maxwell库
create database maxwell;
修改密码级别
密码最小长度为4,密码强度为0
set global validate_password_length=4;
set global validate_password_policy=0;
具体参数参考本文档的 五、其他
sudo vim /etc/my.cnf
在 [mysqld] 下添加参数
server_id=1
log-bin=mysql-bin
binlog_format=row
#binlog-do-db=test_maxwell
重启mysql
sudo systemctl restart mysqld
查看日志
sudo ls -l /var/lib/mysql
bin/maxwell --user='maxwell' --password='123456' --host='hadoop102' --producer=stdout
producer 生产者模式(stdout:控制台 kafka:kafka 集群)
cp config.properties.example config.properties
修改 config.properties
bin/maxwell --config ./config.properties
查看密码策略
show variables like 'validate_password%';
属性 | 值 | 描述 |
---|---|---|
validate_password_check_user_name | OFF | 设置为ON的时候表示能将密码设置成当前用户名 |
validate_password_dictionary_file | 于检查密码的字典文件的路径名,默认为空 | |
validate_password_length | 4 | 密码的最小长度 |
validate_password_mixed_case_count | 1 | 如果密码策略是中等或更强的,validate_password要求密码具有的小写和大写字符的最小数量。对于给定的这个值密码必须有那么多小写字符和那么多大写字符。 |
validate_password_number_count | 1 | 密码必须包含的数字个数 |
validate_password_policy | LOW | right-aligned 密码强度检验等级,可以使用数值0、1、2或相应的符号值LOW、MEDIUM、STRONG来指定。 0/LOW:只检查长度。 1/MEDIUM:检查长度、数字、大小写、特殊字符。 2/STRONG:检查长度、数字、大小写、特殊字符、字典文件。 |
validate_password_special_char_count | 1 | 密码必须包含的特殊字符个数 |
殊字符个数 |