MySQL 二进制文件恢复
先不说话 先来一段代码块
mysql> show variables like 'autocommit';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| autocommit | ON |
+---------------+-------+
1 row in set (0.00 sec) mysql> set autocommit=0;
Query OK, 0 rows affected (0.00 sec) mysql> show variables like 'autocommit';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| autocommit | OFF |
+---------------+-------+
1 row in set (0.00 sec) mysql> show master status;
+------------------+----------+--------------+------------------+-------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+------------------+----------+--------------+------------------+-------------------+
| mysql-bin.000034 | 120 | | | |
+------------------+----------+--------------+------------------+-------------------+
1 row in set (0.00 sec) #第二个
mysql> create database luna;
Query OK, 1 row affected (0.00 sec) mysql> show master status;
+------------------+----------+--------------+------------------+-------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+------------------+----------+--------------+------------------+-------------------+
| mysql-bin.000034 | 214 | | | |
+------------------+----------+--------------+------------------+-------------------+
1 row in set (0.00 sec) mysql> use luna;
Database changed
mysql> create table t1(id int);
Query OK, 0 rows affected (0.08 sec) mysql> show master status;
+------------------+----------+--------------+------------------+-------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+------------------+----------+--------------+------------------+-------------------+
| mysql-bin.000034 | 311 | | | |
+------------------+----------+--------------+------------------+-------------------+
1 row in set (0.00 sec) mysql> insert into t1 values(1);
Query OK, 1 row affected (0.00 sec) mysql> show master status;
+------------------+----------+--------------+------------------+-------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+------------------+----------+--------------+------------------+-------------------+
| mysql-bin.000034 | 311 | | | |
+------------------+----------+--------------+------------------+-------------------+
1 row in set (0.00 sec) mysql> commit;
Query OK, 0 rows affected (0.33 sec) mysql> show master status;
+------------------+----------+--------------+------------------+-------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+------------------+----------+--------------+------------------+-------------------+
| mysql-bin.000034 | 499 | | | |
+------------------+----------+--------------+------------------+-------------------+
1 row in set (0.00 sec) #update
mysql> update t1 set id=11 where id=1;
Query OK, 1 row affected (0.00 sec)
Rows matched: 1 Changed: 1 Warnings: 0 mysql> show master status;
+------------------+----------+--------------+------------------+-------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+------------------+----------+--------------+------------------+-------------------+
| mysql-bin.000034 | 857 | | | |
+------------------+----------+--------------+------------------+-------------------+
1 row in set (0.00 sec) mysql> show master status;
+------------------+----------+--------------+------------------+-------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+------------------+----------+--------------+------------------+-------------------+
| mysql-bin.000034 | 1051 | | | |
+------------------+----------+--------------+------------------+-------------------+
1 row in set (0.00 sec) #delete
mysql> delete from t1 where id=2;
Query OK, 1 row affected (0.00 sec) mysql> show master status;
+------------------+----------+--------------+------------------+-------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+------------------+----------+--------------+------------------+-------------------+
| mysql-bin.000034 | 1051 | | | |
+------------------+----------+--------------+------------------+-------------------+
1 row in set (0.00 sec) mysql> commit;
Query OK, 0 rows affected (0.01 sec) mysql> show master status;
+------------------+----------+--------------+------------------+-------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+------------------+----------+--------------+------------------+-------------------+
| mysql-bin.000034 | 1239 | | | |
+------------------+----------+--------------+------------------+-------------------+
1 row in set (0.00 sec) #drop
mysql> select * from t1;
+------+
| id |
+------+
| 11 |
| 3 |
| 4 |
+------+
3 rows in set (0.00 sec) mysql> update t1 set id=44 where id=4;
Query OK, 1 row affected (0.00 sec)
Rows matched: 1 Changed: 1 Warnings: 0 mysql> drop table t1;
Query OK, 0 rows affected (0.04 sec) mysql> drop database luna;
Query OK, 0 rows affected (0.08 sec) mysql> show master status;
+------------------+----------+--------------+------------------+-------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+------------------+----------+--------------+------------------+-------------------+
| mysql-bin.000034 | 1633 | | | |
+------------------+----------+--------------+------------------+-------------------+
1 row in set (0.00 sec) #工具查看
mysql> show binlog events in 'mysql-bin.000034'; #在命令行查看 [root@db01-sa mysql]# mysqlbinlog --base64-output=decode-rows -vvv /data/mysql/mysql-bin.000034 /*!50530 SET @@SESSION.PSEUDO_SLAVE_MODE=1*/;
/*!40019 SET @@session.max_insert_delayed_threads=0*/;
/*!50003 SET @OLD_COMPLETION_TYPE=@@COMPLETION_TYPE,COMPLETION_TYPE=0*/;
DELIMITER /*!*/;
# at 4
#180627 17:49:07 server id 6 end_log_pos 120 CRC32 0x75f5723b Start: binlog v 4, server v 5.6.38-log created 180627 17:49:07 at startup
# Warning: this binlog is either in use or was not closed properly.
ROLLBACK/*!*/;
# at 120
#180627 18:21:12 server id 6 end_log_pos 214 CRC32 0x0a1b14fc Query thread_id=2 exec_time=0 error_code=0
SET TIMESTAMP=1530094872/*!*/;
SET @@session.pseudo_thread_id=2/*!*/;
SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=0, @@session.unique_checks=1, @@session.autocommit=1/*!*/;
SET @@session.sql_mode=1075838976/*!*/;
SET @@session.auto_increment_increment=1, @@session.auto_increment_offset=1/*!*/;
/*!\C utf8 *//*!*/;
SET @@session.character_set_client=33,@@session.collation_connection=33,@@session.collation_server=33/*!*/;
SET @@session.lc_time_names=0/*!*/;
SET @@session.collation_database=DEFAULT/*!*/;
create database luna
/*!*/;
# at 214
#180627 18:22:16 server id 6 end_log_pos 311 CRC32 0x9fe876dc Query thread_id=2 exec_time=0 error_code=0
use `luna`/*!*/;
SET TIMESTAMP=1530094936/*!*/;
create table t1(id int)
/*!*/;
# at 311
#180627 18:23:02 server id 6 end_log_pos 383 CRC32 0xa66c8e7d Query thread_id=2 exec_time=0 error_code=0
SET TIMESTAMP=1530094982/*!*/;
BEGIN
/*!*/;
# at 383
#180627 18:23:02 server id 6 end_log_pos 428 CRC32 0xf0097518 Table_map: `luna`.`t1` mapped to number 70
# at 428
#180627 18:23:02 server id 6 end_log_pos 468 CRC32 0x2b1aa647 Write_rows: table id 70 flags: STMT_END_F
### INSERT INTO `luna`.`t1`
### SET
### @1=1 /* INT meta=0 nullable=1 is_null=0 */
# at 468
#180627 18:23:28 server id 6 end_log_pos 499 CRC32 0x62719421 Xid = 37
COMMIT/*!*/;
# at 499
#180627 18:25:06 server id 6 end_log_pos 571 CRC32 0x84c9efe6 Query thread_id=2 exec_time=0 error_code=0
SET TIMESTAMP=1530095106/*!*/;
BEGIN
/*!*/;
# at 571
#180627 18:25:06 server id 6 end_log_pos 616 CRC32 0x74d151e2 Table_map: `luna`.`t1` mapped to number 70
# at 616
#180627 18:25:06 server id 6 end_log_pos 656 CRC32 0xd10d7120 Write_rows: table id 70 flags: STMT_END_F
### INSERT INTO `luna`.`t1`
### SET
### @1=2 /* INT meta=0 nullable=1 is_null=0 */
# at 656
#180627 18:27:16 server id 6 end_log_pos 701 CRC32 0x7895e39d Table_map: `luna`.`t1` mapped to number 70
# at 701
#180627 18:27:16 server id 6 end_log_pos 741 CRC32 0x5acc32fe Write_rows: table id 70 flags: STMT_END_F
### INSERT INTO `luna`.`t1`
### SET
### @1=3 /* INT meta=0 nullable=1 is_null=0 */
# at 741
#180627 18:27:30 server id 6 end_log_pos 786 CRC32 0xb4ed9f5a Table_map: `luna`.`t1` mapped to number 70
# at 786
#180627 18:27:30 server id 6 end_log_pos 826 CRC32 0x819e8db3 Write_rows: table id 70 flags: STMT_END_F
### INSERT INTO `luna`.`t1`
### SET
### @1=4 /* INT meta=0 nullable=1 is_null=0 */
# at 826
#180627 18:27:58 server id 6 end_log_pos 857 CRC32 0x452e1f31 Xid = 41
COMMIT/*!*/;
# at 857
#180627 18:29:56 server id 6 end_log_pos 929 CRC32 0x5e68dff7 Query thread_id=2 exec_time=0 error_code=0
SET TIMESTAMP=1530095396/*!*/;
BEGIN
/*!*/;
# at 929
#180627 18:29:56 server id 6 end_log_pos 974 CRC32 0xf4e4e2bf Table_map: `luna`.`t1` mapped to number 70
# at 974
#180627 18:29:56 server id 6 end_log_pos 1020 CRC32 0x2d809738 Update_rows: table id 70 flags: STMT_END_F
### UPDATE `luna`.`t1`
### WHERE
### @1=1 /* INT meta=0 nullable=1 is_null=0 */
### SET
### @1=11 /* INT meta=0 nullable=1 is_null=0 */
# at 1020
#180627 18:30:25 server id 6 end_log_pos 1051 CRC32 0x08029580 Xid = 52
COMMIT/*!*/;
# at 1051
#180627 18:31:25 server id 6 end_log_pos 1123 CRC32 0xcf1b6980 Query thread_id=2 exec_time=0 error_code=0
SET TIMESTAMP=1530095485/*!*/;
BEGIN
/*!*/;
# at 1123
#180627 18:31:25 server id 6 end_log_pos 1168 CRC32 0x7729069b Table_map: `luna`.`t1` mapped to number 70
# at 1168
#180627 18:31:25 server id 6 end_log_pos 1208 CRC32 0x04cb5496 Delete_rows: table id 70 flags: STMT_END_F
### DELETE FROM `luna`.`t1`
### WHERE
### @1=2 /* INT meta=0 nullable=1 is_null=0 */
# at 1208
#180627 18:31:36 server id 6 end_log_pos 1239 CRC32 0x27093f44 Xid = 56
COMMIT/*!*/;
# at 1239
#180627 18:33:45 server id 6 end_log_pos 1311 CRC32 0x8be80fc2 Query thread_id=2 exec_time=0 error_code=0
SET TIMESTAMP=1530095625/*!*/;
BEGIN
/*!*/;
# at 1311
#180627 18:33:45 server id 6 end_log_pos 1356 CRC32 0x77578bf1 Table_map: `luna`.`t1` mapped to number 70
# at 1356
#180627 18:33:45 server id 6 end_log_pos 1402 CRC32 0x9c7bf8df Update_rows: table id 70 flags: STMT_END_F
### UPDATE `luna`.`t1`
### WHERE
### @1=4 /* INT meta=0 nullable=1 is_null=0 */
### SET
### @1=44 /* INT meta=0 nullable=1 is_null=0 */
# at 1402
#180627 18:34:17 server id 6 end_log_pos 1433 CRC32 0x354e0150 Xid = 60
COMMIT/*!*/;
# at 1433
#180627 18:34:17 server id 6 end_log_pos 1548 CRC32 0x52b3dc50 Query thread_id=2 exec_time=0 error_code=0
SET TIMESTAMP=1530095657/*!*/;
DROP TABLE `t1` /* generated by server */
/*!*/;
# at 1548
#180627 18:34:26 server id 6 end_log_pos 1633 CRC32 0x2e40af97 Query thread_id=2 exec_time=0 error_code=0
SET TIMESTAMP=1530095666/*!*/;
drop database luna
/*!*/;
DELIMITER ;
# End of log file
ROLLBACK /* added by mysqlbinlog */;
/*!50003 SET COMPLETION_TYPE=@OLD_COMPLETION_TYPE*/;
/*!50530 SET @@SESSION.PSEUDO_SLAVE_MODE=0*/; #截取
[root@db01-sa mysql]# mysqlbinlog --start-position=120 --stop-position=857 /data/mysql/mysql-bin.000034 >/tmp/luna2.sql
WARNING: The range of printed events ends with a row event or a table map event that does not have the STMT_END_F flag
set. This might be because the last statement was not fully written to the log, or because you are using a
--stop-position or --stop-datetime that refers to an event in the middle of a statement. The event(s) from
the partial statement have not been written to output. 警告:打印事件的范围以行或表映射事件结束,没有设置了STMT_END_F标志。这可能是因为过去的声明没有完全写入日志,或者因为您使
用的是——停止位置,stop-datetime指一个事件在一份声明中。部分语句中的事件尚未写入输出。 #产生以上报错就是因为截取的时候 一定要注意begin begin是一个语句的开始 一定要从begin之前开始截断
之前的语句mysqlbinlog --start-position=120 --stop-position=974 /data/mysql/mysql-bin.000034 >/tmp/luna.sql 当中的974要改成857 mysql> set sql_log_bin=0;
Query OK, 0 rows affected (0.00 sec) mysql> source /tmp/luna.sql;
Query OK, 0 rows affected (0.00 sec) Query OK, 0 rows affected, 1 warning (0.00 sec) Query OK, 0 rows affected (0.00 sec) Query OK, 0 rows affected (0.00 sec) Query OK, 0 rows affected (0.00 sec) Query OK, 0 rows affected (0.00 sec) Query OK, 0 rows affected (0.00 sec) Query OK, 0 rows affected (0.00 sec) Query OK, 0 rows affected (0.00 sec) Query OK, 0 rows affected (0.00 sec) Charset changed
Query OK, 0 rows affected (0.00 sec) Query OK, 0 rows affected (0.00 sec) Query OK, 0 rows affected (0.00 sec) Query OK, 0 rows affected (0.00 sec) Query OK, 1 row affected (0.00 sec) Database changed
Query OK, 0 rows affected (0.00 sec) Query OK, 0 rows affected (0.36 sec) Query OK, 0 rows affected (0.00 sec) Query OK, 0 rows affected (0.00 sec) Query OK, 0 rows affected (0.01 sec) Query OK, 0 rows affected (0.00 sec) Query OK, 0 rows affected (0.01 sec) Query OK, 0 rows affected (0.00 sec) Query OK, 0 rows affected (0.00 sec) Query OK, 0 rows affected (0.03 sec) Query OK, 0 rows affected (0.00 sec) Query OK, 0 rows affected (0.01 sec) Query OK, 0 rows affected (0.00 sec) Query OK, 0 rows affected (0.00 sec) Query OK, 0 rows affected (0.00 sec) Query OK, 0 rows affected (0.00 sec) Query OK, 0 rows affected (0.00 sec) mysql> show database;
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'database' at line 1
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| binlog |
| luna |
| mysql |
| nod01 |
| oldboy |
| performance_schema |
| test |
| world |
+--------------------+
9 rows in set (0.00 sec) mysql> use luna
Database changed
mysql>
mysql>
mysql> show table;
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1
mysql> show tables;
+----------------+
| Tables_in_luna |
+----------------+
| t1 |
+----------------+
1 row in set (0.00 sec) mysql> select * from t1;
+------+
| id |
+------+
| 1 |
| 2 |
| 3 |
| 4 |
+------+
4 rows in set (0.00 sec) mysql> show master status;
+------------------+----------+--------------+------------------+-------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+------------------+----------+--------------+------------------+-------------------+
| mysql-bin.000034 | 1633 | | | |
+------------------+----------+--------------+------------------+-------------------+
1 row in set (0.00 sec)
MySQL binlog的补充
2、Mysqlbinlog解析工具
| 参数 | 描述 |
| -d | 指定库的binlog |
| -r | 相当于重定向到指定文件 |
| --start-position--stop-position | 按照指定位置精确解析binlog日志(精确),如不接--stop-positiion则一直到binlog日志结尾 |
| --start-datetime--stop-datetime | 按照指定时间解析binlog日志(模糊,不准确),如不接--stop-datetime则一直到binlog日志结尾 |
4、MySQL企业binlog模式的选择
- 互联网公司使用MySQL的功能较少(不用存储过程、触发器、函数),选择默认的Statement level
- 用到MySQL的特殊功能(存储过程、触发器、函数)则选择Mixed模式
- 用到MySQL的特殊功能(存储过程、触发器、函数),又希望数据最大化一直则选择Row模式
mysql>show global variables like "binlog%";
+-----------------------------------------+-----------+| Variable_name | Value |+-----------------------------------------+-----------+| binlog_cache_size | 1048576 || binlog_direct_non_transactional_updates | OFF || binlog_format | STATEMENT | #系统默认为STATEMENT模式| binlog_stmt_cache_size | 32768 |+-----------------------------------------+-----------+4 rows in set (0.00 sec) mysql>set global binlog_format='ROW'; #vim my.cnf
[mysqld]binlog_format='ROW' #放在mysqld模块下面user = mysqlport = 3306socket = /data/3306/mysql.sockMySQL 二进制文件恢复的更多相关文章
- MySQL 二进制文件恢复数据基础版本
先来一段 自行体会 #---------------------------------------------------------------------------------- #模拟通过b ...
- [svc]mysql备份恢复及常用命令
如何实现mysql读写分离 1.通过程序实现读写分类(性能 效率最佳) php和java都可以通过设置多个连接文件轻松实现对db的读写分离,即当select时,就去连读库的连接文件,当update,i ...
- MySql数据库恢复(*frm)文件
mysql数据库恢复(*frm)文件 WorkBench 在使用虚拟服务器时,服务器提供商一般不会像我们使用本地数据库一样:使用导入导出(这样的文件后缀是*.sql).大部分时候提供的是一个文件夹,里 ...
- MySQL 备份恢复(导入导出)单个 innodb表
MySQL 备份恢复单个innodb表呢,对于这种恢复我们我们很多朋友都不怎么了解了,下面一起来看一篇关于MySQL 备份恢复单个innodb表的教程 在实际环境中,时不时需要备份恢复单个或多个表(注 ...
- Mysql备份恢复方案解析
1.全量备份和增量备份 1.1全量备份 就是对现有的数据进行全部备份,之前做的备份均可舍弃,以最新的全备为基点. a.全备所有数据库 Innodb引擎: [root@leader mysql]#mys ...
- 基于Redo Log和Undo Log的MySQL崩溃恢复流程
在之前的文章「简单了解InnoDB底层原理」聊了一下MySQL的Buffer Pool.这里再简单提一嘴,Buffer Pool是MySQL内存结构中十分核心的一个组成,你可以先把它想象成一个黑盒子. ...
- mysql二进制文件操作语法(mysql binary log operate statements)
开启 binary logs 功能 在 mysql 配置文件中配置 log-bin,重启 mysql my.cnf (on Linux/unix) or my.ini (on Windows) 例子: ...
- mysql binlog恢复
MySQL Binary Log也就是常说的bin-log, ,是mysql执行改动产生的二进制日志文件,其主要作用有两个: * 数据回复 * 主从数据库.用于slave端执行增删改,保持与maste ...
- MySQL数据库恢复(使用mysqlbinlog命令)
binlog是通过记录二进制文件方式来备份数据,然后在从二进制文件将数据恢复到某一时段或某一操作点. 1:开启binlog日志记录 修改mysql配置文件mysql.ini,在[mysqld]节点下添 ...
随机推荐
- DevExpress v18.1新版亮点——WinForms篇(五)
用户界面套包DevExpress v18.1日前终于正式发布,本站将以连载的形式为大家介绍各版本新增内容.本文将介绍了DevExpress WinForms v18.1 的新功能,快来下载试用新版本! ...
- Final阶段第1周/共1周 Scrum立会报告+燃尽图 01
作业要求[https://edu.cnblogs.com/campus/nenu/2018fall/homework/2411] 版本控制:https://git.coding.net/liuyy08 ...
- STL标准库-迭代器适配器
技术在于交流.沟通,本文为博主原创文章转载请注明出处并保持作品的完整性 这次主要介绍一下迭代器适配器.以reverse_iterator(反向迭代器),insert_iterator(插入迭代器),o ...
- string用scanf读入(节省时间)
#include <iostream> #include <stdio.h> #include <string.h> using namespace std; in ...
- 如何使用Java读写系统属性?
如何使用Java读写系统属性? 读: Properties props = System.getProperties(); Enumeration prop_names = props.propert ...
- linux用户添加到多个组
usermod -G groupname username (这种会把用户从其他组中去掉,只属于该组)如:usermod -G git git (git只属于git组) usermod -a -G g ...
- Unity 3D游戏-塔防类游戏源码:重要方法和功能的实现
Unity-塔防游戏源码 本文提供全流程,中文翻译.Chinar坚持将简单的生活方式,带给世人!(拥有更好的阅读体验 -- 高分辨率用户请根据需求调整网页缩放比例) 1 2 3 4 5 6 7 8 9 ...
- Spring AOP关于cglib动态代理
一: Spring AOP的默认代理方式是jdk动态代理,还有另外一种代理方式是cglib代理,简单说前者基于接口,后者基于继承,基本思路是将被代理对象的类作为父类,然后创建子类来进行方法的调用,调用 ...
- 51Nod:1268 和为K的组合
1268 和为K的组合 基准时间限制:1 秒 空间限制:131072 KB 分值: 20 难度:3级算法题 收藏 关注 给出N个正整数组成的数组A,求能否从中选出若干个,使他们的和为K.如果可以 ...
- maven quick start
mvn archetype:generate -DgroupId=com.mycompany.app -DartifactId=my-app -DarchetypeArtifactId=maven-a ...