MySQL二进制日志里保存会造成或可能造成数据变化的SQL语句。通过二进制日志可以完成如实时异地容灾备份、读写分离、数据恢复等功能。下面,我们一起来看看Mysql二进制日志。

开启bin-log日志

Mysql默认是没有开启bin-log日志的,需要我们自己去添加配置。log-bin=mysql-binbinlog_format=mixedserver-id= 1expire_logs_days = 10log-bin 配置了该项后,即表示开启二进制日志功能。mysql-bin是bin-log日志文件名。

expire_logs_days = 10 表明只存放最近10天的bin-log日志。

一般bin-log日志存放在 mysql安装路径/var/下面

运维提示:二进制日志文件与数据库数据文件最好不要放在同一块硬盘上,如果存放数据文件的硬盘坏了,可以用另一块硬盘的二进制日志来恢复数据

几个有用的命令

flush logs:生成新的bin-log日志

show master status:查看最后一个bin-log日志状态。

reset master:清空所有bin-log文件

mysql > show master status

Mysql日志的查看

因为该日志是二进制日志,所以用一般的命令cat或vim查看会是一推乱码。Mysql为我们提供了工具mysqlbinlog。用它就可以来查看了。./mysqlbinlog ../var/mysql-bin.000015……# at 123#2006018:35:19 server id 1end_log_pos 154 CRC32 0xd25b404ePrevious-GTIDs# [empty]SET @@SESSION.GTID_NEXT= 'AUTOMATIC' /* added by mysqlbinlog */ /*!*/;DELIMITER ;# End of log file/*!50003 SET COMPLETION_TYPE=@OLD_COMPLETION_TYPE*/;/*!50530 SET @@SESSION.PSEUDO_SLAVE_MODE=0*/;……at:sql开始时pos节点

server_id:数据库主机的服务号;

end_log_pos 154:sql结束时的pos节点

mysqlbinlog常见的选项有以下几个:

--start-datetime:从二进制日志中读取指定等于时间戳或者晚于本地计算机的时间

--stop-datetime:从二进制日志中读取指定小于时间戳或者等于本地计算机的时间 取值和上述一样

--start-position:从二进制日志中读取指定position 事件位置作为开始。

--stop-position:从二进制日志中读取指定position 事件位置作为事件截至

-d,--database=name:只查看指定数据库的日志操作

使用bin-log日志来恢复数据

导出sql文件命令:mysqldump 数据库名字 [数据表名字1[ 数据表名字2...]] > 外部文件目录(建议使用.sql)

sql文件导入数据库:mysql -u** -p**数据库名字 < 备份文件目录

现在模拟一种场景:一数据库每晚3点定时备份,第二天网站正常运行了半天,突然在下午5点钟的时候,程序员小A不小心,DELETE 时候没有加WHERE 条件,然后其中某张表数据全没了。然后小A找到技术总监大圣,让大圣帮忙恢复数据。

binlog_test 数据库只有一张user表

凌晨三点时没备份前的数据如下:+---------+----------+---------------------+| user_id | username | add_time|+---------+----------+---------------------+|1 | gwx| 2018-07-05 13:00:31 ||2 | snn| 2018-07-05 14:00:00 ||3 | zy| 2018-07-05 15:00:00 |+---------+----------+---------------------+凌晨3点到了,备份数据mysqldump binlog_test -l -F > /root/sql_backup/20180706.sqlll /root/sql_backup/总用量 4-rw-r--r-- 1 root root 2149 7月6 13:42 20180706.sql=======数据备份完成=========网站正常运行一段时间,有许多用户注册INSERT INTO `user` (username) values('user1'),('user2'),('user3');Query OK, 3 rows affected (0.01 sec)Records: 3Duplicates: 0Warnings: 0select * from user;+---------+----------+---------------------+| user_id | username | add_time|+---------+----------+---------------------+|1 | gwx| 2018-07-05 13:00:31 ||2 | snn| 2018-07-05 14:00:00 ||3 | zy| 2018-07-05 15:00:00 ||4 | user1| 2018-07-06 15:01:18 ||5 | user2| 2018-07-06 15:01:18 ||6 | user3| 2018-07-06 15:01:18 |+---------+----------+---------------------+==============新增了3个用户user1 user2 及user3==============到了下午5点钟,小A开始犯傻了DELETE FROM user;Query OK, 6 rows affected (0.00 sec)=========没where条件,数据全没了===========小A找到大圣帮忙恢复数据,大圣先把昨晚凌晨三点数据给恢复了service nginx stop;# 大圣先关闭了nginx,使网站用户暂时访问不了数据库Stoping nginx...done MariaDB [binlog_test]> flush logs;#生成新的binlog日志MariaDB [binlog_test]> show master status;+------------------+----------+--------------+------------------+| File| Position | Binlog_Do_DB | Binlog_Ignore_DB |+------------------+----------+--------------+------------------+| mysql-bin.000003 |1536 |||+------------------+----------+--------------+------------------+mysql -v -f binlog_test < /root/sql_backup/20180706.sql这时候大圣已经把昨晚凌晨3点时候数据恢复了MariaDB [binlog_test]> select * from user;+---------+----------+---------------------+| user_id | username | add_time|+---------+----------+---------------------+|1 | gwx| 2018-07-05 13:00:31 ||2 | snn| 2018-07-05 14:00:00 ||3 | zy| 2018-07-05 15:00:00 |+---------+----------+---------------------+=============昨晚凌晨三点数据恢复完成===============接下来恢复凌晨三点到DELETE间段数据

mysql 二进制日志变化_MySQL运维之二进制日志相关推荐

  1. MySQL通用优化技巧 | Ucloud运维在线微信群分享

    MySQL通用优化技巧 | Ucloud运维在线微信群分享 2015-09-17  MySQL中文网 本文根据DevOps华南运维圈@UCloud微信群「大话运维」的嘉宾分享整理而成.「大话运维」将邀 ...

  2. 运维必备——ELK日志分析系统

    目录 一.ELK日志分析系统概述 (1)传统日志服务器的优点与缺点和为什么要使用ELK日志分析系统 (2)ELK日志分析系统日志的分类 (3)ELK日志分析系统的分类 --Elasticsearch: ...

  3. bind blz mysql_MySQ DBAL重点剖析课程 企业级MySQL系统安全与DBA运维日常事务管理 运维DBA必备宝典...

    MySQ DBAL重点剖析课程 企业级MySQL系统安全与DBA运维日常事务管理 运维DBA必备宝典 本资源由JAD资源网收集整理丨www.jiuandun.com 资源简介 MySQ DBAL重点剖 ...

  4. 本周四晚8点直播预告丨探秘MySQL极限,解锁核心运维关卡

    点击上方蓝色字关注我们~ 探秘MySQL极限,解锁核心运维关卡--3月3日20:00 根据 DB-engine 流行度显示,MySQL 是最流行的开源关系型数据库管理系统,在 WEB 应用方面,是最好 ...

  5. mysql维护 运维_MySQL运维之--日常维护操作

    MySQL运维之--日常维护操作 http://blog.csdn.net/guoyjoe/article/details/46697825 一.Linux内核和发行版本 uname -a cat / ...

  6. mysql运维工资_MySQL运维踩坑

    image ZERO 背景 本文主要是介绍在MySQL使用运维过程中所遇到的一些坑爹的地方,予自己以做记录! 前言 因操作系统重装之后,安装了mysql5.7,而由此带来了一系列的问题,现将解决这些m ...

  7. 运维人员mysql如何访问_MySQL运维实战 之 PHP访问MySQL你使用对了吗

    原标题:MySQL运维实战 之 PHP访问MySQL你使用对了吗 大家都知道,slow query系统做的好不好,直接决定了解决slow query的效率问题 一个数据库管理平台,拥有一个好的slow ...

  8. mysql运维备份_MySQL运维经验

    原标题:MySQL运维经验 1. 概要 每台机器都使用多实例的模型. 每个机器放多个实例,每个实例放多个DB. 多实例之间没有进行资源隔离,这么做是让每个实例都能发挥最大性能. 目前大部分核心业务已切 ...

  9. Mysql基于GTID复制模式-运维小结 (完整篇)

    先来看mysql5.6主从同步操作时遇到的一个报错: mysql> change master to master_host='192.168.10.59',master_user='repli ...

最新文章

  1. Linux与云计算——第二阶段 第五章:存储Storage服务器架设—分布式存储Ceph
  2. Py之Matplotlib:python包之Matplotlib库图表绘制经验总结(中英文字体修改、横坐标文字进行横/纵向显示、控制坐标轴范围等)之详细攻略
  3. [BZOJ2342] [Shoi2011]双倍回文(manacher)
  4. 吴裕雄--天生自然 PHP开发学习:数组
  5. Qt for Android创建AndroidManifest.xml和Java类文件
  6. 一个简单的blog系统(四) 实现用户页面和文章页面
  7. Win7重启后IP地址无效
  8. mysql 同一天多条记录只取第一条_MySQL面试高频100问(二)
  9. Linux系统启动流程图
  10. matlab线性代数对角化,工程线性代数(MATLAB版) (2007年7月)
  11. 富士通Fujitsu DPK8510E 打印机驱动
  12. 解决nohup.out文件过大的方法
  13. 【GT】Assembler 源码解读及使用 !Cocos Creator!
  14. E - New Year Snowmen
  15. 下一个AI领域的高薪方向:强化学习与智能决策研究班2023年春季招生启事
  16. #父与子的编程之旅#第十三章
  17. Kitty用HTML和css咋做,使用CSS3代码绘制可爱的Hello Kitty猫
  18. 2055013-56-2,Ald-Ph-PEG2-amine TFA salt,CHO-Ph-PEG2-amine TFA
  19. 可以让男人看一遍哭一遍的文章(转贴)
  20. jQuery---链式编程

热门文章

  1. c盘清理代码_拒接卡顿,从c盘减负、系统修复及网络加速做起!奥利~~~
  2. 安卓手机主题软件_类似主题软件下载-类似主题安卓官方版下载v2.6.6.3
  3. 【Python基础知识-pycharm版】第一节-基础
  4. java从1开始计时用线程_java – Python – 线程,计时或函数使用?
  5. 【KPGNN】运行错误与成功后的合集
  6. 为了养成NLP卷王,我画了一张路线图
  7. 算法工程师怎样提升业务理解能力?
  8. BAT架构师进阶:大型网站架构书籍推荐
  9. 论文浅尝 - CIKM2021 | DT-GCN: 一种双曲空间中的数据类型感知的知识图谱表示学习模型...
  10. 潜在语义分析原理以及python实现代码!!!!