Mysql二进制恢复详解

本文涉及的产品
云数据库 RDS MySQL Serverless,0.5-2RCU 50GB
云数据库 RDS MySQL Serverless,价值2615元额度,1个月
简介:
Mysql二进制日志
特点:
1:二进制日志以一种更有效的格式,并且是事务安全的方式包含更新日志中可用的所有信息。
2:二进制日志包含了所有更新了数据或者已经潜在更新了数据(例如,没有匹配任何行的一个DELETE)的所有语句。语句以“事件”的形式保存,它描述数据更改。
3:二进制日志还包含关于每个更新数据库的语句的执行时间信息。它不包含没有修改任何数据的语句。如果你想要记录所有语句(例如,为了识别有问题的查询),你应使用一般查询日志。
4:二进制日志的主要目的是在恢复使能够最大可能地更新数据库,因为二进制日志包含备份后进行的所有更新。
5:二进制日志还用于在主复制服务器上记录所有将发送给从服务器的语句。
6:运行服务器时若启用二进制日志则性能大约慢1%。但是,二进制日志的好处,即用于恢复并允许设置复制超过了这个小小的性能损失。
Windows 启用mysql二进制日志:
mysql有以下几种日志:
错误日志: -log-err
查询日志: -log
慢查询日志: -log-slow-queries 
更新日志: -log-update
二进制日志: -log-bin
如图看出log_bin没有启动:
启动mysql二进制文件:
更改my.ini:
[mysqld]
#binlog
server-id=1
log-bin=c:/mysqlbin/binlog.log
log-bin-index=c:/mysqlbin/binlog.index
重启mysql
net stop mysql
net start mysql
再查看mysql二进制status:
如图看出log_bin已经启动:
查看二进制文件:
执行mysqlbinlog命令查看日志:
为了方便查看日志内容 可以导出到.sql文件:
然后创建数据库,创建一个表,并添加记录。
mysql>flush logs;  --产生第一个日志文件
mysql> create table test(id int auto_increment not null primary key,val int,data varchar(20));
mysql> insert into test(val,data) values(10,'liang'); 
mysql> insert into test(val,data) values(20,'jia');
mysql> insert into test(val,data) values(30,'hui');
mysql> flush logs; --产生第二个日志文件 
mysql> insert into test(val,data) values(40,'aaa'); 
mysql> insert into test(val,data) values(50,'bbb');
mysql> insert into test(val,data) values(60,'ccc');
mysql> delete from test where id between 4 and 5;  --删除记录
mysql> insert into test(val,data) values(70,'ddd');
mysql> flush logs; --产生第三个文件文件
mysql> insert into test(val,data) values(80,'dddd');
mysql> insert into test(val,data) values(90,'eeee');
mysql> drop table test; --删除表
二进制恢复表:
mysqlbinlog c:\mysqlbin\binlog.000002 | mysql -uroot -proot
mysqlbinlog c:\mysqlbin\binlog.000003 --stop-pos=861 | mysql -uroot -proot
mysqlbinlog c:\mysqlbin\binlog.000003 --start-pos=992 | mysql -uroot -proot
mysqlbinlog c:\mysqlbin\binlog.000004 --stop-pos=564 | mysql -uroot -proot
举例:当只是需要恢复部分记录的时候,可以使用时间点或位置点来定位
shell> mysqlbinlog --start-date="2009-04-20 9:01:00" --stop-date="2009-04-20 10:00:01" mysql-bin.000001 | mysql -uUser -pUserPWD 
shell> mysqlbinlog --start-position="368301" --stop-position="368312" mysql-bin.000001 | mysql -uUser -pUserPWD
如果MySQL服务器上有多个要执行的二进制日志,安全的方法是在一个连接中处理它们。
原因:假设第1个日志文件包含一个CREATE TEMPORARY TABLE语句,第2个日志文件包含一个使用该临时表的语句,则会造成问题。
恢复多个二进制日志文件的方法:
shell> mysqlbinlog hostname-bin.000001 hostname-bin.000002 | mysql -uUser -pUserPWD
另一个方法:
shell> mysqlbinlog hostname-bin.000001 >  /tmp/statements.sql
shell> mysqlbinlog hostname-bin.000002 > /tmp/statements.sql
shell> mysql -uUser -pUserPWD -e "source /tmp/statements.sql"
连接mysql服务器查看和删除二进制日志文件查看二进制日志文件
mysql> SHOW BINLOG EVENTS \G;
mysql> SHOW MASTER LOGS;
清除二进制日志文件
mysql> PURGE { MASTER|BINARY } LOGS TO 'log_name';
mysql> PURGE { MASTER|BINARY } LOGS BEFORE 'datetime';
例如:
mysql> PURGE MASTER LOGS TO 'mysql-bin.000001'; 
mysql> PURGE MASTER LOGS BEFORE '2009-12-20 13:00:00';
另一种清除二进制日志方法
mysql > flush logs;
mysql > reset master;









本文转自 Art_Hero 51CTO博客,原文链接:http://blog.51cto.com/curran/723891,如需转载请自行联系原作者
相关实践学习
基于CentOS快速搭建LAMP环境
本教程介绍如何搭建LAMP环境,其中LAMP分别代表Linux、Apache、MySQL和PHP。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
2月前
|
SQL 关系型数据库 MySQL
MySQL数据库,可以使用二进制日志(binary log)进行时间点恢复
对于MySQL数据库,可以使用二进制日志(binary log)进行时间点恢复。二进制日志是MySQL中记录所有数据库更改操作的日志文件。要进行时间点恢复,您需要执行以下步骤: 1. 确保MySQL配置文件中启用了二进制日志功能。在配置文件(通常是my.cnf或my.ini)中找到以下行,并确保没有被注释掉: Copy code log_bin = /path/to/binary/log/file 2. 在需要进行恢复的时间点之前创建一个数据库备份。这将作为恢复的基准。 3. 找到您要恢复到的时间点的二进制日志文件和位置。可以通过执行以下命令来查看当前的二进制日志文件和位
102 1
|
8月前
|
SQL 存储 关系型数据库
MySQL中的二进制日志(binlog)与中继日志(Relay log)
MySQL中的二进制日志(binlog)与中继日志(Relay log)
355 0
|
5月前
|
存储 关系型数据库 MySQL
[MySQL] 二进制的应用场景
[MySQL] 二进制的应用场景
实战篇之基于二进制思想的用户标签系统(Mysql+SpringBoot3
实战篇之基于二进制思想的用户标签系统(Mysql+SpringBoot3
|
5月前
|
存储 SQL 缓存
实战篇之基于二进制思想的用户标签系统(Mysql+SpringBoot2
实战篇之基于二进制思想的用户标签系统(Mysql+SpringBoot2
|
5月前
|
数据处理
实战篇之基于二进制思想的用户标签系统(Mysql+SpringBoot)
实战篇之基于二进制思想的用户标签系统(Mysql+SpringBoot)
|
5月前
|
SQL 存储 关系型数据库
②⑩ 【MySQL Log】详解MySQL日志:错误日志、二进制日志、查询日志、慢查询日志
②⑩ 【MySQL Log】详解MySQL日志:错误日志、二进制日志、查询日志、慢查询日志
79 0
|
5月前
|
SQL 存储 关系型数据库
认真学习MySQL中的二进制日志(binlog)与中继日志(Relay log)
认真学习MySQL中的二进制日志(binlog)与中继日志(Relay log)
108 0
|
5月前
|
缓存 关系型数据库 MySQL
这个错误提示表明Flink CDC在解析MySQL的二进制日志时,找不到对应表的TableMap事件。
这个错误提示表明Flink CDC在解析MySQL的二进制日志时,找不到对应表的TableMap事件。
145 2
|
9月前
|
关系型数据库 MySQL Linux
centos7上mysql的二进制安装
centos7上mysql的二进制安装