大纲
1.⽅案设计
2.安装与配置环境
1.⽅案设计

步骤一:首先需要配置一个crontab定时调度shell脚本,然后该脚本每天凌晨会通过rdbtools⼯具解析Redis的RDB⽂件,接着对解析出的内容进行过滤,把RDB⽂件中的⼤key导出到CSV⽂件。
步骤二:使⽤SQL导⼊CSV⽂件到MySQL数据库中,同时使⽤Canal监听MySQL的binlog⽇志。
步骤三:Canal会发送增量的大key数据消息到RocketMQ,RocketMQ的消费者系统会对增量的大key数据消息进⾏消费,消息中便会包含⼤key的详情信息。这样消费者就可以将⼤key的信息通过邮件等⽅式,通知开发⼈员。
为什么要把⼤key的CSV⽂件导⼊到MySQL存储?为什么不直接监听⼤key的CSV⽂件进⾏通知?
原因一:如果不导⼊MySQL,那么就⽆法使⽤Canal来监听。这样就要开发⼀个程序,定时去扫描Redis节点下解析出来的CSV⽂件。如果Redis集群中有多个节点,那么每⼀个节点都要去扫描。⽽将CSV导⼊到MySQL后,只需要使⽤Canal去监听MySQL表的binlog,就可以把增量数据同步到RocketMQ中,由消费者统⼀进⾏处理。
原因二:解析CSV⽂件⽐直接从MySQL中查询复杂很多,尤其是需要进行信息过滤。导⼊到MySQL后可以通过SQL轻松的对⼤key的记录进⾏条件筛选,并且可以对每天产⽣的⼤key数据进⾏存储分析。
RDB解析⽣成的CSV⽂件结构如下:
database,type,key,size_in_bytes,encoding,num_elements,len_largest_element, expiry
0,string,key1-string,20536,string,17280,17280,
0,list,key1-list,4006,quicklist,24,1530,
2.安装与配置环境
(1)依赖环境
(2)安装Python3 & pip3
(3)安装rdb-tools
(4)安装RocketMQ
(5)安装Canal
(6)rdbtools扫描RDB⽂件
(7)将CSV⽂件导⼊MySQL
(1)依赖环境
Python3、pip3、rdb-tools、Redis、MySQL、JDK、RocketMQ、Canal。
rdb-tools是开源的⼀个python项⽬,它可以⽤来解析Redis的RDB⽂件,但是要先安装Python环境。
连接地址:
https://github.com/sripathikrishnan/redis-rdb-tools
pip是Python的包管理⼯具,安装Python后,这个⼯具就会配套安装好。
(2)安装Python3 & pip3
# 安装编译⼯具
$ yum -y groupinstall "Development tools"
$ yum -y install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gdbm-devel db4-devel libpcap-devel xz-devel
$ yum install libffi-devel -y
# 下载python3.7.0
$ cd /usr/local
$ wget https://www.python.org/ftp/python/3.7.0/Python-3.7.0.tar.xz
$ tar -xvJf Python-3.7.0.tar.xz
# 编译
$ mkdir /usr/local/python3
$ cd Python-3.7.0
$ ./configure --prefix=/usr/local/python3
$ make && make install
(3)安装rdb-tools
# 使⽤pip包管理程序安装rdb-tools
$ pip3 install rdbtools python-lzf
# 配置环境变量
$ vim /etc/profile
# 在⽂件底部最末尾,追加如下两⾏内容
PATH=/usr/local/python3/bin:$PATH
export PATH
验证安装:
# 验证rdbtools是否安装成功
$ rdb -h
(4)安装RocketMQ
一.下载安装包
# 下载安装包,要注意版本与项⽬中依赖的RocketMQ版本兼容
$ wget https://archive.apache.org/dist/rocketmq/4.7.1/rocketmq-all-4.7.1-bin-release.zip
二.修改默认配置
# 解压
$ unzip rocketmq-all-4.7.1-bin-release.zip
# 切换⽬录
$ cd /usr/local/rocketmq-all-4.7.1-bin-release
# 修改nameserver默认堆栈⼤⼩
$ vim ./bin/runserver.sh
# 修改brokerserver默认堆栈⼤⼩
$ vim bin/runbroker.sh
NameServer默认配置如下:
-server -Xms4g -Xmx4g -Xmn2g
-XX:MetaspacesSize=128m -XX:MaxMetaspaceSize=320m
BrokerServer默认配置如下:
-server -Xms8g -Xmx8g -Xmn4g
三.修改BrokerServer的IP地址
$ vim /usr/local/rocketmq-all-4.7.1-bin-release/conf/broker.conf
在broker.conf⽂件中追加如下内容:
# brokerserver所在机器的公⽹IP地址
brokerIP1=192.168.95.129
四.启动RocketMQ
# 启动nameserver
$ nohup sh ./bin/mqnamesrv &
# 查看nameserver启动⽇志
$ tailf ~/logs/rocketmqlogs/namesrv.log
# 启动brokerserver
$ nohup sh bin/mqbroker -n 127.0.0.1:9876 -c conf/broker.conf &
# 查看brokerserver启动⽇志
$ tailf ~/logs/rocketmqlogs/broker.log
五.启动RocketMQ控制台
github地址:https://github.com/apache/rocketmq-externals/tree/release-rocketmq-console-1.0.0
可以从github上clone下载,然后使⽤maven命令打包,然后如下启动:
$ nohup java -jar -server -Xms256m -Xmx256m \
-Drocketmq.config.namesrvAddr=127.0.0.1:9876 -Dserver.port=8080 \
/usr/local/rocketmq-console-ng-1.0.1.jar &
(5)安装Canal
一.下载安装包

最低0.47元/天 解锁文章
763

被折叠的 条评论
为什么被折叠?



