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
posted @ 2024-01-23 16:36  张占岭  阅读(190)  评论(0编辑  收藏  举报