`

mysql利用二进制日志来进行恢复数据的实例操作

 
阅读更多

mysql 利用二进制日志来进行恢复数据的实例操作
备份开始前的工作环境准备:

1、创建用于保存二进制日志文件的目录
# mkdir /mybinlog
# chown mysql.mysql /mybinlog

2、修改配置文件
# vim /etc/my.cnf
log-bin=/mybinlog/mysql-bin 二进制日志目录及文件前缀
innodb_file_per_table = 1 启用innoDB表
datadir = /mydata/data 指定数据库的目录

3、为备份数据库创建存放点
# mkdir /mybackup
# chown -R mysql.mysql /mybackup

4、启动mysql服务器
# service mysqld start

5、插入需要备份的数据库
# mysql < jiaowu.sql

使用mysqldump工具完成完全备份

mysqldump用来温备份,首先需要为所有库加读锁,并且滚动一下二进制日志,记录当前二进制文件位置

# mysqldump –all-databases –lock-all-tables –routines –triggers –master-data=2 –flush-logs > /mybackup/alldatabase.sql

解释各个选项的意义:
–all-databases 备份所有数据库
–lock-all-tables 为所有表加锁
–routines 存储过程与存储函数
–triggers 触发器
–master-data=2 以change master to的方式记录位置,但默认为被注释
–flush-logs 执行日志滚动

备份二进制日志
# cp /mybinlog/mysql-bin.000001 /mybackup/alldatabase.000001

模拟数据库意外损坏,利用完全备份实现数据库的恢复

# rm -rf /mydata/data/*
# rm -rf /mybinlog/*

 

初始化mysql并启动服务器
# cd /usr/local/mysql/
# ./scripts/mysql_install_db –user=mysql –datadir=/mydata/data

删除二进制日志,启动服务
# rm -rf /mybinlog/*
# netstat -tnlp 查看启动的mysql进程号
tcp 0 0 0.0.0.0:3306 0.0.0.0:* LISTEN 2523/mysql
# kill 2523 (注意,如果在备份之前mysql服务是开启的,重启是不成功的,需要把这个进程先kill掉)
# service mysqld restart

恢复到备份状态,导入备份的数据库文件:
# mysql < /mybackup/alldatabase.sql

模拟往students表中添加数据,添加完成后不小心将表删除了,我们要恢复到删除之前的状态,并且新加的数据还要存在

往students表中添加数据

mysql> use jiaowu;
mysql> insert into students (Name,Age,Gender) values (‘hadoop’,22,’M');

模拟一下,不小心将表删除了

mysql> drop tables students;

查看一下二进制日志文件的位置

mysql> show master status;
+——————+———-+————–+——————+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+——————+———-+————–+——————+
| mysql-bin.000002 | 520351 | | |
+——————+———-+————–+——————+
先恢复完整数据(恢复过程不要记录在日志中)

mysql> set global sql_log_bin=0;
# mysql < /mybackup/alldatabase.sql
查看删除表时的记录位置

# mysqlbinlog /mybinlog/mysql-bin.000002 内容如下:
# at 520084
#130501 16:44:08 server id 1 end_log_pos 520212 Query thread_id=2 exec_time=0 error_code=0
use jiaowu/*!*/;
SET TIMESTAMP=1367397848/*!*/;
insert into students (Name,Age,Gender) values (‘hadoop’,22,’M')
/*!*/;
# at 520212
#130501 16:44:08 server id 1 end_log_pos 520239 Xid = 308
COMMIT/*!*/;
# at 520239 删除命令在这个时刻开始执行的
#130501 16:45:37 server id 1 end_log_pos 520351 Query thread_id=2 exec_time=0 error_code=0
SET TIMESTAMP=1367397937/*!*/;
DROP TABLE `students` /* generated by server */
/*!*/;
DELIMITER ;
# End of log file
将二进制文件中完整备份到删除表之前的记录导出

# mysqlbinlog –stop-position=520239 /mybinlog/mysql-bin.000002 > /root/change.sql

解释:
–start-position 指定从哪开始导出二进制日志
–stop-position 指定到哪结束
–start-datetime 从哪个时间开始
–stop-datetime 到哪个时间结束

将改变的数据库日志导入到mysql库中

# mysql < /root/change.sql

见证奇迹的时刻数据库恢复成功,并且插入的数据也还原回来了

mysql> select Name,Age,Gender from students where Name=’hadoop’;
+——–+——+——–+
| Name | Age | Gender |
+——–+——+——–+
| hadoop | 22 | M |
+——–+——+——–+

分享到:
评论

相关推荐

    MySQL高可用架构设计最佳实践

    02MySQL二进制日志 03MySQL二进制日志格式对复制的影响 04MySQL复制工作方式 05基于日志点的复制 06基于GTID的复制 07MySQL复制拓扑 08MySQL复制性能优化 09MySQL复制常见问题处理 10高可用架构概述 11MMM...

    mysql增量备份及断点恢复脚本实例

    简介 增量备份是指在一次全备份或上一次增量备份后,以后每次的备份只需备份与前一次相比增加或者被修改的文件。这就意味着,第一次增量备份的对象是进行全备后所产生的...二进制日志在mysql启动时开始记录,且会重

    MySQL 5.1中文手冊

    8.6. mysqlbinlog:用于处理二进制日志文件的实用工具 8.7. mysqlcheck:表维护和维修程序 8.8. mysqldump:数据库备份程序 8.9. mysqlhotcopy:数据库备份程序 8.10. mysqlimport:数据导入程序 8.11. mysqlshow-...

    MySQL高可用架构设计

    02MySQL二进制日志 03MySQL二进制日志格式对复制的影响 04MySQL复制工作方式 05基于日志点的复制 06基于GTID的复制 07MySQL复制拓扑 08MySQL复制性能优化 09MySQL复制常见问题处理 10高可用架构概述 11MMM架构概述 ...

    MYSQL中文手册

    8.6. mysqlbinlog:用于处理二进制日志文件的实用工具 8.7. mysqlcheck:表维护和维修程序 8.8. mysqldump:数据库备份程序 8.9. mysqlhotcopy:数据库备份程序 8.10. mysqlimport:数据导入程序 8.11. ...

    2017最新老男孩MySQL高级专业DBA实战课程全套【清晰不加密】,看完教程月入40万没毛病

    07-MySQL服务二进制日志的3种工作模式配置方法实战 第十部-老男孩MySQL常用引擎及优缺点-应用场景-调优详解(14节) 01-MySQL服务存储引擎介绍 02-MySQL服务存储引擎体系结构 03-MySQL服务MyISAM引擎介绍及磁盘文件...

    MySql 5.1 参考手册.chm

    8.6. mysqlbinlog:用于处理二进制日志文件的实用工具 8.7. mysqlcheck:表维护和维修程序 8.8. mysqldump:数据库备份程序 8.9. mysqlhotcopy:数据库备份程序 8.10. mysqlimport:数据导入程序 8.11. mysqlshow-...

    MySQL 5.1官方简体中文参考手册

    8.6. mysqlbinlog:用于处理二进制日志文件的实用工具 8.7. mysqlcheck:表维护和维修程序 8.8. mysqldump:数据库备份程序 8.9. mysqlhotcopy:数据库备份程序 8.10. mysqlimport:数据导入程序 8.11. mysqlshow-...

    MySQL 5.1参考手册

    8.6. mysqlbinlog:用于处理二进制日志文件的实用工具 8.7. mysqlcheck:表维护和维修程序 8.8. mysqldump:数据库备份程序 8.9. mysqlhotcopy:数据库备份程序 8.10. mysqlimport:数据导入程序 8.11. mysqlshow-...

    MySQL主从复制项目实例

    MySQL主从复制是一个异步的复制过程,底层是基于MySQL数据库自带的二进制日志功能。提前准备好两台服务器,分别安装MySQL并启动服务成功。

    MySQL 5.1参考手册 (中文版)

    8.6. mysqlbinlog:用于处理二进制日志文件的实用工具 8.7. mysqlcheck:表维护和维修程序 8.8. mysqldump:数据库备份程序 8.9. mysqlhotcopy:数据库备份程序 8.10. mysqlimport:数据导入程序 8.11. mysqlshow-...

    MySQL 5.1参考手册中文版

    8.6. mysqlbinlog:用于处理二进制日志文件的实用工具 8.7. mysqlcheck:表维护和维修程序 8.8. mysqldump:数据库备份程序 8.9. mysqlhotcopy:数据库备份程序 8.10. mysqlimport:数据导入程序 8.11. ...

    PHP开发实战1200例(第1卷).(清华出版.潘凯华.刘中华).part2

    实例223 以二进制形式上传文件到数据库 285 实例224 上传文件到服务器 287 实例225 限制上传文件的大小 288 实例226 限制上传文件的类型 291 实例227 上传多个文件到服务器 292 4.2 文件下载 294 实例228 通过链接...

    MySQL 复制详解及简单实例

    MySQL 复制详解及简单实例 ... a、在主库上把数据更改记录的二进制日志(binary log)  b、从库上的I/O线程连接到主库并请求发送其二进制日志文件(主库上的binlog dump线程将二进制日志内容发送到从库)  c、从库上的I/

    mysql5.1中文手册

    mysqlbinlog:用于处理二进制日志文件的实用工具 8.7. mysqlcheck:表维护和维修程序 8.8. mysqldump:数据库备份程序 8.9. mysqlhotcopy:数据库备份程序 8.10. mysqlimport:数据导入程序 8.11. ...

    mysql官方中文参考手册

    8.6. mysqlbinlog:用于处理二进制日志文件的实用工具 8.7. mysqlcheck:表维护和维修程序 8.8. mysqldump:数据库备份程序 8.9. mysqlhotcopy:数据库备份程序 8.10. mysqlimport:数据导入程序 8.11. mysqlshow-...

    PHP开发实战1200例(第1卷).(清华出版.潘凯华.刘中华).part1

    实例223 以二进制形式上传文件到数据库 285 实例224 上传文件到服务器 287 实例225 限制上传文件的大小 288 实例226 限制上传文件的类型 291 实例227 上传多个文件到服务器 292 4.2 文件下载 294 实例228 通过链接...

Global site tag (gtag.js) - Google Analytics