MySQLbinlog二进制日志的详细解释
定义 uff1a
二进制日志包含更新数据或潜在更新数据的所有语句(例如,不匹配任何行的删除)。
uff1a效应
1、二进制日志的主要目的是将数据库恢复到尽可能大的更新,因为二进制日志包含备份之后所做的所有更新。
2、二进制日志也用于记录将在主复制服务器上发送到从服务器的所有语句。
不良影响:
当在服务器运行时启用二进制日志时,性能约为1%。
如何开始:
可以启用日志bin =文件选项。
(改变my.ini文件)
日志的位置
如果没有指定文件名,MySQL使用主机名的bin文件。
如果指定了相对路径,则假定路径与数据目录相对。
> MySQL将一个数字索引添加到文件名中。所以文件的最终形式是filename.number
如果你提供了一个扩展(例如,日志本= file_name。扩展)在日志名称,扩展名是悄悄地被忽略。
替换策略:
使用索引循环文件,并将以下索引循环到下一个索引
1服务器重启
2、服务器更新
3。日志已达到最大记录长度max_binlog_size
4、日志由MySQL刷新日志;
工具介绍:
壳> >选项>新文件binlogfile mysqlbinlog { }
例如,D: mysqlbinlog binlog.000001 MySQL日志> > 1.txt
一个例子:
Log-bin=D:/mysql/log/binlog then, there will be a file D:/mysql/log/binlog.000001 under the folder
常见的问题
1。如何清除binlog
使用以下两个命令。
{掌握}清除二进制日志log_name ' / / log_name | 不清零
清除{掌握二进制}之前的日志 / /日期| 不清零
以下示例如下:
MySQL >清除主日志的binlog 00000 4;
查询OK,0行受影响(0.01秒)
MySQL >清除主日志之前'2009-09-22 00:00:00;
查询OK,0行受影响(0.05秒)
或者使用命令。
复位大师
删除所有binlog之前和再生新的binlog
后缀从00000 1开始。
注意:如果您有一个活动的从服务器,服务器当前正在读取您要删除的日志中的一个。
这句话不起作用,但失败了,而且伴随着一个错误。
但是,如果从属服务器是一个停止,而您恰好要清除它想要读取的日志之一,则在启动时它不能从从服务器复制。
当下级服务器正在复制时,该语句可以安全地运行。
2。记录二进制日志已知的内容配置
binlog-do-db =销售记录销售库
binlog-ignore-db =销售没有记录除了销售图书,和其他记录
但如果美元在前不使用的数据库是SQL操作都不会被记录
如果使用$在使用,那么评判规则取决于这里的dbname美元,不是图书馆在SQL操作
三.二进制日志不准确处理
默认情况下,二进制日志在每次写入时都不会与硬盘同步,因此如果操作系统或机器(不仅仅是MySQL服务器)崩溃,就有可能丢失二进制日志中的最后一条语句。
为了避免这种情况,你可以用sync_binlog全局变量(1是最安全的价值,但也最慢的),所以,二进制日志同步硬盘后每个二进制日志。
即使sync_binlog设置为1,还有一种可能性,该表的内容和二进制日志的内容之间的不一致性。
如果崩溃恢复恢复,MySQL服务器发现二进制日志变短(即至少有一个成功的InnoDB事务丢失),
如果sync_binlog = 1和硬盘/文件系统可以根据需要同步(有些不需要),这将不会发生,则输出错误信息(二进制日志是小于预期)。
在这种情况下,二进制日志是不准确的,复制应该从主服务器的数据快照开始。