mysqlbinlog命令详解 Part 7 备份二进制日志文件
前情提要
实验环境
此次实验的环境如下
- 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 静态备份
使用如下命令来进行静态备份
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/
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参数指定备份的前缀,否则将备份到当前目录,名字同二进制文件,会覆盖已存在的文件
注意这里和上期的文本文件输出不一样
我们可以使用下面命令来获取当前有哪些binlog
mysql> SHOW BINARY LOGS;
3.2 在线备份
使用如下命令在线备份
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
好了 今天的内容就说到这里,下节再见
- MySQL 教程
- MySQL 安装
- MySQL 管理与配置
- MySQL PHP 语法
- MySQL 连接
- MySQL 创建数据库
- MySQL 删除数据库
- MySQL 选择数据库
- MySQL 数据类型
- MySQL 创建数据表
- MySQL 删除数据表
- MySQL 插入数据
- MySQL 查询数据
- MySQL where 子句
- MySQL UPDATE 查询
- MySQL DELETE 语句
- MySQL LIKE 子句
- mysql order by
- Mysql Join的使用
- MySQL NULL 值处理
- MySQL 正则表达式
- MySQL 事务
- MySQL ALTER命令
- MySQL 索引
- MySQL 临时表
- MySQL 复制表
- 查看MySQL 元数据
- MySQL 序列 AUTO_INCREMENT
- MySQL 处理重复数据
- MySQL 及 SQL 注入
- MySQL 导出数据
- MySQL 导入数据
- MYSQL 函数大全
- MySQL Group By 实例讲解
- MySQL Max()函数实例讲解
- mysql count函数实例
- MYSQL UNION和UNION ALL实例
- MySQL IN 用法
- MySQL between and 实例讲解
- Django JSONField SQL注入漏洞(CVE-2019-14234)分析与影响
- 扩展之Tensorflow2.0 | 21 Keras的API详解(上)卷积、激活、初始化、正则
- 持续代码质量管理-SonarQube-7.3部署
- 攻击Scrapyd爬虫
- 【webpack】从vue-cli 2x 到 3x 迁移与实践
- 前端单元测试那些事
- 前端Nginx那些事
- 前端运维部署那些事
- 《前端那些事》从0到1开发简单脚手架
- CDH7.1.1启用Kerberos
- 持续代码质量管理-SonarQube Scanner部署 2.1. 软件安装2.2. 配置修改
- 《前端那些事》聊聊前端的按需加载
- 直播带货系统,滚动视图,上滑隐藏,下滑显示
- 持续代码质量管理-SonarQube-7.3简单使用 2.1. 查看配置2.2. 质量检测2.3. 浏览器查看
- 安装指定版本的docker服务