如何管理 MySQL 的 binlog 收藏

转载 2011年02月10日 17:17:00

*************************************
*                       关于 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);

 

本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/ccsdba/archive/2007/10/18/1831193.aspx

如何管理 MySQL 的 binlog

**************************************                       关于 binlog              ****************...
  • ccsdba
  • ccsdba
  • 2007年10月18日 15:59
  • 6050

开启MySQL的binlog日志

binlog 就是binary log,二进制日志文件,这个文件记录了mysql所有的dml操作。通过binlog日志我们可以做数据恢复,做主住复制和主从复制等等。对于开发者可能对binlog并不怎么...
  • king_kgh
  • king_kgh
  • 2017年07月08日 13:41
  • 7676

管理 MySQL 的 binlog

      今天在作游戏DB的压力测试时,运行测试用例一段时间后,发现客户端实然登录不了,后经定位,自己现是mysql binlog日志写满,导致mysql不能正常工作了,在网上找了这篇讲述binlo...
  • stanjiang2010
  • stanjiang2010
  • 2011年03月01日 14:28
  • 1293

查看binlog文件的2种方式

查看binlog文件的2种方式 1.使用show binlog events a.获取binlog文件列表 mysql> show binary logs; +---------...
  • u010433704
  • u010433704
  • 2017年02月10日 09:32
  • 2809

MYSQL binlog简述及简单操作

binlog主要两大作用 高可用 数据恢复。 如何开启binlog 在my.cnf中配置:log-bin =/home/data/mysql/binlog/mysql-bin 检查是否...
  • johnstrive
  • johnstrive
  • 2015年08月25日 08:35
  • 4798

MySQL 手动清除binlog

新接手的四套库MySQL库,采用主从结构。之前配置的伙计备库的bin log 日志全部是打开状态。运维人员反映,空间告警几次。均手动上去处理。 备库开启了bin log 也影响备库的性能,虽然这四...
  • zhouchang3
  • zhouchang3
  • 2016年11月28日 19:04
  • 414

MySQL执行binlog的两种方法

维护mysql的时候,总会遇到数据库恢复的例子。如果把备份集恢复出来相对比较简单。然而如果遇到恢复到时间点的例子,把一个MySQL实例恢复出来之后,需要执行binlog做增量恢复。  常见的办法是用m...
  • wzy0623
  • wzy0623
  • 2016年12月27日 16:29
  • 1896

mysql的binlog太大

现象:网站访问越来越慢,最后无法访问了,经过检查发现磁盘满了。仔细查询下来确认是由于mysql的binlog太多太大占用了空间。 分析过程及解决方案:通常出现这种问题都应该登录服务器检查磁盘、内存和进...
  • buyueliuying
  • buyueliuying
  • 2016年01月03日 12:15
  • 986

mysql 命令行设置binlog格式

    命令行中查看binlog日志格式的命令:    show variables like '%log%';    结果如下:          命令行中设置binlog_format:     ...
  • jiang1013nan
  • jiang1013nan
  • 2011年05月25日 10:25
  • 3539

mysql5.6解决binlog为row格式时增长量过大问题

binlog_format为row格式的时候记录的不是简单的sql,而是实际变更的行,一些大的DDL操作,会导致binlog量增加很大,消耗额外的IO、网络资源 可以通过设置binlog_row_...
  • jerry____wang
  • jerry____wang
  • 2016年11月10日 10:16
  • 1187
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:如何管理 MySQL 的 binlog 收藏
举报原因:
原因补充:

(最多只允许输入30个字)