背景:
工作中我们为了查看MySQL中数据修改的历史记录时,会通过查看binlog日志。但由于binlog日志是二进制文件,需要解析之后,才能用文本查看工具打开。这次笔者使用flink进行实时统计时就多次遇到了这个问题。经常看笔者最近博客的可以知道,笔者所在的公司项目部目前采用的是阿里云的MysqlRDS。那么阿里云的RDS应该如何操作呢?下面就总结一下防止忘记。也希望对大家有一定的作用。
分析及操作
1、查找日志
首先我们查看mysql中的binlog日志文件,执行如下命令:
SHOW BINARY LOGS;
这一步是为了了解当前的数据的binlog写在那个文件,当然这样还是看不出来需要查看阿里云工作台
>> 云数据库RDS版
>> 找到相关实例
>> 进入管理界面
>> 找到备份恢复
>> 基础备份列表
>> 日志备份
>> 选择相应时间段的biglog
我们通过当前时间是18:00看,数据文件还没有生成,这里说一下,如果日志文件还没有结束再阿里云坑台是看不到的,如果想要理解结束当前的日志写文件可以执行如下操作:
FLUSH LOGS;
2、下载binlog日志文件
由于线上笔者没有执行,等待生成文件后笔者下载了文件,具体下载操作如下:阿里云给了两个地址一个是内网地址一个是外网地址,笔者这里使用了内网地址,毕竟内网地址不用花钱嘿嘿。
如果大家想了解官网给的资料也可以看这里提示板的参考资料给的详细操作
我们复制该链接,然后在服务器下载如下命令:
nohup curl -C - --retry 10 "备份文件下载地址" -o 自定义文件名 > 下载输出日志到对应文件 &
示例:
nohup curl --retry 10 "http://rdslog-bj-v4-3az.oss-cn-beijing-internal.aliyuncs.com/custins67712248/hostins25128214/mysql-bin.000648?OSSAccessKeyId=LTAI4G2wxd32KLGARfidLvLd&Expires=1688897495&Signature=mUEef7pC%2B5QeWbRyUllbRc%2FuSkw%3D" -o mysql-bin.000396 > ./download-000396.log &
- –retry 10:任务失败时的重试次数,以上示例表示重试10次。
- -C -:支持自动断点续传。
- -o:下载的目标路径及文件名。
3、解析日志
然后使用mysql命令解析下载binlog日志:
mysqlbinlog -vv --base64-output=DECODE-ROWS mysql-bin.000648 > /data/tmp/mysql-bin-000648.log
- 解析: mysql-bin.000648是从rds上下载的binlog备份文件,解析之后的文件放在mysql-bin-000648.log文件中
4、查看日志
解析之后的log文件,可以直接用vi、cat之类的文本查看工具直接访问
总结:
此次操作仅为备忘,也希望这篇【mysql实践】如何查看阿里云RDS的MySQL库中的binlog日志 对大家有帮助。