暂无图片
暂无图片
1
暂无图片
暂无图片
暂无图片

Mysql 二进制日志相关

hongg 2025-04-21
181

FLUSH LOGS命令

master> FLUSH LOGS; Query 0K,0 rows affected(0.28 sec) FLUSH LOGS 命令强制轮换(rotate)二进制日志,从而得到一个“完整的”二进制日志文件。 使用SHOW BINGLOG EVENTS命令进一步查看该文件,

其中一个二进制日志文件是活动二进制日志文件(active binlogfle),即当前正在被写入的文件(通常也从这个文件读取)。 每个二进制日志文件都以格式描述事件(format description event)开始,以日志轮换事件(rotate event)结束。格式描述日志事件包括产生该文件的服务器版本号、服务器信息及二进制日志信息等。日志轮换事件包含下一个二进制日志文件的名称,以告知二进制日志继续写入哪个文件。 每个二进制日志文件有多个二进制日志事件,各个事件之间相互独立,同时也是构成进制日志的基本单位。格式描述日志事件还有一个标记,标记二进制日志文件是否正常关闭。如果正在写入二进制日志文件,则设置该标记;如果文件关闭,则清除该标记。这样就可以检测出在崩溃事件中损坏的二进制日志文件,并允许通过复制进行恢复。 如果在 Master 上执行其他语句,你会发现一件奇怪的事情--在二进制日志中看不到变化:

这些新事件是怎么回事?我们已经知道,二进制日志由若干文件组成,而SHOW BINLOG EVENTS\G语句只显示第一个二进制日志文件的内容。这与大多数用户的期望相反,他们想看的是活动二进制日志文件。如果第一个二进制日志文件名是master-bin.000001(这个文件包含前面显示的事件),你可以使用下面的命令查看下一个二进制日志文件(本例该文件名为 master-bin.000002)的事件: master> SHOW BINLOG EVENTS IN 'master-bin.000002'\G

你可能已经注意到,二进制日志以日志轮换事件结尾,Info字段包含下一个二进制日志文件名和事件的开始位置。使用SHOW MASTER STATUS\G 命令查看当前正在写入的是哪个二进制日志文件:

RESET MASTER命令删除了所有二进制日志文件并清空了二进制日志索引文件。RESET SLAVE 命令删除了 Slave 复制所用的所有文件,重新开始。

无论是RESET MASTER还是RESET SLAVE都是在运行复制时有效。

因此:执行RESET MASTER命令(在Master上)时,确保没有Slave连接到该 Master。执行RESET SLAVE命令(在Slave上)时,先执行STOP SLAVE命令,确保Slave 上没有活动的复制。

expire-log-days=days

清除binlog文件:

binlog需要保留的天数。当二进制日志已经轮换或服务器重启时,比指定数值老的文件将从文件系统中清除。 这个选项默认是 0,意味着binlog 文件永远不会被删除。

要使服务器自动清理旧的binlog文件,需设置expire-logs-days选项。这个选项也可用来作为一个服务器变量,达到你想保留binlog文件的天数。请记住,它就像所有的服务器变量,这个设置不保留在服务器重启之间。因此,如果希望在重启后仍保持自动清除,必须添加该设置到服务器的 my.cnf(my.ini)文件。

使用 PURGE BINARY LOGS 命令手工清除binlog文件。

该命令有如下两种格式PURGE BINARY LOGS BEFORE datetime这个命令格式将清除在给定时间之前的所有文件。如果datetime在一个日志文件的中间(通常是这样),那么datetime所在的那个文件之前的所有文件将被清除。

PURGE BINARY LOGS TO 'flename‘这个命令格式将清除在给定文件之前的所有文件。换句话说,SHOW MASTER LOGS命令输出的所有文件中,在filename 之前的文件都将被删除,使得filename 成为第个 binlog 文件。如下:


log-bin-index[=flename]

给出索引文件的名称。如果你想放置索引文件到不同于默认位置的其他位置,它可能有用。 默认与 log-bin所用的基本名称相同。例如,如果用来创建binlog 文件的基本名称是master-bin,索引文件将被命名为masterbin.index。与log-bin选项情况类似,hostname将被用来组成索引文件名,意味着如果hostname改变,复制将中断。出于这个原因,强烈建议你给这个选项赋值

binlog-cache-size=bytes

以字节为单位的事务缓存的in-memor 部分的大小。事务缓存通过磁盘备份。因此当事务缓存的大小超过该值时,剩余的数据将进入磁盘。这有可能造成性能问题,因此如果你使用许多大型的事务,增大该选项的值可以提高性能。 注意,只分配非常大的缓冲区大小并不是个好主意,因为这意味着服务器的其他部分得到更少的内存,这可能导致性能下降

max-binlog-cache-size=bytes

使用这个选项来限制在二进制日志中的每个事务的大小。由于大型事务有可能阻塞二进制日志很长时间,它们将导致其他线程为二进制日志护航而造成重大的性能问题。如果事务的大小超过 bytes,该语句将出错而被终止。

max-binlog-size=bytes

指定每个 binlog文件的大小。当写入语句或事务将超过这个值时,binlog文件将被轮换且写人一个新的空的 binlog 文件。请注意,如果事务或语句超过了max-binlog-size,二进制日志将被轮换,但该事务的全部内容将被写人新的文件,超过了指定的最大值。这是因为事务永远不会被分割到不同的 binlog 文件。

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论