一、Zookeeper
1.1、下载zk
wget http://mirrors.hust.edu.cn/apache/zookeeper/zookeeper-3.4.10/zookeeper-3.4.10.tar.gz
tar -zxvf zookeeper-3.4.10.tar.gz
1.2、制定配置文件
cd zookeeper-3.4.10/conf
cp zoo_sample.cfg zoo.cfg
1.3、启动zk
./zkServer.sh start
二、Kafka
2.1、下载Kafka
wget http://mirror.bit.edu.cn/apache/kafka/2.1.0/kafka_2.12-2.1.0.tgz
tar -zxvf kafka_2
2.2、启动Kafka
bin/kafka-server-start.sh config/server.properties
2.3、制定Kafka内存、并且启动Kafka
2.4、创建一个为“maxwell“的topic
bin/kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 1 --partitions 1 --topic maxwell
三、Maxwell组件
3.1、下载maxwell组件
wget https://github.com/zendesk/maxwell/releases/download/v1.10.7/maxwell-1.10.7.tar.gz
tar -zxvf maxwell-1.10.7.tar.gz
四、更新数据库权限
4.1、给数据库新增用户名/密码均为maxwell的权限
GRANT ALL on maxwell.* to'maxwell'@'%' identified by 'maxwell';
GRANT SELECT, REPLICATION CLIENT, REPLICATION SLAVE on *.* to 'maxwell'@'%';
flush privileges;
4.2、启动maxwell
bin/maxwell --user='maxwell' --password='maxwell' --host='127.0.0.1'
五、实践
修改表中的数据
然后看到maxwell的日志
六、bootstrap引导操作
Maxwell提供了对于需要对同步表的初始化操作,针对初始化的问题,Maxwell 提供了一个命令工具 maxwell-bootstrap 帮助我们完成数据初始化,maxwell-bootstrap 是基于 SELECT * FROM table 的方式进行全量数据初始化,不会产生多余的binlog!
如果进行过maxwell抽取, 需要清空binlog, 删除maxwell库中的表, 然后启动Kafka、Maxwell和Kafka消费者, 再启动bootstrap命令:
bin/maxwell-bootstrap --user maxwell --password 123456 --host 127.0.0.1 --database test --table test --client_id maxwell
注意:**--bootstrapper=sync**
时,在处理bootstrap时,会阻塞正常的binlog解析;--bootstrapper=async
时,不会阻塞。
也可以执行下面的SQL,在 maxwell.bootstrap
表中插入记录,手动触发:
insert into maxwell.bootstrap (database_name, table_name, where_clause) values ('test', 'test', 'id>1000');
参数 | 说明 |
---|---|
–log_level LOG_LEVEL | 日志级别(DEBUG, INFO, WARN or ERROR) |
–user USER | MySQL 用户名 |
–password PASSWORD | MySQL 密码 |
–host HOST | MySQL 地址 |
–port PORT | MySQL 端口 |
–database DATABASE | 要bootstrap的表所在的数据库 |
–table TABLE | 要引导的表 |
–where WHERE_CLAUSE | 设置过滤条件 |
–client_id CLIENT_ID | 指定执行引导操作的Maxwell实例 |