`

如何管理 MySQL 的 binlog

阅读更多

*************************************
* 关于 binlog*
*************************************
--binlog 以一种更有效的格式,并且是事务安全的方式包含更新日志中可用的所有信息。
--binlog 包含了所有更新了数据或者已经潜在更新了数据(例如,没有匹配任何行的一个DELETE)的所有语句。语句以“事件”的形式保存,它描述数据更改。
--binlog 还包含关于每个更新数据库的语句的执行时间信息。它不包含没有修改任何数据的语句。如果你想要记录所有语句(例如,为了识别有问题的查询),你应使用一般查询日志。
--binlog 的主要目的是在恢复使能够最大可能地更新数据库,因为 binlog 包含备份后进行的所有更新。
--binlog 还用于在主复制服务器上记录所有将发送给从服务器的语句。
--运行服务器时若启用 binlog 则性能大约慢1%。但是, binlog 的好处,即用于恢复并允许设置复制超过了这个小小的性能损失。
--当--log-bin[=file_name]选项启动时,mysqld写入包含所有更新数据的SQL命令的日志文件。如果未给出file_name值, 默认名为-bin后面所跟的主机名。如果给出了文件名,但没有包含路径,则文件被写入数据目录。建议指定一个文件名。如果你在日志名中提供了扩展名(例如,--log-bin=file_name.extension),则扩展名被悄悄除掉并忽略。
--mysqld在每个 binlog 名后面添加一个数字扩展名。每次你启动服务器或刷新日志时该数字则增加。如果当前的日志大小达到max_binlog_size,还会自动创建新的 binlog 。如果你正使用大的事务, binlog 还会超过max_binlog_size:事务全写入一个 binlog 中,绝对不要写入不同的 binlog 中。
--为了能够知道还使用了哪个不同的 binlog 文件,mysqld还创建一个 binlog 索引文件,包含所有使用的 binlog 文件的文件名。默认情况下与 binlog 文件的文件名相同,扩展名为'.index'。你可以用--log-bin-index[=file_name]选项更改 binlog 索引文件的文件名。当mysqld在运行时,不应手动编辑该文件;如果这样做将会使mysqld变得混乱。
--binlog 格式有一些已知限制,会影响从备份恢复。
--默认情况下,并不是每次写入时都将 binlog 与硬盘同步。因此如果操作系统或机器(不仅仅是MySQL服务器)崩溃,有可能 binlog 中最后的语句丢失了。要想防止这种情况,你可以使用sync_binlog全局变量(1是最安全的值,但也是最慢的),使 binlog 在每N次 binlog 写入后与硬盘同步。

************************************************
* 如何管理 MySQL 的 binlog*
************************************************
1、在 my.ini 中增加下述参数,指定保存更新到 binlog 的数据库:db_name,未在此指定的数据库将不记录 binlog
--binlog-do-db=db_name

2、在 my.ini 中增加下述参数,指定不保存更新到 binlog 的数据库:db_name
--binlog-ignore-db=db_name

3、如果 binlog 已经产生,可以通过 SQL 命令行清除:

/*
* 要清理日志,需按照以下步骤:
* 1 在每个从属服务器上,使用SHOW SLAVE STATUS来检查它正在读取哪个日志。
* 2 使用SHOW MASTER LOGS获得主服务器上的一系列日志。
* 3 在所有的从属服务器中判定最早的日志。这个是目标日志。如果所有的从属服务器是更新的,这是清单上的最后一个日志。
* 4 制作您将要删除的所有日志的备份。(这个步骤是自选的,但是建议采用。)
* 5 清理所有的日志,但是不包括目标日志。
*
*/

/*
* 清除 binlog
*
* 为了执行RESET,您必须拥有RELOAD权限。
* 以下命令将删除列于索引文件中的所有 binlog,把 binlog 索引文件重新设置为空,并创建一个新的 binlog。
* (在以前版本的MySQL中,被称为FLUSH MASTER。)
*/
RESET MASTER;

/*
* 清除指定的 binlog
*
*/
PURGE MASTER LOGS TO 'mysql-bin.010';
/*
* 清除日期为 2006-06-06 06:06:06 以前的 binlog
*
* BEFORE变量的date自变量可以为'YYYY-MM-DD hh:mm:ss'格式。MASTER和BINARY是同义词。
*/
PURGE MASTER LOGS BEFORE '2006-06-06 06:06:06';
/*
* 清除3天前的 binlog
*
*/
PURGE MASTER LOGS BEFORE DATE_SUB( NOW( ), INTERVAL 3 DAY);

分享到:
评论

相关推荐

    MySQL Binlog Digger 4.8.0

    总结来说,MySQL Binlog Digger是MySQL数据库管理员的重要工具,它提供了一种高效的方式来检查和利用binlog进行数据恢复,同时通过不断更新和优化,确保了在不同场景下的稳定性和效率。在处理数据恢复问题时,这款...

    Mysql binlog查看工具

    总之,MySQL binlog查看工具是数据库管理员的得力助手,它简化了对binlog的理解和使用,使数据库管理变得更加高效和可靠。无论是在日常运维、故障排查还是数据恢复场景下,掌握这些工具的使用都将极大地提升你的工作...

    8、NIFI综合应用场景-NiFi监控MySQL binlog进行实时同步到hive

    【NIFI综合应用场景-NiFi监控MySQL binlog进行实时同步到hive】 Apache NiFi是一款强大的数据流处理工具,常用于构建复杂的数据集成解决方案。在本场景中,我们将探讨如何使用NiFi来实时监控MySQL数据库的binlog...

    MySQL – binlog日志简介及设置

    总的来说,启用并合理配置binlog是MySQL数据库管理中的重要环节。它不仅能保证数据的安全性,还能优化主从复制的性能。建议将binlog文件存放在与数据目录不同的磁盘分区上,以减少I/O冲突,提高系统整体性能。在面临...

    分析 MySQL 的 binlog 日志的工具

    MySQL的binlog(二进制日志)是数据库系统中非常关键的一个组件,它记录了所有改变数据库状态的事务操作,...通过选择合适的工具和方法,我们可以有效地从binlog中提取有价值的信息,为数据库管理和优化提供有力支持。

    基于 mysql-binlog-connector-java 实现增量数据的收集.zip

    MySQL是世界上最流行的关系型数据库管理系统之一,而MySQL的binlog(二进制日志)是其核心特性之一,用于记录所有对数据库进行的更改操作。`mysql-binlog-connector-java` 是一个开源库,它允许Java应用程序实时读取...

    基于Python实现用于解析和转换 MySQL 二进制日志(binlog)的工具源码

    MySQL二进制日志(Binary Log,简称binlog)是MySQL数据库系统中记录所有更改数据库数据的事件序列的重要工具,主要用于数据恢复、主从复制等场景。本篇将深入探讨如何利用Python语言来解析和转换MySQL的binlog,...

    MySQL Binlog Digger 4.4.zip

    总的来说,MySQL Binlog Digger 4.4是MySQL数据库管理员和开发者的有力助手,它简化了二进制日志的管理和利用,提高了数据库管理的效率和安全性。通过深入理解并熟练运用这个工具,我们可以更好地维护和优化MySQL...

    MySQL binlog闪回工具

    MySQL binlog闪回工具是MySQL数据库系统中用于数据恢复和时间点恢复的重要工具...通过理解和掌握这些关于MySQL binlog闪回工具的知识,你可以更好地管理和保护你的数据库,确保在面临数据问题时能迅速有效地进行恢复。

    mysql开启binlog.docx

    总的来说,MySQL的binlog是数据库管理中不可或缺的一部分,它提供了强大的数据恢复能力和主从复制的基础。正确配置和管理binlog对于维护数据库系统的稳定性和安全性至关重要。理解如何开启、配置以及使用binlog,...

    使用binlog日志恢复MySQL数据库删除数据的方法

    总之,了解并正确使用MySQL的binlog日志是数据库管理员必备的技能之一,它能帮助我们在遭遇数据灾难时尽可能地减少损失。在日常运维中,定期备份和合理配置binlog策略是确保数据安全的重要措施。

    A001-MySQL安装、MySQL优化、innodb 锁问题监控处理、MySQL binlog日志、MySQL 基础

    A004-MySQL binlog日志 A005-MySQL 基础 A006-SQL语法 A007-MySQL 修改密码 特点和功能: 开源性: MySQL是开源软件,可以免费获取和使用。它的开放性质使得它受到了广泛的开发者和组织的支持和贡献。 关系型...

    php-binlog-parser:用纯PHP实现MySQL Binlog解析器

    在数据库管理领域,MySQL的Binary Log(简称Binlog)是数据恢复和复制的关键技术。它记录了所有更改数据库状态的事件,使得我们可以从Binlog中重建数据库的状态。然而,直接处理Binlog文件并不是一件容易的事,因为...

    MySQL二进制日志(binlog)解析工具

    总之,`binlog_parser`是一个强大的工具,它帮助我们理解和管理MySQL数据库的变化历史。通过过滤和解析binlog,我们可以进行数据恢复、监控、审计等多种任务,为数据库管理和维护提供了宝贵的工具。在使用过程中,...

    Mysql Binlog快速遍历搜索记录及binlog数据查看的方法

    MySQL Binlog是MySQL数据库服务器上的一种日志文件,用于记录所有数据库的变更,...了解如何有效地遍历和搜索binlog记录,以及如何安全地查看其中的数据,对于任何负责管理MySQL数据库的人员来说,都是必不可少的技能。

    php_client_for_mysql_binlog 源代码包

    【标题】"php_client_for_mysql_binlog 源代码包" 涉及的主要知识点是PHP与MySQL二进制日志(binlog)的交互。MySQL的二进制日志是一种记录所有更改数据库数据的事件流,常用于数据恢复、复制和监控。PHP客户端库则...

    Mysql+binlog浅析

    - **日志清理**:如何管理binlog文件,避免磁盘空间被过度占用。 - **数据恢复**:使用binlog进行数据恢复的基本流程。 - **安全性与优化**:讨论binlog对系统性能的影响以及如何提高安全性。 **2.1 功能简介** ...

    mysql-binlog-in-realtime 源代码包

    《MySQL实时binlog解析与应用》 MySQL数据库的二进制日志(Binary Log,简称binlog)是数据库系统中的重要组成部分,它记录了所有的事务操作,为数据恢复、复制和审计提供了基础。"mysql-binlog-in-realtime"源代码...

    mysql binlog

    MySQL二进制日志(binlog)是MySQL数据库服务器的一个重要组件,用于记录所有更改数据或可能更改数据的语句,这些语句包括数据修改语句(INSERT、UPDATE、DELETE等)、DDL语句(如CREATE、ALTER、DROP等),以及其他...

Global site tag (gtag.js) - Google Analytics