我的编程空间,编程开发者的网络收藏夹
学习永远不晚

Mysql中二进制日志操作方法有哪些

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

Mysql中二进制日志操作方法有哪些

这篇文章主要介绍了Mysql中二进制日志操作方法有哪些的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Mysql中二进制日志操作方法有哪些文章都会有所收获,下面我们一起来看看吧。

    二进制日志

    二进制日志中以“事件”的形式记录了数据库中数据的变化情况,对于MySQL数据库的灾难恢复起着重要的作用。

    开启二进制日志

    可以在 my.cnf 文件或者 my.ini 文件中进行如下配置来开启二进制日志。

    [mysqld]log_bin = /data/mysql/log/bin_log/mysql-binbinlog_format= mixedbinlog_cache_size=32mmax_binlog_cache_size=64mmax_binlog_size=512mexpire_logs_days = 10

    各项配置说明如下:

    log_bin:表示开启二进制日志。如果没有为此项赋值,则 MySQL 会在 DATADIR 选项指定的目录(MySQL的数据存放目录)下创建二进制文件。

    binlog_format:二进制文件的格式。取值可以是STATEMENTROWMIXED

    STATEMENT

    记录SQL语句。日志文件小,节约IO,但是对一些系统函数不能准确复制或不能复制,如now()、uuid()等

    ROW

    记录表的行更改情况,可以为数据库的恢复、复制带来更好的可靠性,但是二进制文件的大小相较于STATEMENT会有所增加

    MIXED

    STATEMENT和ROW模式的混合。默认采用STATEMENT格式进行二进制日志文件的记录,但是在一些情况下会使用ROW格式。

    业内目前推荐使用的是 ROW 模式,准确性高,虽然说文件大,但是现在有SSD和万兆光纤网络,这些磁盘IO和网络IO都是可以接受的。

    • binlog_cache_size:二进制日志的缓存大小。

    • max_binlog_cache_size:二进制日志的最大缓存大小。

    • max_binlog_size:单个二进制日志文件的最大大小,当文件大小超过此选项配置的值时,会发生日志滚动,重新生成一个新的二进制文件。

    • expire_logs_days:二进制日志的过期时间。如果配置了此选项,则 MySQL 会自动清理过期的二进制日志。此选项的默认值为 0 ,表示 MySQL 不会清理过期日志。

    配置完成后,重启 MySQL 才能使配置生效。此时,会在 /data/mysql/log/bin_log 目录下生成 MySQL 的二进制文件。

    重启之后,可以看到我们配置的二进制日志的相关信息。

    show variables like '%log_bin%';

    ±--------------------------------±-----------------------------------------+

    | Variable_name | Value |

    ±--------------------------------±-----------------------------------------+

    | log_bin | ON |

    | log_bin_basename | D:\mysql-8.0.28-winx64\data\binlog |

    | log_bin_index | D:\mysql-8.0.28-winx64\data\binlog.index |

    | log_bin_trust_function_creators | ON |

    | log_bin_use_v1_row_events | OFF |

    | sql_log_bin | ON |

    ±--------------------------------±-----------------------------------------+

    6 rows in set

    查看二进制日志

    二进制日志文件不能以纯文本文件的形式来查看,可以使用 MySQL 的 mysqlbinlog 命令进行查看。接下来简单介绍一下查看 MySQL 二进制日志的步骤。

    注:我提前创建的测试表

    CREATE TABLE `test1` (  `id` int NOT NULL,  `name` varchar(20) DEFAULT NULL,  PRIMARY KEY (`id`)) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3;

    (1)向 test1 表中插入两条测试数据。

    INSERT INTO test1 (id,name) VALUES(5,"赵山河");INSERT INTO test1 (id,name) VALUES(6,"跟着学编程");

    (2)使用 mysqlbinlog 命令查看二进制日志

    mysqlbinlog --no-defaults /data/mysql/log/bin_log/mysql-bin.000001

    二进制日志中记录了向 test1 数据表中插入数据的 SQL 语句。

    注意:查看 /data/mysql/log/bin_log 目录下生成的 MySQL 二进制文件时,发现有一个 mysql-bin.index 文件,这个文件不记录二进制内容,其中记录的是当前目录下存在的所有二进制文件的完整路径。可以以纯文本文件的形式来查看 mysql-bin.index 文件。

    cat /data/mysql/log/bin_log/mysql-bin.index

    删除二进制日志

    MySQL中除了通过配置二进制日志的过期时间,由 MySQL 自动删除过期的二进制日志外,还提供了3种安全的手动删除二进制日志的方法。

    在正式介绍手动删除 MySQL 二进制日志的方法之前,先对 MySQL 进行多次重启操作,使 MySQL 能够生成多个二进制日志文件,以便进行删除测试。

    多次重启MySQL后,再次查看 /data/mysql/log/bin_log 目录下的文件。

    1.根据编号删除二进制日志

    根据编号删除二进制日志,语法格式如下:

    PURGE { BINARY | MASTER } LOGS TO 'log_name'

    在MySQL命令行执行此语法格式的SQL语句,会删除比指定文件名编号小的所有二进制日志文件。例如,删除比mysql-bin.000003文件编号小的所有二进制日志文件。

    mysql> PURGE MASTER LOGS TO 'mysql-bin.000003';Query OK, 0 rows affected (0.01 sec)

    SQL语句执行成功,查看/data/mysql/log/bin_log目录下的文件。

    [root@binghe150 ~]# ll /data/mysql/log/bin_logtotal 36-rw-r----- 1 mysql mysql 178 Jan 17 16:20 mysql-bin.000003-rw-r----- 1 mysql mysql 178 Jan 17 16:20 mysql-bin.000004-rw-r----- 1 mysql mysql 178 Jan 17 16:20 mysql-bin.000005-rw-r----- 1 mysql mysql 178 Jan 17 16:20 mysql-bin.000006-rw-r----- 1 mysql mysql 178 Jan 17 16:21 mysql-bin.000007-rw-r----- 1 mysql mysql 178 Jan 17 16:21 mysql-bin.000008-rw-r----- 1 mysql mysql 178 Jan 17 16:21 mysql-bin.000009-rw-r----- 1 mysql mysql 155 Jan 17 16:21 mysql-bin.000010-rw-r----- 1 mysql mysql 328 Jan 17 16:29 mysql-bin.index

    发现mysql-bin.000001文件和mysql-bin.000002文件被删除了。说明根据编号删除二进制日志时,只会删除比当前指定的文件编号小的二进制日志文件,不会删除当前指定的二进制日志文件。

    2.根据时间删除二进制日志

    根据时间删除二进制日志,语法格式如下:

    PURGE { BINARY | MASTER } LOGS BEFORE datetime_expr

    执行此语法格式的SQL语句时,MySQL会删除指定时间以前的二进制日志。

    例如,删除“2020-01-17 16:21:00”之前的二进制日志文件。

    mysql> PURGE MASTER LOGS BEFORE '2020-01-17 16:21:00';Query OK, 0 rows affected (0.00 sec)

    SQL语句执行成功,查看/data/mysql/log/bin_log目录下的文件。

    [root@binghe150 ~]# ll /data/mysql/log/bin_logtotal 20-rw-r----- 1 mysql mysql 178 Jan 17 16:21 mysql-bin.000007-rw-r----- 1 mysql mysql 178 Jan 17 16:21 mysql-bin.000008-rw-r----- 1 mysql mysql 178 Jan 17 16:21 mysql-bin.000009-rw-r----- 1 mysql mysql 155 Jan 17 16:21 mysql-bin.000010-rw-r----- 1 mysql mysql 164 Jan 17 16:37 mysql-bin.index

    “2020-01-17 16:21:00”之前的二进制日志文件已经被删除了,但不会删除“2020-01-17 16:21:00”时间点的二进制日志文件。

    3.删除所有二进制日志

    在MySQL命令行执行如下命令即可删除所有二进制日志文件。

    mysql> RESET MASTER;Query OK, 0 rows affected (0.01 sec)

    SQL语句执行成功,再次查看/data/mysql/log/bin_log目录下的文件。

    [root@binghe150 ~]# ll /data/mysql/log/bin_logtotal 8-rw-r----- 1 mysql mysql 155 Jan 17 16:41 mysql-bin.000001-rw-r----- 1 mysql mysql  41 Jan 17 16:41 mysql-bin.index

    此时/data/mysql/log/bin_log目录下的所有二进制文件已经被删除,并且二进制文件重新从000001开始编号。

    临时开启与关闭二进制

    在 Mysql 命令行执行如下命令暂时关闭二进制日志:

    mysql> SET sql_log_bin = 0;Query OK, 0 rows affected (0.00 sec)

    暂时开启二进制日志,则需要在MySQL命令行执行如下命令:

    mysql> SET sql_log_bin = 1;

    Query OK, 0 rows affected (0.00 sec)

    关于“Mysql中二进制日志操作方法有哪些”这篇文章的内容就介绍到这里,感谢各位的阅读!相信大家对“Mysql中二进制日志操作方法有哪些”知识都有一定的了解,大家如果还想学习更多知识,欢迎关注编程网行业资讯频道。

    免责声明:

    ① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

    ② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

    Mysql中二进制日志操作方法有哪些

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

    下载Word文档

    猜你喜欢

    Mysql中二进制日志操作方法有哪些

    这篇文章主要介绍了Mysql中二进制日志操作方法有哪些的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Mysql中二进制日志操作方法有哪些文章都会有所收获,下面我们一起来看看吧。二进制日志二进制日志中以“事件”的
    2023-07-05

    Mysql中二进制日志操作方法说明

    目录二进制日志开启二进制日志查看二进制日志删除二进制日志1.根据编号删除二进制日志2.根据时间删除二进制日志3.删除所有二进制日志临时开启与关闭二进制二进制日志二进制日志中以“事件”的形式记录了数据库中数据的变化情
    2023-03-19

    Go语言二进制文件的读写操作方法有哪些

    本篇内容介绍了“Go语言二进制文件的读写操作方法有哪些”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!Go语言的二进制(gob)格式是一个自描
    2023-07-05

    mysql查询日志的方法有哪些

    有以下几种方法可以查询MySQL的日志:查询错误日志:MySQL的错误日志记录了MySQL实例发生的错误信息,可以通过查看错误日志来排查问题。错误日志的默认路径是在MySQL的data目录下的hostname.err文件中,也可以通过设置l
    mysql查询日志的方法有哪些
    2024-05-14

    MySQL表的CURD操作方法有哪些

    这篇文章主要介绍“MySQL表的CURD操作方法有哪些”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“MySQL表的CURD操作方法有哪些”文章能帮助大家解决问题。一、SQL语句操作关系型数据库的编程
    2023-07-05

    Node.js进行文件操作的方法有哪些

    这篇文章主要介绍“Node.js进行文件操作的方法有哪些”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Node.js进行文件操作的方法有哪些”文章能帮助大家解决问题。Node.js是一个基于Chro
    2023-07-05

    MySQL数据表操作的方法有哪些

    这篇文章主要介绍“MySQL数据表操作的方法有哪些”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“MySQL数据表操作的方法有哪些”文章能帮助大家解决问题。一、创建数据表1、基本语法create ta
    2023-06-30

    JQuery中Ajax的操作方法有哪些

    JQuery中Ajax的操作方法有以下几种:1. $.ajax():这是最常用的AJAX方法,可以发送HTTP请求并处理服务器响应。2. $.get():发送一个HTTP GET请求。3. $.post():发送一个HTTP POST请求。
    2023-08-12

    php中数组有哪些操作方法

    这篇文章给大家分享的是有关php中数组有哪些操作方法的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。php数组操作方法有:array_chunk()、array_pop()、array_push()、array_r
    2023-06-14

    Python中有哪些列表操作方法

    Python中有哪些列表操作方法?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。1、append用于在列表末尾追加新的对象a = [1,2,3]a.append(
    2023-06-15

    FreeSWITCH中的lua操作方法有哪些

    在FreeSWITCH中,可以使用Lua进行多种操作,包括但不限于以下几种:呼叫控制:可以使用Lua脚本来控制呼叫的流程,例如:呼叫转接、呼叫转发、呼叫挂断等。事件处理:可以使用Lua脚本来处理FreeSWITCH生成的各种事件,例如:呼叫
    2023-10-25

    python中有哪些文件操作方法

    这篇文章给大家介绍python中有哪些文件操作方法,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。python的数据类型有哪些?python的数据类型:1. 数字类型,包括int(整型)、long(长整型)和float(
    2023-06-14

    Golang中的位操作方法有哪些

    这篇文章主要讲解了“Golang中的位操作方法有哪些”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Golang中的位操作方法有哪些”吧!在计算机内存昂贵,处理能力有限的美好旧时光里,用比较黑
    2023-07-05

    linux中php的操作方法有哪些

    在Linux系统中,可以使用以下几种方式来操作PHP:使用命令行方式:可以通过在终端输入命令来执行PHP脚本,例如:php script.php。使用文本编辑器:可以编写PHP脚本,并保存为.php文件,然后通过终端运行PHP解释器来执行脚
    linux中php的操作方法有哪些
    2024-03-05

    c#中mongodb的操作方法有哪些

    在C#中使用MongoDB操作数据的方法有以下几种:使用官方提供的MongoDB.Driver库进行操作,该库提供了一系列的API方法,包括连接数据库、插入、更新、删除、查询等操作。使用第三方库如MongoDB.CSharpDriver、
    c#中mongodb的操作方法有哪些
    2024-04-09

    编程热搜

    目录