Mysql binlog日志是什么?如何使用binlog复原数据库?
发布时间:2023-09-13 14:35:05 所属栏目:MySql教程 来源:
导读:下文主要给大家带来Mysql binlog日志是什么?如何使用binlog恢复数据库?,希望Mysql binlog日志是什么?如何使用binlog恢复数据库?能够带给大家实际用处,这也是我编辑这篇文章的主要目的。好了,废话不多说,大家
下文主要给大家带来Mysql binlog日志是什么?如何使用binlog恢复数据库?,希望Mysql binlog日志是什么?如何使用binlog恢复数据库?能够带给大家实际用处,这也是我编辑这篇文章的主要目的。好了,废话不多说,大家直接看下文吧。 初识MySQL 日志binlog MySQL重要log,二进制日志文件,记录所有DDL和DML语句(除select),事件形式记录,包含语句所执行的消耗时间,事务安全型。 DDL(数据库定义语言),主要命令有create、alter、drop等。DDL主要定义或改变表table的结构、数据类型。建表时使用。 MDL(数据操纵语言),主要命令有select、update、insert、delete。 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语句进行重新执行一次。 (编辑:聊城站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
推荐文章
站长推荐