使用 MYSQLBINLOG 来恢复数据

本文介绍了MySQL的Binlog机制,包括其配置方法、如何查看及利用mysqlbinlog工具导出二进制日志进行数据恢复的过程。

今天在家里做了一下试验,终于搞明白了以前做复制的时候没有搞明白的问题。原来BINLOG就是一个记录SQL语句的过程,和普通的LOG一样。不过只是她是二进制存储,普通的是十进制存储罢了。
1、配置文件里要写的东西:
[mysqld]
log-bin=yueliangdao_binglog(名字可以改成自己的,如果不改名字的话,默认是以主机名字命名)
重新启动MSYQL服务。
二进制文件里面的东西显示的就是执行所有语句的详细记录,当然一些语句不被记录在内,要了解详细的,见手册页。

2、查看自己的BINLOG的名字是什么。
show binlog events;

query result(1 records)

Log_namePosEvent_typeServer_idEnd_log_posInfo
yueliangdao_binglog.0000014Format_desc1106Server ver: 5.1.22-rc-community-log, Binlog ver: 4




3、我做了几次操作后,她就记录了下来。
又一次 show binlog events 的结果。

query result(4 records)

 

Log_namePosEvent_typeServer_idEnd_log_posInfo
yueliangdao_binglog.0000014Format_desc1106Server ver: 5.1.22-rc-community-log, Binlog ver: 4
yueliangdao_binglog.000001106Intvar1134INSERT_ID=1
yueliangdao_binglog.000001134Query1254use `test`; create table a1(id int not null auto_increment primary key, str varchar(1000)) engine=myisam

yueliangdao_binglog.000001254Query1330use `test`; insert into a1(str) values ('I love you'),('You love me')
yueliangdao_binglog.000001330Query1485use `test`; drop table a1


4、用mysqlbinlog 工具来显示记录的二进制结果,然后导入到文本文件,为了以后的恢复。
详细过程如下:
D:/LAMP/MYSQL5/data>mysqlbinlog --start-position=4 --stop-position=106 yueliangd
ao_binglog.000001 > c://test1.txt
test1.txt的文件内容:

/*!40019 SET @@session.max_insert_delayed_threads=0*/;
/*!50003 SET @OLD_COMPLETION_TYPE=@@COMPLETION_TYPE,COMPLETION_TYPE=0*/;
DELIMITER /*!*/;
# at 4
#7122 16:9:18 server id 1  end_log_pos 106     Start: binlog v 4, server v 5.1.22-rc-community-log created 7122 16:9:18 at startup
# Warning: this binlog was not closed properly. Most probably mysqld crashed writing it.
ROLLBACK/*!*/;
DELIMITER ;
# End of log file
ROLLBACK /* added by mysqlbinlog */;
/*!50003 SET COMPLETION_TYPE=@OLD_COMPLETION_TYPE*/;
第二行的记录:
D:/LAMP/MYSQL5/data>mysqlbinlog --start-position=106 --stop-position=134 yuelian
gdao_binglog.000001 > c://test1.txt
test1.txt内容如下:

/*!40019 SET @@session.max_insert_delayed_threads=0*/;
/*!50003 SET @OLD_COMPLETION_TYPE=@@COMPLETION_TYPE,COMPLETION_TYPE=0*/;
DELIMITER /*!*/;
# at 106
#7122 16:22:36 server id 1  end_log_pos 134     Intvar
SET INSERT_ID=1/*!*/;
DELIMITER ;
# End of log file
ROLLBACK /* added by mysqlbinlog */;
/*!50003 SET COMPLETION_TYPE=@OLD_COMPLETION_TYPE*/;

第三行记录
D:/LAMP/MYSQL5/data>mysqlbinlog --start-position=134 --stop-position=254 yuelian
gdao_binglog.000001 > c://test1.txt
内容:
/*!40019 SET @@session.max_insert_delayed_threads=0*/;
/*!50003 SET @OLD_COMPLETION_TYPE=@@COMPLETION_TYPE,COMPLETION_TYPE=0*/;
DELIMITER /*!*/;
# at 134
#7122 16:55:31 server id 1  end_log_pos 254     Query    thread_id=1    exec_time=0    error_code=0
use test/*!*/;
SET TIMESTAMP=1196585731/*!*/;
SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=1, @@session.unique_checks=1/*!*/;
SET @@session.sql_mode=1344274432/*!*/;
/*!/C utf8 *//*!*/;
SET @@session.character_set_client=33,@@session.collation_connection=33,@@session.collation_server=33/*!*/;
create table a1(id int not null auto_increment primary key,
str varchar(1000)) engine=myisam/*!*/;
DELIMITER ;
# End of log file
ROLLBACK /* added by mysqlbinlog */;
/*!50003 SET COMPLETION_TYPE=@OLD_COMPLETION_TYPE*/;

/*!40019 SET @@session.max_insert_delayed_threads=0*/;

第四行的记录:
D:/LAMP/MYSQL5/data>mysqlbinlog --start-position=254 --stop-position=330 yuelian
gdao_binglog.000001 > c://test1.txt
/*!50003 SET @OLD_COMPLETION_TYPE=@@COMPLETION_TYPE,COMPLETION_TYPE=0*/;
DELIMITER /*!*/;
# at 254
#7122 16:22:36 server id 1  end_log_pos 330     Query    thread_id=1    exec_time=0    error_code=0
use test/*!*/;
SET TIMESTAMP=1196583756/*!*/;
SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=1, @@session.unique_checks=1/*!*/;
SET @@session.sql_mode=1344274432/*!*/;
/*!/C utf8 *//*!*/;
SET @@session.character_set_client=33,@@session.collation_connection=33,@@session.collation_server=33/*!*/;
use `test`; insert into a1(str) values ('I love you'),('You love me')/*!*/;
DELIMITER ;
# End of log file
ROLLBACK /* added by mysqlbinlog */;
/*!50003 SET COMPLETION_TYPE=@OLD_COMPLETION_TYPE*/;

5、查看这些东西是为了恢复数据,而不是为了好玩。所以我们最中还是为了要导入结果到MYSQL中。

D:/LAMP/MYSQL5/data>mysqlbinlog --start-position=134 --stop-position=330 yuelian
gdao_binglog.000001 | mysql -uroot -p

或者
D:/LAMP/MYSQL5/data>mysqlbinlog --start-position=134 --stop-position=330 yuelian
gdao_binglog.000001 >test1.txt
进入MYSQL导入
mysql> source c://test1.txt
Query OK, 0 rows affected (0.00 sec)

Query OK, 0 rows affected (0.00 sec)

Database 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)

Charset changed
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.00 sec)
6、查看数据:
mysql> show tables;
+----------------+
| Tables_in_test |
+----------------+
| a1             |
+----------------+
1 row in set (0.01 sec)

mysql> select * from a1;
+----+-------------+
| id | str         |
+----+-------------+
|  1 | I love you  |
|  2 | You love me |
+----+-------------+
2 rows in set (0.00 sec)

变更记录 "日期 "版本 "变更说明 "作者 " "2013/08/02 "1.0 "数据字典设计 " " "2013/08/03 "2.0 "数据库设计 " " "2013/08/05 "2.1 "审核 " " "2013/08/08 "2.5 "升级及审核 " " " " " " " " " " " " 签字确认 "职务 "姓名 "签字 "日期 " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " 目 录 1 引言 4 1.1 预期的读者 4 1.2 数据库 4 1.3 目的和作用 4 2 数据字典设计 4 3 数据库设计 5 3.1 系统物理结构设计 5 3.2 表设计 5 3.2.1 TableName(表名的解释) 5 3.3 表之间的关联设计 5 3.4 存储过程设计 6 3.5 触发器设计 6 3.6 Job设计 6 引言 1 预期的读者 本文预期读者: OA办公自动化管理系统的设计、开发人员; OA办公自动化管理系统的验收、评审人员; OA办公自动化管理系统的测试人员; 客户方的市场部人员、开发人员。 2 数据数据库采用 MSSQL SERVER 2008 R2 数据库名称:OASYSDB/OA系统数据库 3 目的和作用 将数据分析的结果进一步整理,形成最终的计算机模型,以便开发人员建立物理数据 库。 数据字典设计 数据字典的主要目的是提供查阅对不了解的条目的解释。在数据字典中记录数据 元素的下列信息:一般信息(名字,别名,描述等),定义(数据类型,长度,结构 等),使用特点(值的范围,使用频率,使用方式—输入/输出/本地,条件值等), 控制信息(来源,用户,使用它的程序,改变权等),分组信息(父结构,从属结构 ,物理位置—记录、文件和数据库等)。 下面的例子是通过卡片来描述数据字典: 2.1个人信息数据项与数据流 2.1.1名字:人员编号 描述:每个人员的唯一标识,用来区分人员 定义:字符串类型nvarchar(20) 位置:个人信息 2.1.2名字:姓名 描述:人员姓名,对人员的称呼 定义:字符串类型nvarchar(20) 位置:个人信息 2.1.3名字:性别 描述:每个人员的性别,男或女 定义:字符串类型nvarchar(50) 位置:基本信息 2.1.4名字:出生年月 描述:人员的出生日期,精确到月份 定义:日期类型datetime 位置:个人信息 2.1.5名字: 部门 描述:人员所在部门名称,用部门编号标识 定义:整型int 位置:部门信息 2.1.6名字:岗位 描述:人员所处岗位名称,用岗位编号标识 定义:整形int 位置:岗位信息 2.1.7名字:婚姻状况 描述:人员的婚姻状况,分为"未婚"、"已婚" 定义:字符串类型nvarchar(20) 位置:基本信息 2.1.8名字: 联系电话 描述:人员的联系电话,可以是固定电话或移动电话 定义:字符串类型nvarchar(50) 位置:个人信息 2.1.9名字: 入职日期 描述:人员的入职日期,精确到日 定义:datetime 位置:个人信息 2.1.10名字: 电子邮箱 描述:人员常用的电子邮箱 定义:字符串类型nvarchar(50) 位置:个人信息 2.1.11名字: 家庭地址 描述:人员的居住地址 定义:字符串类型nvarchar(MAX) 位置:个人信息 2.1.12名字: 照片 描述:人员的正式头像,存储方式为照片的本地地址 定义:字符串类型nvarchar(50) 位置:个人信息 2.1.13名字: 密码 描述:人员登录系统的密码,可修改 定义:字符串类型nvarchar(50) 位置:个人信息 2.1.14名字: 旧密码 描述:人员正在使用的密码 定义:字符串类型nvarchar(50) 位置:个人信息 2.1.15名字: 新密码 描述:人员新设置的密码 定义:字符串类型nvarchar(50) 位置:个人信息 2.1.16名字: 工资 描述:人员的月度工资,单位为元 定义:货币类型money 位置:个人信息 2.1.17名字: 个人信息 描述:个人的一切信息,部分为用户不可见或不可改 定义:个人信息=人员编号+人员姓名+密码+性别+出生年月+部门+岗位+工资+电子邮 箱+联系电话+婚姻状况+入职日期+家庭地址+照片 位置:个人信息 2.1.18名字: 个人可修改信息 描述:可由个人修改的部分个人信息 定义:个人可修改信息=性别+出生年月+电子邮箱+联系电话+婚姻状况+家庭地址+照 片 位置:个人信息 2.1.19名字: 密码修改信息 描述:个人的密码修改 定义:密码修改信息=人员编号+姓名+新密码+旧密码 位置:个人信息 2.2报销信息数据项与数据流 2.2
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值