1. 程式人生 > >MySQL的增量備份與恢復

MySQL的增量備份與恢復

mar int 增量 usr tar zha 全備 default 內容

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的增量備份與恢復