mysql 实时恢复_用日志进行mysql数据库实时恢复[阮胜昌]

使用二进制日志进行数据恢复

二进制日志记录一台服务器上所有SQL执行事务

提取二进制工具:mysqlbinlog

开启二进制日志功能:

vim my.cnf

[mysqld]

log-bin=/var/log/mysql/bing.log

将二进制日志与备份进行同步

#mysqladmin -u root -pmypwd  flush-logs

简单的数据恢复(全部恢复)

1.停止mysql服务器

用以下命令启动mysql服务器

#mysqld --socket=/tmp/mysql_restore.sock --skip-networking

重新创建一个socket文件    阻止用户通过TCP/IP,socket文件或管道来访问服务器

本服务器只能从本地进行连接

2.恢复备份好的dump文件

#mysql -u root -p mypwd --socket=/tmp/mysql_restore.sock

3.恢复数据库事务处理,使用mysqlbinlog

#mysqlbinlog /var/log/mysql/bin.123456 | mysql -u root -pmypwd  --socket=/tmp/mysql_restore.sock

手动恢复数据(部分恢复)

1.将二进制日志文件导出一个文本文件中

#mysqlbinlog /var/log/mysql/bin.123456  >/tmp/mysql_restore.sql

2.删除一些不要的SQL语句并保存

vim mysql_restore.sql

...

3.用修改后的mysql_restore.sql恢复文件

#mysql -u root -pmypwd --socket=/tmp/mysql_restore.sock

针对一个时间点恢复数据

mysql 5.1以上版本

在2010.1.20上午10点执行SQL删除了一个表,现在要恢复

#mysqlbinlog --stop-date="2012-01-20 9:59:59" /var/log/mysql/bin.123456 | mysql -u root -pmypwd --socket=/tmp/mysql_restore.sock

以上将恢复--stop-date日期之前的数据

如果在执行SQL语句数小时之后才发现执行了错误操作

#mysqlbinlog --start-date="2012-01-20 10:01:00" /var/log/mysql/bin.123456 | mysql -u root -pmypwd --socket=/tmp/mysql_restore.sock

SQL语句记录的10:01:00以后的内容将被恢复

使用position参数恢复

通过日志文件中的数据来标识恢复的开始位置和结束位置

1.获取一个时间段里执行的SQL语句

#mysqlbinlog --start-date="2010-01-20 9:55:00" --stop-date="2010-01-22 10:04:00" /var/log/mysql/bin.123456 >/tmp/mysql_restore.sql

2.删除这个时间段内不想执行的SQL语句,记下位置数据,位置标识是log_pos后面跟随一个数字eg:log_pos123456

#mysqlbinlog --stop-postion="1314314" /var/log/mysql/bin.123456 | mysql -u root -pmypwd --socket=/tmp/mysql_restore.sock

恢复停止位置前的所有事务

#mysqlbinlog --start-postion="345245" /var/log/mysql/bin.123456 | mysql -u root -pmypwd --socket=/tmp/mysql_restore.sock

恢复从开始位置到二进制日志结束的所有内容

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值