`
rq2_79
  • 浏览: 239021 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

如何管理 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);

分享到:
评论
1 楼 rq2_79 2007-12-12  
MySQL的binlog, InnoDB的日志和Oracle的日志

MySQL中有一个binlog的概念, 用于保存对数据库所作的修改, 这点上和Oracle的归档日志很接近, 但在原理上是很不一样的. 以InnoDB为例, InnoDB本身就有log文件, 和Oracle的联机日志一样, 用完了就重用, 但binlog并不是InnoDB的日志在重用前的拷贝, 而是另外写了一个文件. 因为binlog并不是专门为InnoDB设计的, 其他的存贮引挚如MyISAM也支持binlog, 它是MySQL备份及复制支持的重要基础, 因此不同于InnoDB的日志文件.

    如果MySQL用于很重要的系统, 需要事务支持, 并且要支持联机备份, 要保证没有数据丢失, 目前来说, 一般会用InnoDB存贮引挚, 并启用binlog, 为了保证事务的数据不丢失, 就得:

1, 在每次Commit时, 将修改写入InnoDB的日志文件
2, 在每次Commit时, 将修改写入binlog文件
    而在Oracle中只是保证写入到Oracle的联机日志就够了, 因此在性能测试中, 如果启用了binlog, 性能基本上下降了一半, 因为这中间要做两次写操作. 另外现在的版本中, 一个事务不能跨越binlog, 因此启用binlog的情况下, 就要少用大事务了. 查一下资料, 原来InnoDB也可以有Archived Log模式, 但在MySQL的手册中找到这样一段话, 好象功能已经过时了?

innodb_log_archive

Whether to log InnoDB archive files. This variable is present for historical reasons, but is unused. Recovery from a backup is done by MySQL using its own log files, so there is no need to archive InnoDB log files. The default for this variable is 0.
    过多的功能支持, 必然会造成衔接的松散, 从儿得不到最大化的性能. 理论上来说不够安全的成组提交是MySQL的亮点, Oracle10g好象也有这个功能的, 只不过默认情况下是关闭的.

    从这个结构来看, MySQL不太适合用于很重要的数据, 如财务数据等.

相关推荐

    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