Mysqldump备份数据库:
一般来说,防止数据丢失最好的方法就是备份一个数据库,我们在mysql数据库中可以用mysqldump工具进行备份
首先我们用create database test;创建一个数据库叫做test的数据库
然后我们use这个数据库use test;
使用
create table Student(Sno int not null auto_increment primary key,Sname varchar(10) not null,Sex char(1) not null, Sage tinyint(100) not null, Sdept char(4) not null)comment = '学生表;
创建一个名为Student的表
并show tables;看看是否创建成功
然后我们开始使用mysqldump备份test数据库成/root目录下的1.sql文件,使用mysqldump test > /root/1.sql备份
我们cd到root用ls可以看到生成了一个1.sql
开始恢复数据库:
我们create回一个名为test的数据库
用use进入到test数据库
使用source命令导入备份的数据库文件1.sql source 1.sql;
show tables; 看到恢复成功
使用mysqlbinlog恢复数据库:
虽然备份可以很快速的恢复数据库,但是我们不可能无时无刻的都在备份,一些没有备份到的文件就可以用mysqlbinlog,通过二进制日志文件恢复。
打开二进制日志记录,通过在/etc/mysql下的my.cnf文件下的[mysqld]字段加入log-bin=mysql-bin就可以开启(没有[mysqld]可以自己添加)
然后在mysql使用show binary logs;可以看到生成了二进制日志文件
再多生成一个表t1 create table t1 (id serial);
show tables
再次drop datebase test
开始恢复:
create datebase test; 创建回一个库
然后use test数据库后source /root/1.sql恢复备份的文件
Show tables;可以看到只有我们前一次备份的内容Student
打开一个终端,进入到/etc/lib/mysql下,使用mysqlbinlog mysql-bin.000001 > cat.sql创建一个明文的日志文件cat.sql,通过cat可以看到日志
可以看到515处使用了drop,但实际上drop是从473开始的,所以我们要去除473以后的操作,使用
mysqlbinlog --stop-position=473 mysql-bin.000001 > fallback.sql
生成一个用于恢复数据的sql文件
在mysql中使用source /etc/lib/mysql/fallback.sql恢复数据,然后show tables;可以看到表t1恢复了