前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >mysqlbinlog命令详解 Part 7 备份二进制日志文件

mysqlbinlog命令详解 Part 7 备份二进制日志文件

作者头像
bsbforever
发布2020-08-19 16:49:58
5930
发布2020-08-19 16:49:58
举报

前情提要

实验环境

此次实验的环境如下

  • MySQL 5.7.25
  • Redhat 6.10
  • binlog模式采用row模式

前面的一些章节我们对mysqldump常用命令进行了讲解

这个专题的内容为mysqlbinlog命令的详解

mysqlbinlog是MySQL中用来处理binlog的工具

这节内容讲如何备份二进制文件

1. 概念介绍

默认情况下mysqlbinlog读取日志文件并以文本形式显示或者保存到一个文件中

该命令既可以读取本地日志文件又可以读取远程数据库文件(不包含远程数据库relay log)

同样我们可以使用mysqlbinlog输出原始二进制的内容以达到备份的目的

其支持静态备份(Static )和在线备份(Live)

  • 静态备份 备份指定的日志文件
  • 在线备份 备份到最后一个文件不断开,持续备份新生成的事件,直到数据库断开或mysqlbinlog强制停止

2. 备份选项

如果需要用mysqlbinlog备份日志文件则最少需要使用如下两个选项

  • 使用 --read-from-remote-server或者 -R 参选项
  • 使用-- raw选项来备份原始二进制内容

2.1 --read-from-remote-server

需要搭配如下连接参数来使用

- --host

- --password

- --port

- --protocol

- --socket

- --user

这个参数需要远程数据库开启,而且只能读取binlog,不能读取relay log

连接的用户需要有连接远程数据库的权限

具体可见上节Part 6 的内容

2.2 -- raw选项

该选项有如下选项搭配使用

  • --stop-never 使用该选项使mysqlbinlog在读取到最后一个日志文件后不断开连接
  • --stop-never-slave-server-id=id 该选项和--stop-never一起使用,指定mysqlbinlog所用到的server_id,默认为65545,用来防止server id冲突,如该数据库的slave节点或另一个mysqlbinlog进程
  • --result-file 指定输出文件的前缀名称

3. 备份命令

备份既可以连接本地数据库也可以连接远程数据库

3.1 静态备份

使用如下命令来进行静态备份

代码语言:javascript
复制
mysqlbinlog --read-from-remote-server --host  11.12.14.29 --user system --password  --port 3306  --protocol=tcp   --raw mysql-bin.000001 mysql-bin.000002 mysql-bin.000003  --result-file=/tmp/
代码语言:javascript
复制
mysqlbinlog --read-from-remote-server --host  11.12.14.29 --user system --password  --port 3306  --protocol=tcp  --raw --to-last-log mysql-bin.000001  --result-file=/tmp/

第一个命令备份mysql-bin.000001 mysql-bin.000002 mysql-bin.000003 3个文件

第二个命令从mysql-bin.000001 开始备份到最后一个

区别为如果在备份过程中新增了mysql-bin.000004文件,则第二个命令会备份他

两个命令会在读取到最后一个文件后断开连接

使用--result-file参数指定备份的前缀,否则将备份到当前目录,名字同二进制文件,会覆盖已存在的文件

注意这里和上期的文本文件输出不一样

1.png
1.png
2.png
2.png

我们可以使用下面命令来获取当前有哪些binlog

代码语言:javascript
复制
mysql> SHOW BINARY LOGS;
3.png
3.png

3.2 在线备份

使用如下命令在线备份

代码语言:javascript
复制
mysqlbinlog --read-from-remote-server --host  11.12.14.29 --user system --password  --port 3306  --protocol=tcp --raw --stop-never mysql-bin.000001 --result-file=/tmp/

该命令表示从mysql-bin.000001 开始备份,读取到最后一个时不断开连接并继续备份新的事件

不需要使用--to-last-log 参数,因为--stop-never会自动使用该参数

4. mysqlbinlog备份的一些限制

  • 服务重启或网络故障后不会自动连接
  • 就算sync_binlog=1开启,mysqlbinlog也不保证可以获取最近的一些事件,你可以在备份时使用flush logs来确保
  • 其延迟和复制的延迟相似

5. 参考链接

https://dev.mysql.com/doc/refman/5.7/en/mysqlbinlog-backup.html

好了 今天的内容就说到这里,下节再见

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-08-05,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 宅必备 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前情提要
  • 实验环境
  • 1. 概念介绍
  • 2. 备份选项
    • 2.1 --read-from-remote-server
      • 2.2 -- raw选项
      • 3. 备份命令
        • 3.1 静态备份
          • 3.2 在线备份
          • 4. mysqlbinlog备份的一些限制
          • 5. 参考链接
          相关产品与服务
          云数据库 SQL Server
          腾讯云数据库 SQL Server (TencentDB for SQL Server)是业界最常用的商用数据库之一,对基于 Windows 架构的应用程序具有完美的支持。TencentDB for SQL Server 拥有微软正版授权,可持续为用户提供最新的功能,避免未授权使用软件的风险。具有即开即用、稳定可靠、安全运行、弹性扩缩等特点。
          领券
          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档