mysql 实例启动利用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语句进行重新执行一次。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值