面对公司逐渐引入了MySQL运维项目,不得不研究一些关于MySQL 方面的东西 ,以前只是做SQLDBA,并非接触过Linux,学习MySQL数据库首先得难关就是Linux日常操作,为了熟练掌握MySQL数据库的一些知识,以下做了MySQL binlog基于时间点的恢复测试,具体操作步骤如下:
第一步: 首先检查数据库是否开启了二进制日志
show variables like '%log_bin%';
+---------------------------------+-------+
| Variable_name | Value |
+---------------------------------+-------+
| log_bin | OFF |
| log_bin_trust_function_creators | OFF |
| sql_log_bin | ON |
+---------------------------------+-------+
3 rows in set (0.00 sec)
进入my.cnf,添加如下:
【mysqld】
log-bin=mysql-bin
重启数据库服务即可
第二步:进入数据库创建测试:
1,创建数据库以及表
create database mysqltest
use mysqltest
go
create table t2(
id int auto_increment primary key,
name nvarchar(20) default 'XXX',
udate timestamp NULL default CURRENT_TIMESTAMP )
2,插入数据
insert into t2 (name) values ('yangbaobao');
insert into t2 (name)select name from t2;
3,备份现有的数据库
mysqldump -uroot -p --databases mysqltest >mysqltest.sql
4,再次登入数据库
use mysqltest
create table t3
(id int auto_increment primary key,
name nvarchar(20) default 'XXX',
udate timestamp NULL default CURRENT_TIMESTAMP
);
insert into t3 (name) values ('yangbaobao');
5,删除以上两张表
drop table t2
drop table t3
show binary logs;
show binlog events in 'mysql-bin-00000XX'
7,恢复mysqltest数据库备份,挖掘log-bin日志并进行恢复
恢复全备: source mysqltest
恢复日志 : mysqlbinlog mysql-bin.000018 --start-position=2916 --stop-position=4469 | mysql -uroot -p
8,登入数据库确认数据库时间点恢复情况
最后,希望大神们多多指点不足之处~~~~