iis服务器助手广告广告
返回顶部
首页 > 资讯 > 数据库 >mysql中relay log和binlog有什么用
  • 262
分享到

mysql中relay log和binlog有什么用

2024-04-02 19:04:59 262人浏览 独家记忆
摘要

这篇文章主要为大家展示了“Mysql中relay log和binlog有什么用”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“mysql中relay log和bi

这篇文章主要为大家展示了“Mysql中relay log和binlog有什么用”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“mysql中relay log和binlog有什么用”这篇文章吧。

突然mysql数据库的一个表的数据少了很多,我想着通过查看日志来判断针对这个表到底做了那些操作,然后再有针对性的去恢复,可是直接看binlog(二进制的形式)发现很乱,看不清楚,于是上网查询得知,需要先通过mysqlbinlog进行格式化,具体如下:

主库binlog :mysqlbinlog --base64-output=decode-rows -v -v mysql-bin.000058 > binlog

从库relay log:mysqlbinlog --base64-output=decode-rows -v -v mysql-relay-bin.000031 > relaylog

然后查看变成很规整的形式:  就是一些具体的sql语句。

[root@S243 mybinlog]# more  binlog28

;

;

;

DELIMITER ;

# at 4

#161125 22:17:23 server id 20  end_log_pos 120  Start: binlog v 4, server v 5.6.18-enterprise-commercial-advanced-log created 161125 22:17:23

# at 120

#161125 22:17:23 server id 20  end_log_pos 204  Query  thread_id=3498328   exec_time=0  error_code=0

SET TIMESTAMP=1480083443;

SET @@session.pseudo_thread_id=3498328;

SET TIMESTAMP=1480083443;

insert into mailer.khgz_coreseek_result (info_id, khgz_id, last_modify, result, status) values ('1', '1', '2016-11-25 22:17:24', '29803096:8d78ac82-e746-423a-9615-971485e8', 0)

;

# at 487

#161125 22:17:23 server id 20  end_log_pos 572  Query  thread_id=3498328   exec_time=0  error_code=0

SET TIMESTAMP=1480083443;

COMMIT

;

# at 572

关于binlog和relay log的rotate机制:

Binary Log rotate机制:

?Rotate:每一条binary log写入完成后,都会判断当前文件是否超过 max_binlog_size(默认1g),如果超过则自动生成一个binlog file

?Delete:expire-logs-days 只在 实例启动时 和 flush logs 时以及文件文件是否超过 max_binlog_size时判断是否有过期的binlog文件,如果文件访问时间早于设定值,则purge file
Relay Log rotate 机制:

Rotate:每从Master fetch一个events后,判断当前文件是否超过 max_relay_log_size(默认1g) 如果超过则自动生成一个新的relay-log-file

Delete:purge-relay-log 在SQL Thread每执行完一个events时判断,如果该relay-log 已经不再需要则自动删除

Delete:expire-logs-days 只在 实例启动时 和 flush logs 时判断,如果文件访问时间早于设定值,则purge file  (同Binlog file)  (updated: expire-logs-days和relaylog的purge没有关系)

关于binlog和relay log的参数:

binlog的相关参数:

mysql> show variables like '%bin%';

+-----------------------------------------+---------------------------------+

| Variable_name                           | Value                           |

+-----------------------------------------+---------------------------------+

| bind_address                            | *                               |

| binlog_cache_size                       | 1048576                         |

| binlog_checksum                         | NONE                            |

| binlog_direct_non_transactional_updates | OFF                             |

| binlog_fORMat                           | MIXED                           |

| binlog_max_flush_queue_time             | 0                               |

| binlog_order_commits                    | ON                              |

| binlog_row_image                        | FULL                            |

| binlog_rows_query_log_events            | OFF                             |

| binlog_stmt_cache_size                  | 32768                           |

| innodb_api_enable_binlog                | OFF                             |

| innodb_locks_unsafe_for_binlog          | OFF                             |

| log_bin                                 | ON                              |

| log_bin_basename                        | /mysql/mybinlog/mysql-bin       |

| log_bin_index                           | /mysql/mybinlog/mysql-bin.index |

| log_bin_trust_function_creators         | OFF                             |

| log_bin_use_v1_row_events               | OFF                             |

| max_binlog_cache_size                   | 18446744073709547520            |

| max_binlog_size                         | 1073741824                      |

| max_binlog_stmt_cache_size              | 18446744073709547520            |

| sql_log_bin                             | ON                              |

| sync_binlog                             | 0                               |

+-----------------------------------------+---------------------------------+

22 rows in set (0.00 sec)

log_bin

设置此参数表示启用binlog功能,并指定路径名称

log_bin_index

设置此参数是指定二进制索引文件的路径与名称

binlog_do_db

此参数表示只记录指定数据库的二进制日志

binlog_ignore_db

此参数表示不记录指定的数据库的二进制日志

max_binlog_cache_size

此参数表示binlog使用的内存最大的尺寸

binlog_cache_size

此参数表示binlog使用的内存大小,可以通过状态变量binlog_cache_use和binlog_cache_disk_use来帮助测试

binlog_cache_use:使用二进制日志缓存事务数量

binlog_cache_disk_use:使用二进制日志缓存但超过binlog_cache_size值并使用临时文件来保存事务中的语句的事务数量

max_binlog_size

Binlog最大值,最大和默认值是1GB,该设置并不能严格控制Binlog的大小,尤其是Binlog比较靠近最大值而又遇到一个比较大事务时,为了保证事务的完整性,不可能做切换日志的动作,只能将该事务的所有SQL都记录进当前日志,直到事务结束

sync_binlog

sync_binlog”:这个参数是对于MySQL系统来说是至关重要的,他不仅影响到Binlog对MySQL所带来的性能损耗,而且还影响到MySQL中数据的完整性。对于“sync_binlog”参数的各种设置的说明如下:

sync_binlog=0,当事务提交之后,MySQL不做fsync之类的磁盘同步指令刷新binlog_cache中的信息到磁盘,而让Filesystem自行决定什么时候来做同步,或者cache满了之后才同步到磁盘。

sync_binlog=n,当每进行n次事务提交之后,MySQL将进行一次fsync之类的磁盘同步指令来将binlog_cache中的数据强制写入磁盘。

在MySQL中系统默认的设置是sync_binlog=0,也就是不做任何强制性的磁盘刷新指令,这时候的性能是最好的,但是风险也是最大的。因为一旦系统Crash,在binlog_cache中的所有binlog信息都会被丢失。而当设置为“1”的时候,是最安全但是性能损耗最大的设置。因为当设置为1的时候,即使系统Crash,也最多丢失binlog_cache中未完成的一个事务,对实际数据没有任何实质性影响。

从以往经验和相关测试来看,对于高并发事务的系统来说,“sync_binlog”设置为0和设置为1的系统写入性能差距可能高达5倍甚至更多。

relay log的相关参数:

通过语句:show variables like '%relay%',查看先骨干的relay的所有相关参数

mysql> show variables like '%relay%';

+-----------------------+----------------+

| Variable_name | Value |

+-----------------------+----------------+

| max_relay_log_size | 0 |

| relay_log | |

| relay_log_index | |

| relay_log_info_file | relay-log.info |

| relay_log_purge | ON |

| relay_log_recovery | OFF |

| relay_log_space_limit | 0 |

| sync_relay_log | 0 |

| sync_relay_log_info | 0 |

+-----------------------+----------------+

9 rows in set (0.08 sec)

2.1 max_relay_log_size:标记relay log 允许的最大值,如果该值为0,则默认值为max_binlog_size(1G);如果不为0,则max_relay_log_size则为最大的relay_log文件大小;

2.2 relay_log:定义relay_log的位置和名称,如果值为空,则默认位置在数据文件的目录,文件名为host_name-relay-bin.nnnnnn(By default, relay log file names have the form host_name-relay-bin.nnnnnn in the data directory);

2.3relay_log_index:同relay_log,定义relay_log的位置和名称;

2.4relay_log_info_file:设置relay-log.info的位置和名称(relay-log.info记录MASTER的binary_log的恢复位置和relay_log的位置)

2.5relay_log_purge:是否自动清空不再需要中继日志时。默认值为1(启用)。

2.6relay_log_recovery:当slave从库宕机后,假如relay-log损坏了,导致一部分中继日志没有处理,则自动放弃所有未执行的relay-log,并且重新从master上获取日志,这样就保证了relay-log的完整性。默认情况下该功能是关闭的,将relay_log_recovery的值设置为 1时,可在slave从库上开启该功能,建议开启。

2.7relay_log_space_limit:防止中继日志写满磁盘,这里设置中继日志最大限额。但此设置存在主库崩溃,从库中继日志不全的情况,不到万不得已,不推荐使用;

2.8sync_relay_log:这个参数和sync_binlog是一样的,当设置为1时,slave的I/O线程每次接收到master发送过来的binlog日志都要写入系统缓冲区,然后刷入relay log中继日志里,这样是最安全的,因为在崩溃的时候,你最多会丢失一个事务,但会造成磁盘的大量I/O。当设置为0时,并不是马上就刷入中继日志里,而是由操作系统决定何时来写入,虽然安全性降低了,但减少了大量的磁盘I/O操作。这个值默认是0,可动态修改,建议采用默认值。

2.9sync_relay_log_info:这个参数和sync_relay_log参数一样,当设置为1时,slave的I/O线程每次接收到master发送过来的binlog日志都要写入系统缓冲区,然后刷入relay-log.info里,这样是最安全的,因为在崩溃的时候,你最多会丢失一个事务,但会造成磁盘的大量I/O。当设置为0时,并不是马上就刷入relay-log.info里,而是由操作系统决定何时来写入,虽然安全性降低了,但减少了大量的磁盘I/O操作。这个值默认是0,可动态修改,建议采用默认值。

关于binlog和relay log的删除方法:

binlog 太多的 解决方法如下:

PURGE MASTER LOGS手动删除用法及示例,MASTER和BINARY是同义词

> PURGE {MASTER | BINARY} LOGS TO 'log_name'

> PURGE {MASTER | BINARY} LOGS BEFORE 'date'

实例:

> PURGE MASTER LOGS TO 'MySQL-bin.010';  //清除MySQL-bin.010日志

> PURGE MASTER LOGS BEFORE '2008-06-22 13:00:00';   //清除2008-06-22 13:00:00前binlog日志 > PURGE MASTER LOGS BEFORE DATE_SUB( NOW( ), INTERVAL 3 DAY);  //清除3天前binlog日志BEFORE,变量的date自变量可以为'YYYY-MM-DD hh:mm:ss'格式。

或者直接:

进入数据库,查看一下当前使用的binlog日志是哪个,除了这个以外的,其它都可以使用rm -rf 删除!

relay log 可以通过修改一个参数自动删除,前面已经介绍过参数:relay_log_purge=on 即可,自动清空不再需要中继日志。

总结

mysql数据库的binlog和relay log日志有着举足轻重的作用,并且relay log仅仅存在于mysql 的slave库,它的作用就是记录slave库中的io进程接收的从主库传过来的binlog,然后等待slave库的sql进程去读取和应用,保证主从同步,但是binlog主库和从库(slave)都可以存在,记录对数据发生或潜在发生更改的SQL语句,并以二进制的形式保存在磁盘,所以可以通过binlog来实时备份和恢复数据库。

以上是“mysql中relay log和binlog有什么用”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注编程网数据库频道!

您可能感兴趣的文档:

--结束END--

本文标题: mysql中relay log和binlog有什么用

本文链接: https://www.lsjlt.com/news/63396.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • mysql中relay log和binlog有什么用
    这篇文章主要为大家展示了“mysql中relay log和binlog有什么用”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“mysql中relay log和bi...
    99+
    2022-10-18
  • MySQL中binlog和relay-log结构的作用是什么
    这篇文章给大家介绍MySQL中binlog和relay-log结构的作用是什么,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。binlog作用binlog的主要作用是记录数据库中表的更改...
    99+
    2022-10-18
  • MySQL的binlog、redo log和undo log怎么使用
    这篇文章主要介绍“MySQL的binlog、redo log和undo log怎么使用”,在日常操作中,相信很多人在MySQL的binlog、redo log和undo log怎么使用问题上存在疑惑,小编查...
    99+
    2022-10-19
  • mysql中redo log和binlog的区别有哪些
    这篇文章给大家分享的是有关mysql中redo log和binlog的区别有哪些的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。想跟大家聊聊关于 mysql 中的两个小的知识点:redo log 和 bi...
    99+
    2023-06-29
  • MySQL中binlog有什么用
    这篇文章将为大家详细讲解有关MySQL中binlog有什么用,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。 一、binlog文件和文件的逻辑、物理表现形式 ...
    99+
    2022-10-18
  • MySQL日志之redo log和binlog的区别是什么
    这篇文章主要介绍了MySQL日志之redo log和binlog的区别是什么,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。redo log和...
    99+
    2022-10-18
  • MySQL中的redo log和undo log日志有什么用
    这篇文章主要介绍“MySQL中的redo log和undo log日志有什么用”,在日常操作中,相信很多人在MySQL中的redo log和undo log日志有什么用问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家...
    99+
    2023-06-20
  • MySQL中error log和bin log怎么用
    这篇文章主要介绍MySQL中error log和bin log怎么用,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!1.Error log 記錄DB啟動,運行,停止時嚴重錯誤 可用...
    99+
    2022-10-18
  • mysql中Binlog日志的作用是什么
    mysql中Binlog日志的作用是什么?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。1、说明MySQL的二进制日志binlog可以说是MySQL最重要的日志,...
    99+
    2023-06-15
  • MySQL慢查询中的commit慢和binlog中慢事务有什么区别
    这篇文章主要介绍了MySQL慢查询中的commit慢和binlog中慢事务有什么区别的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇MySQL慢查询中的commit慢和binlog中慢事务有什么区别文章都会有所收...
    99+
    2023-07-02
  • PostgreSQL中commit log有什么作用
    本篇内容主要讲解“PostgreSQL中commit log有什么作用”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“PostgreSQL中commit log有...
    99+
    2022-10-18
  • MySQL中NCHAR有什么用?
    MySQL 将 NCHAR 定义为一种指示 CHAR 列应使用预定义字符集的方法。 MySQL 使用 Utf8 作为其预定义字符集。示例在下面的示例中,我们将创建一个名为“Student1”的表。在此表中,我们使用三种不同的声明样式声明三列...
    99+
    2023-10-22
  • mysql中trim有什么用
    小编给大家分享一下mysql中trim有什么用,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!mysql中trim函数的作用是可以...
    99+
    2022-10-18
  • mysql中between有什么用
    小编给大家分享一下mysql中between有什么用,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!MySQL数据表中带BETWE...
    99+
    2022-10-18
  • mysql中set有什么用
    这篇文章主要介绍mysql中set有什么用,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!SET是SQL Server 中对已经定义的变量赋值的方式,经常与update语句一起使用。语...
    99+
    2022-10-18
  • mysql中workbench有什么用
    这篇文章主要介绍了mysql中workbench有什么用,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。 Work...
    99+
    2022-10-18
  • MySQL中MHA有什么用
    这篇文章给大家分享的是有关MySQL中MHA有什么用的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。 概述MHA是一位日本MySQL大牛用Perl写的...
    99+
    2022-10-18
  • MySQL中锁有什么用
    小编给大家分享一下MySQL中锁有什么用,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧! 锁是计算机协调多个进程或线程并发访问某...
    99+
    2022-10-18
  • MYSQL中COLLATE有什么用
    这篇文章给大家分享的是有关MYSQL中COLLATE有什么用的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。 MYSQL中的COLLATE是什么?在my...
    99+
    2022-10-18
  • MySQL中profiling有什么用
    这篇文章将为大家详细讲解有关MySQL中profiling有什么用,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。     ...
    99+
    2022-10-18
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作