`

浅析MySql二进制日志的应用

 
阅读更多

mysql有4种不同的日志,分别是二进制日志,查询日志,慢查询日志和错误日志,这些日记记录着数据库工作的方方面面,可以帮助我们了解数据库的不同方 面的踪迹,下面先介绍二进制日志的作用和使用方法,并利用二进制日志对数据库进行各种维护和优化,其他日志也会在后面陆续会做详细的介绍。

二进制日志(bin-log日志)

上一篇介绍mysql主从配置的blog中,已经提过bin-log日志的作用和使用,bin-log日志记录了所有的DDL和DML的语句,但不包括查询的语句,语句以事件的方式保存,描述了数据的更改过程,此日志对发生灾难时数据恢复起到了极为重要的作用。

开启
mysql默认是没有开发bin-log日志,首先我们需要开启bin-log日志,在my.cnf中修改



指定了bin-log日志的路径,开启日志后需要myssqladmin flush log才生效,重启后我们发现在刚才设定的路径新增了log文件,这就是我们需要的二进制日志



由于日志是以二进制方式存储的,不能直接读取,需要使用mysql自带的mysqlbinlog工具来进行查看
语法如下:

#mysqlbinlog mysql-bin.000002


现在我们尝试向test1表插入数据



然后使用mysqlbinlog工具进行日志查看

#mysqlbinlog mysql-bin.000002 -d test




清理

如果每天都会生成大量的二进制日志,这些日志长时间不清理的话,将会对磁盘空间带来很大的浪费,所以定期清理日志是DBA维护mysql的一个重要工作

1)RESET MASTER
在上面查看日志存放的文件夹中,二进制日志命名的格式是以mysql-bin.*,*代表日志的序号,序号是递增的,其中还有mysql-bin.index是日志的索引文件,记录了日志的最大序号
我们执行RESET MASTER命名删除全部日志



查看删除后的日志



可以看到,以前的日志全部被清空,新的日志从00001开始

2)PURGE MASTER LOGS TO & PURGE MASTER LOGS BEFORE
执行PURGE MASTER LOGS TO 'mysql-bin.******'命令,是将'******'编号之前的所有日志进行删除
执行PURGE MASTER LOGS BEFORE 'yyyy-mm-dd hh:mm:ss'命令,是将在'yyyy-mm-dd hh:mm:ss'时间之前的所有日志进行删除

3)-EXPIRE_LOGS_DAYS
此参数是设置日志的过期天数,过期的日志将会被自动删除,这有利于减少我们管理日志的工作量,需要修改my.cnf



这里我们设定保存日志为3天,3天之后过期的日志将被自动删除

恢复

bin-log是记录着mysql所有事件的操作,当mysql发生灾难性错误时,可以通过bin-log做完整恢复,基于时间点的恢复,和基于位置的恢复

完整恢复,假定我们每天凌晨2点都会使用mysqldump备份数据库,但在第二天早上9点由于数据库出现了故障,数据无法访问,需要恢复数据,先使用昨天凌晨备份的文件进行恢复到凌晨2点的状态,在使用mysqlbinlog恢复自mysqldump备份以来的binlog
mysql localhost mysql-bin.000001 | mysql -uroot -p
这样数据库就可以完全的恢复到崩溃前的完全状态

基于时间点的恢复,由于误操作,比如说删除了一张表,这时使用上面讲的完全恢复是没有用的,因为日志里面还存在误操作 的语句,,我们需要的是恢复到误操作前的状态,然后跳过误操作的语句,再恢复后面操作的语句,假定我们删除了一张表的误操作发生在10:00这个时间点, 我们可以使用下面的语句用备份和binlog将数据恢复到故障前

mysqlbinlog --stop-date='2010-09-04 9:59:59' /var/log/mysql-bin.000001 | mysql -uroot -p


然后跳过误操作的时间点,继续执行后面的binlog

mysqlbinlog --start-date='2010-09-04 10:01:00' /var/log/mysql-bin.000001 | mysql -uroot -p


其中--stop-date='2010-09-04 9:59:59' 和 --start-date='2010-09-04 10:01:00' 其中的时间是你误操作的时间点,当然了,这个时间点你需要你自己计算的,而且这个时间点还可以涉及到的不只是误操作,还可以有正确的操作也被跳过去了。

基于位置恢复,由于上面提到的,使用基于时间点的恢复可能出现,在一个时间点里面可能存在误操作和其他正确的操作,所以我们需要一种更为精确的恢复方式
使用mysqlbinlog查看二进制,可看到



其中drop tables test1这个误操作的end_log_pos为8879917,几下这个id,得出它前后操作的id分别为8879916,8879918
我们将进行位置恢复操作

mysqlbinlog --stop-position='8879916' /var/log/mysql-bin.000001 | mysql -uroot -p

mysqlbinlog 
--start-position='8879918' /var/log/mysql-bin.000001 | mysql -uroot -p


第一行是恢复到停止位置位置的所以事务,第二性是恢复从给定的起始位置知道二进制日志结束所有事物。

分享到:
评论

相关推荐

    Mysql binlog浅析

    这是一份腾讯内部的技术文档,详细讲述了 MySQL 数据库启用二进制日志 binlog 的细节,非常有参考价值。前言:日志是把数据库的每一个变化都记载到一个专用的文件里,这种文件就叫做日志文件。Mysql默认只打开出错...

    二进制XML浅析[整理].pdf

    在实际应用中,选择是否使用二进制XML应根据具体需求权衡。如果性能和效率是关键因素,且数据交换主要是机器之间进行,那么二进制XML可能是理想的选择。反之,如果数据需要频繁的人工编辑或者跨平台兼容性很重要,...

    浅析ES6的八进制与二进制整数字面量

    在ES6(ECMAScript 2015)中,为了增强JavaScript的表达能力和适应更多场景,引入了八进制和二进制整数字面量的表示方式,这对于处理特定领域的问题,如文件权限设置、计算机系统编程等,非常有用。 在旧版本的...

    浅析mysql迁移到clickhouse的5种方法

    数据迁移需要从mysql导入clickhouse, 总结方案如下,包括clickhouse自身支持的三种方式,第三方工具两种。 create table engin mysql CREATE TABLE [IF NOT EXISTS] [db.]table_name [ON CLUSTER cluster] ( name1...

    Mysql+binlog浅析

    MySQL二进制日志(binlog)是数据库系统中用于记录所有改变数据库状态的事务操作的重要组件,它在数据恢复、主从复制等方面扮演着关键角色。本文档将对MySQL的binlog进行深入浅出的分析,帮助读者理解其工作原理和...

    浅析VC在MySQL数据库接口中的应用.pdf

    浅析VC在MySQL数据库接口中的应用 随着互联网的快速发展,数据库技术在网络中的应用变得越来越重要。MySQL作为一个关系型数据库管理系统,已经成为了许多企业首选的数据库服务器。VC(Visual C++)作为一个强大的...

    浅析MYSQL中的并发操作与锁定

    浅析MYSQL中的并发操作与锁定 MYSQL中的并发操作和锁定是数据库管理系统中非常重要的概念。并发操作是指多个线程或用户同时访问和操作同一个数据库表的能力,而锁定则是为了避免数据不一致和数据丢失所采取的一种...

    PHP语言中mysql与mysqli应用浅析.pdf

    PHP 语言中 mysql 与 mysqli 应用浅析 MySQL 是一种关系型数据库管理系统,PHP 语言是 Web 开发中最流行的语言之一,而 mysql 和 mysqli 则是 PHP 语言中访问 MySQL 数据库的两种方式。mysql 是 PHP 早期版本中访问...

    浅析MySQL数据库在促进中小型企业发展中的应用.pdf

    以下将详细阐述MySQL在中小型企业应用的优势及其对企业发展的影响。 首先,MySQL的易用性和低门槛是其在中小企业中普及的关键因素。下载和安装过程简单快捷,对计算机硬件要求不高,只需少量的硬盘空间和内存就能...

    浅析MYSQL数据库的备份与恢复.pdf

    浅析MYSQL数据库的备份与恢复 本文主要讨论MYSQL数据库的备份与恢复,旨在帮助信息管理人员掌握MYSQL数据库管理的技巧。文章首先介绍了MYSQL数据库的基本概念,然后讨论了数据备份与恢复的重要性,最后介绍了MYSQL...

    浅析MySQL数据库教程开设的意义.pdf

    MySQL数据库是一种广泛应用于互联网行业的关系型数据库管理系统,由MySQL AB公司开发,并最终归属Oracle公司。它的主要特点是使用SQL语言,支持多种操作系统,如Windows、UNIX、Linux和MacOS,且具备开源和双授权...

    浅析MySQL数据库基于访问范围的外部安全性机制.pdf

    《浅析MySQL数据库基于访问范围的外部安全性机制》 MySQL数据库作为一款广泛应用于各种网站和应用系统的关系型数据库管理系统,其开源、快速、体积小、成本低的特点深受青睐。然而,随着数据的重要性日益凸显,...

    浅谈MySQL数据库的备份与恢复

    二进制日志 binary log 更新日志 update log 查询日志 query log 慢查询日志 slow query log innodb 的 redo 日志 2. 数据文件 >>>对于 myisam 来说: 表结构信息:.frm 数据信息:.myd 数据索引信息;.myi >>

    浅析MYSQL数据库C/S浏览器设计.pdf

    【MySQL 数据库】MySQL 是一款广泛应用的关系型数据库管理系统,它以开源、免费、高效和易于扩展的特点受到全球用户的青睐。MySQL 实现了多线程、多用户架构,能快速处理大量数据,适合在各种严苛的生产环境中运行。...

    浅析计算机通信技术的应用和发展.pdf

    2. 抗干扰能力强:数据传输主要采用二进制这种通信方式,此方式的有效应用能够减少干扰现象的发生,能够实现通信质量优化。 3. 安全性高:在数据加密以及数据密钥破解中,通信安全能够得到充分保障,即使黑客有意...

    Redis架构下的MySQL数据库性能提升浅析.pdf

    Redis 架构下的 MySQL 数据库性能提升浅析 I. Redis 架构简介 Redis 是一个基于 key-value 的高速缓存系统,具有性能高、数据类型丰富、复杂度低以及优化部分 bug 的优点。在互联网时代,快速开发是一个不变的需求...

    深入浅析Mysql联合索引最左匹配原则

    MySQL的联合索引是一种优化查询性能的有效手段,它遵循“最左匹配原则”。这个原则指出,当创建一个包含多个列的联合索引时(例如,KEY test_col1_col2_col3 ON test(col1, col2, col3)),MySQL会在查询时从索引的...

    浅析云计算在物联网中的应用.pdf

    浅析云计算在物联网中的应用.pdf

    Android应用源码之防止内存溢出浅析.zip项目安卓应用源码下载

    Android应用源码之防止内存溢出浅析.zip项目安卓应用源码下载Android应用源码之防止内存溢出浅析.zip项目安卓应用源码下载 1.适合学生毕业设计研究参考 2.适合个人学习研究参考 3.适合公司开发项目技术参考

Global site tag (gtag.js) - Google Analytics