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]节点下添 ...
随机推荐
- L1-001 Hello World
这道超级简单的题目没有任何输入. 你只需要在一行中输出著名短句“Hello World!”就可以了. 输入样例: 无 输出样例: Hello World! #include<stdio.h> ...
- React Native笔记整理
判断一个APP页面时原生还是H5:http://www.cnblogs.com/sonice-cinsy/p/5671324.html 写给移动开发者的React Native指南:http://bl ...
- 使用 Koa + MongoDB + Redis 搭建论坛系统
koa 相对于 express 的优势在于, 1. 使用了 yield generator 封装了co 框架, 使得异步处理, 能像同步那样书写 2. 使用了 中间件 ko-schema, 使得验 ...
- es6 规范 的 具体用法 -- 待续
链接 1. const 表示不会被重新赋值的, 包括了不会被修改的, const 可以被修改, 但是不会被整体覆盖 由于是静态分析, const 相对 let 执行效率 更高 2. 模板字符串 ...
- SSH 获取GET/POST参数
在做项目的API通知接口的时候,发现在SSH框架中无法获取到对方服务器发来的异步通知信息.最后排查到的原因可能是struts2对HttpServletRequest进行了二次处理,那么该如何拿到pos ...
- 为iOS设计:图形和性能
在之前的文章里,我们探讨了基于多种不同技术来实现自定义的UIButton,当然不同的技术所涉及到的代码复杂度和难度也不一样.但是我也有意提到了基于不同方法的实现所体现出的性能表现也不一一相同. [在屏 ...
- 求a^b
时间: 1000ms / 空间: 131072KiB / Java类名: Main 描述 求a^b 由于结果可能很大,我们现在只需要知道这个值 mod 1012就可以了(为什么是1012?我的生日) ...
- js 在IOS系统微信浏览器内如何动态给title赋值
var body = document.getElementsByTagName('body')[0]; document.title = title; var iframe = document.c ...
- mac 搭建Vue开发环境
1: 使用的各个工具的版本为: Homebrew 1node.js npm webpack Vue 2: 安装brew 打开终端运行一下命令 /usr/bin/ruby -e "$(cur ...
- check camera and driver
1. How to check $ ls /dev/video* /dev/video0 /dev/video1 /dev/video2 /dev/video3 if not, U should ch ...