mysqlbinlog~导出sql总结
mysqlbinlog
是MySQL数据库中的一个实用程序,它用于处理二进制日志文件(也称为“binlogs”)。这些文件包含了在MySQL服务器上发生的所有更改和操作的信息。mysqlbinlog
工具可以帮助你查看、分析或者应用这些日志。
基础介绍
下面是一些关于mysqlbinlog
的基本介绍:
功能
- 查看二进制日志文件的内容。
- 将二进制日志文件转换为文本格式,方便查看和理解。
- 过滤特定时间段的日志记录。
- 过滤特定数据库或表的日志记录。
常见使用场景
- 数据库故障恢复:如果数据库出现问题,可以通过
mysqlbinlog
将二进制日志应用到备份的数据上,从而恢复到问题发生前的状态。 - 主从复制:在主从复制中,
mysqlbinlog
可以在从服务器上应用主服务器的二进制日志,以保持数据的一致性。 - 审计:通过分析
mysqlbinlog
的输出,可以查看数据库的修改历史,进行安全审计。
使用示例
# 查看二进制日志文件的内容
mysqlbinlog /var/lib/mysql/binlog.000001
# 将二进制日志文件转换为文本格式
mysqlbinlog --base64-output=DECODE-ROWS /var/lib/mysql/binlog.000001 > binlog.txt
以上就是mysqlbinlog
的基本介绍,希望对你有所帮助。
高级技巧
- 查看某个时间段的
../bin/mysqlbinlog --start-datetime="2023-12-06 09:30:00" --stop-datetime="2023-12-06 09:40:59" mysql-bin.000027
- 导出某个binlog,并进行转码
../bin/mysqlbinlog --base64-output=DECODE-ROWS --verbose mysql-bin.000011 > mysql-bin.000011.sql
- 导出某个时间段的binlog
../bin/mysqlbinlog --start-datetime="2023-12-06 09:30:00" --stop-datetime="2023-12-06 09:40:59" --base64-output=DECODE-ROWS --verbose mysql-bin.000027 > mysql-bin.000027.sql
- 导出某个时间段的binlog,处理
unknown variable 'default-character-set=utf8mb4'
,需要添加--no-defaults
/usr/local/mysql/bin/mysqlbinlog --no-defaults --start-datetime="2024-01-19 00:00:00" --stop-datetime="2024-01-22 00:00:59" --base64-output=DECODE-ROWS --verbose mysql-bin.000036 > mysql-bin.000036-2.sql
- 标准输出控制台
/usr/local/mysql/bin/mysqlbinlog --no-defaults --start-datetime="2024-01-19 00:00:00" --stop-datetime="2024-01-22 00:00:59" --base64-output=DECODE-ROWS --verbose mysql-bin.000036 -stdout
- 中文在vi和下载后是乱码了,但cat不是乱码,可用iconv转换
iconv -f UTF-8 -t GBK -c mysql-bin.000036-3.sql -o mysql-bin.000036-3-2.sql