为了模拟mysql数据库的备份与恢复,本文档将介绍数据库的创建、表创建、数据插入、数据库全备份、日志分割、数据恢复等内容
1、数据库创建
登录数据库:
[root@zeshintax02 ~]# mysql -uroot –p
创建数据库tb1,表ttab01:
mysql> create database tb1 default charset utf8mb4;
Query OK, 1 row affected (0.01 sec)
mysql> use tb1
Database changed
mysql> create table ttable01(
-> id int auto_increment primary key,
-> name varchar(15)
-> )engine = InnoDB;
Query OK, 0 rows affected (0.02 sec)
2、插入数据:
3、使用mysqldump全量备份数据:
【注】: 通常使用全备份命令时需要加入参数:
Mysqldump -uroot -p --single-transaction --master-data=2 --routines --flush-logs -B --all-databases > fullbackupfile.sql
参数--single-transaction、 --master-data=2表示一致性备份,一般一起使用,不单用。--routines备份函数触发器、--flush-logs备份前刷新日志(保证数据完全备份,若数据库开了二进制日志,则不需要使用该参数和一致性参数--single-transaction、 --master-data=2)参数-B:最大的特点就是加入了库,数据恢复时不需要再创建库。
4、继续插入数据:
5、使用mysqlbinlog查看日志
mysqlbinlog可以查看数据库二进制日志文件的内容,里面保存了插入数据的语句。查看日志文件:
6、mysqladmin分割日志
为了查看数据库的变化,使用mysqladmin命令中选项flush-logs将数据库新生成的二进制文件进行分割,这样在写入新的数据后,新的二进制文件对应的就是数据库的变化的内容。
查看二进制日志文件是否增加:
插入一条新数据;
使用mysqlbinlog命令可以查看mysql-bin.000003数据库二进制日志文件的内容,里面保存了新插入数据的语句:
再使用mysqladmin中的选项flush-logs将数据库二进制日志文件进行分割:
由于数据库未增删改新的数据,故分割后的二进制日志文件没有相关内容。
此时插入一条数据:
再查看二进制日志文件:
新的二进制日志文件保存了新插入的内容,如上。
二、恢复数据
1、全备份后的部分数据恢复
(1)模拟数据丢失:使用delete删除插入的两条数据
可以查看表中数据少了两条。
(2)利用之前产生的二进制日志文件恢复数据,(需要注意恢复顺序,最早的数据需要先恢复对应的二进制文件):
可以查看到已经恢复成功一条数据,继续恢复另一条:
如此完成两条数据的恢复。
2、全备份后的所以数据恢复
(1)、查看数据数据:
进行日志分割后,二进制文件列表如下:
插入一条数据:
进行日志分割,并查看产生新的二进制文件:
再次插入一条数据:
查看对应的二进制文件,发现写入的数据已经记录:
删除表,之后使用全备+增量备份来恢复数据:
现在进行数据恢复:
A、先全量数据恢复:
可以发现表恢复回来了,查看表数据:
表中保存了全备时的数据,接着恢复增量日志。
B、增量数据恢复,一直到最后一个文件:
【注】:在恢复增量日志时,遇到报错一定要解决才能进行下一个文件恢复,否则可能数据不完整。