Mysql binlog日志是什么?如何使用binlog恢复数据库?
admin
2023-04-19 02:42:51
0

下文主要给大家带来Mysql binlog日志是什么?如何使用binlog恢复数据库?,希望Mysql binlog日志是什么?如何使用binlog恢复数据库?能够带给大家实际用处,这也是我编辑这篇文章的主要目的。好了,废话不多说,大家直接看下文吧。

初识MySQL  日志binlog
MySQL重要log,二进制日志文件,记录所有DDL和DML语句(除select),事件形式记录,包含语句所执行的消耗时间,事务安全型。
DDL(数据库定义语言),主要命令有create、alter、drop等。DDL主要定义或改变表table的结构、数据类型。建表时使用。
MDL(数据操纵语言),主要命令有select、update、insert、delete。

Mysql binlog日志是什么?如何使用binlog恢复数据库?

mysqlbinlog常见选项:
--start-datetime:从二进制中读取指定时间戳。
--stop-datetime:从二进制中读取指定时间戳。
--start-position:从二进制中读取指定position事件位置。
--stop-position:从二进制中读取指定position事件位置。

binlog日志使用场景:
1)MySQL主从复制:MySQL在replication在Master端开启binlog,master将二进制文件传递给slaves来达到master-slave数据一致。
2)数据恢复:通过mysqlbinlog工具恢复数据
binlog日志包括两类文件:
1)二进制日志索引文件(文件后缀名.index)用于记录所有二进制文件
2)二进制日志文件(文件后缀名.00000)记录数据库所有DDL和DML(select除)语句事件

开启binlog日志和基本操作

开启binlog:
/etc/my.cnf文件
log-bin=mysql-bin

mysql命令操作:

查看日志开启
mysql>show variables like 'log_%';

查看所有binlog列表
mysql>show master logs;

查看master状态,最后一个binlog日志的编号名称,及最后一个操作事件pos结束点(position)值。
mysql>show master status;

刷新log日志,开始产生一新的编号的binlog日志文件
mysql>flush logs;
注:mysqld服务重启时,也会执行此命令,刷新binlog日志。

重置(清空)所有binlog
mysql>reset master;

MySQL binlog日志内容查看
binlog日志为二进制文件,cat、vim等工具无法打开,使用自带的mysqlbinlog命令查看

binlog内容分析:

# at 28226679
#181116 0:20:01 server id 776499703 end_log_pos 28226710 CRC32 0xb12373d2 Xid = 54012151
COMMIT/*!*/;
SET @@SESSION.GTID_NEXT= 'AUTOMATIC' /* added by mysqlbinlog */ /*!*/;
# at 28226710
#181116 0:20:35 server id 3095565156 end_log_pos 28226757 CRC32 0x05f2d78a Rotate to mysql-bin.001121 pos: 4
DELIMITER ;
# End of log file
ROLLBACK /* added by mysqlbinlog */;
/*!50003 SET COMPLETION_TYPE=@OLD_COMPLETION_TYPE*/;
/*!50530 SET @@SESSION.PSEUDO_SLAVE_MODE=0*/;

server id :数据库主机服务号
end_log_pos:数据库SQL结束时pos节点

binlog日志查看命令:
mysql> show binlog events in ‘mysql-bin.001120’\G;

binlog 从pos点100开始查,查询10条
mysql> show binlog events in ‘mysql-bin.001120’ from 100 limit 10\G;

利用binlog日志恢复数据库
1)恢复就近的完整备份库
mysql -uusername -p -v db_test -h 192.168.1.100 < ./db_test .sql

2)通过binlog找到要恢复的--start-position点 和  --stop-position
binlog:mysql-bin.001118 、mysql-bin.001119 、mysql-bin.001120

mysqlbinlog -v --base64-output=DECODE-ROWS  /data/binlog/mysql-bin.001118 | head -10
mysqlbinlog -v --base64-output=DECODE-ROWS /data/binlog/mysql-bin.001120 | grep -C 30 -i "22:05:01"

3)binlog恢复
/bin/mysqlbinlog --start-position=120 --stop-position=2174941 /data/binlog/mysql-bin.001118 /data/binlog/mysql-bin.001119 /data/binlog/mysql-bin.001120 |/bin/mysql -uusername -p -v db_test -h 192.168.1.100
--start-position是备份后记录下的pos点, --stop-position是误操前的pos点,如果批多个binlog文件,那么start-position是第一个binlog文件的pos点,stop-position是最后一个binlog文件的pos点

总结:所谓恢复,就是用mysql保存的binlog日志中指定的区间段的sql语句进行重新执行一次。

对于以上关于Mysql binlog日志是什么?如何使用binlog恢复数据库?,大家是不是觉得非常有帮助。如果需要了解更多内容,请继续关注我们的行业资讯,相信你会喜欢上这些内容的。

相关内容

热门资讯

著名作曲家在沈病逝!《十五的月... 12月29日,著名作曲家铁源在沈阳因病逝世,代表作《十五的月亮》《在那桃花盛开的地方》家喻户晓。铁源...
玩家分享攻略“决胜奕福辅助器?... 家人们!今天小编来为大家解答决胜奕福透视挂怎么安装这个问题咨询软件客服徽9784099的挂在哪里买很...
【特稿】“人工智能时代”领衔德... “人工智能时代”领衔德国年度十大热词 李函林 德国语言协会近日公布2025年度十大热词,其中热度最高...
AI和算力的升级大幅提高了轮式... 一、从“看见”到“看懂” · 传统方式:依赖预先编程的规则和简单的传感器(如磁条、二维码)进行导航,...
【第一财经】“新青鸟拼三张真的... 【第一财经】“新青鸟拼三张真的有挂吗?”(果然有透视挂)您好,新青鸟拼三张这个游戏其实有挂的,确实是...
【今日要闻】“富豪麻将开挂器?... 网上科普关于“富豪麻将有没有挂”话题很是火热,小编也是针对富豪麻将作*弊开挂的方法以及开挂对应的知识...
最新引进“新圣游炸/金/花有没... 家人们!今天小编来为大家解答新圣游炸/金/花透视挂怎么安装这个问题咨询软件客服徽9752949的挂在...
最新引进“新皇豪牛牛到底有挂吗... 最新引进“新皇豪牛牛到底有挂吗?”(必胜开挂神器)您好,新皇豪牛牛这个游戏其实有挂的,确实是有挂的,...
玩家分享攻略“鱼扑克有挂吗?”... 网上科普关于“鱼扑克有没有挂”话题很是火热,小编也是针对鱼扑克作*弊开挂的方法以及开挂对应的知识点,...
最新引进“微乐陕西挖坑开挂器?... 网上科普关于“微乐陕西挖坑有没有挂”话题很是火热,小编也是针对微乐陕西挖坑作*弊开挂的方法以及开挂对...