MySQL的增量备份与恢复

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MySQL的增量备份与恢复相关的知识,希望对你有一定的参考价值。

mysql增量备份与恢复

  • 增量备份:只备份那些在上次完全备份或者增量备份后被修改的文件才会被备份。

  • 优点:没有重复数据,备份量不大,时间短。

  • 缺点:需要上一次完全备份及完全备份之后所有的增量备份才能恢复,而且对所有增量备份进行逐个反推恢复,操作较为繁琐。

一、增量备份

1、编辑MySQL配置文件,开启二进制功能

vim /etc/my.cnf

 log-bin=mysql-bing        #添加二进制日志文件

systemctl restart mysql.service

  • 服务重启之后会在/use/local/mysql/data目录下生成一个空的二进制日志文件;

技术分享图片

2、创建以基本数据库

mysql -u root -p #进入MySQL

create database client; #创建一个名为client的库

use client; #使用数据库

create table info (name varchar(10),score decimal(5.2)); #创建表

insert into info (name,score) values (‘zhangsan‘,88); #插入内容

insert into info (name,score) values (‘lisi‘,88);

quit #退出MySQL

3、备份数据库,并生成新的二进制日志文件;

mysqldump -u root -p client test > /opt/client.sql

mysqladmin -u root -p flush-logs

  • 数据库中的内容会生成到第一个二进制日志文件中,除此之外还会生成一个空的二进制日志文件;

技术分享图片

4、在数据库中添加新的内容,并生成新的二进制日志文件;

mysql -u root -p

use client

insert into info (name,score) values (‘test01‘,88);

quit #退出MySQL

mysqladmin -u root -p flush-logs

  • 数据库中新添加的内容会生成到第二个二进制日志文件,同时生成一个空的二进制日志文件;

技术分享图片

二、恢复

1、删除表,并进行完全备份恢复操作;

mysql -u root -p ;

use client;

drop tables test;

quit;

mysql -u root -p client < /opt/client.sql

2、使用二进制日志文件进行恢复操作;

mysqlbinlog --no-defaults /usr/local/mysql/data/mysql-bin.000002 | mysql -u root -p

技术分享图片

三、基于时间点与位置的恢复

1、插入两条数据内容,并删除一条数据,模拟操作失误;

mysql -u root -p

use client

insert into info (name,score) values (‘test01‘,88);

delete from test where name=‘lisi‘;

insert into info (name,score) values (‘test02‘,88);

quit

2、生成二进制日志文件,删除表,并进行完全备份恢复操作;

mysqladmin -u root -p flush-logs

mysql -u root -p ;

use client;

drop tables test;

quit

mysql -u root -p client < /opt/client.sql

技术分享图片

3、按时间点进行恢复(跳过误操作时间);

mysqlbinlog --no-defaults --stop-datetime=‘18-07-06 10:39:23‘ /usr/local/mysql/data/mysql-bin.000003 | mysql -u root -p

mysqlbinlog --no-defaults--start-datetime=‘18-07-06 10:39:33‘ /usr/local/mysql/data/mysql-bin.000003 | mysql -u root -p

技术分享图片

4、按位置进行恢复(跳过错误的位置);

mysqlbinlog --no-defaults --stop-position=‘1151‘ /usr/local/mysql/data/mysql-bin.000003 | mysql -u root -p

mysqlbinlog --no-defaults--start-position=‘1226‘ /usr/local/mysql/data/mysql-bin.000003 | mysql -u root -p

技术分享图片

以上是关于MySQL的增量备份与恢复的主要内容,如果未能解决你的问题,请参考以下文章

MySQL的增量备份与恢复

MySQL增量备份与恢复

# MySQL增量备份与恢复

MySQL 数据库备份(增量备份与恢复)

MySQL 完全备份 + 增量备份+完全恢复

Mysql增量备份与恢复