隨著業(yè)務(wù)量的增長(zhǎng),數(shù)據(jù)庫(kù)也是成倍增長(zhǎng),原來(lái)一直使用的全庫(kù)備份不再適合現(xiàn)在的數(shù)據(jù)庫(kù)了,動(dòng)輒就備份10G-20G,太占用磁盤空間,所以就考慮用更簡(jiǎn)潔更快速更節(jié)省磁盤空間的備份方法,這就想到了使用binlog日志來(lái)進(jìn)行備份和恢復(fù),下面是具體實(shí)施的方法:
10年積累的成都做網(wǎng)站、成都網(wǎng)站建設(shè)、成都外貿(mào)網(wǎng)站建設(shè)經(jīng)驗(yàn),可以快速應(yīng)對(duì)客戶對(duì)網(wǎng)站的新想法和需求。提供各種問(wèn)題對(duì)應(yīng)的解決方案。讓選擇我們的客戶得到更好、更有力的網(wǎng)絡(luò)服務(wù)。我雖然不認(rèn)識(shí)你,你也不認(rèn)識(shí)我。但先做網(wǎng)站后付款的網(wǎng)站建設(shè)流程,更有和靜免費(fèi)網(wǎng)站建設(shè)讓你可以放心的選擇與我們合作。
環(huán)境介紹:
操作系統(tǒng):Centos 7.2
數(shù)據(jù)庫(kù):MySQL 5.6
一.安裝Mysql和改配置文件
安裝就不具體介紹了,網(wǎng)上教程很多,配置文件需要添加以下選項(xiàng):
vim /etc/my.cnf
log_bin = mysql-binlog #開(kāi)啟binlog日志功能,默認(rèn)在mysql的datadir目錄下面
show variables like 'log_bin'; #進(jìn)入Mysql查看binlog日志是否開(kāi)啟
二.創(chuàng)建實(shí)驗(yàn)數(shù)據(jù)
由于剛建的數(shù)據(jù)庫(kù),日志中沒(méi)有數(shù)據(jù),創(chuàng)建新的數(shù)據(jù)庫(kù)和表格來(lái)進(jìn)行實(shí)驗(yàn)
#創(chuàng)建t1庫(kù)
create database t1;
#創(chuàng)建tab1表
create table t1.tab1(id int primary key auto_increment,name varchar(20));
#插入兩條數(shù)據(jù)
insert into t1.tab1(name) values('zhangsan');
insert into t1.tab1(name) values('lisi');
三.進(jìn)行全庫(kù)備份和日志備份
#進(jìn)行全庫(kù)備份,并產(chǎn)生新日志
mysqldump -uroot -p123456 --flush-logs t1 > /opt/t1_`date +%Y%m%d`.sql
#備份日志文件,全庫(kù)備份前有幾個(gè)日志就備份幾個(gè)
cp /usr/local/mysql/binlog/mysql.bin.000001 /opt/
四.模擬刪除數(shù)據(jù)
delete from t1.tab1 where id=2;
#插入新數(shù)據(jù)
insert into t1.tab1(name) values('wangwu');
五.備份mysqldump之后的binlog日志文件
cp /usr/local/mysql/binlog/mysql.bin.000002 /opt/
六.用Mysqldump實(shí)現(xiàn)全庫(kù)備份+binlog的數(shù)據(jù)還原
mysql -uroot -p123456 tab1 < /opt/t1_20170626.sql #還原刪除前的全部數(shù)據(jù),這時(shí)候應(yīng)該有兩條數(shù)據(jù),zhangsan和lisi
mysqlbinlog -v /usr/local/mysql/binlog/mysql.bin.000002 #分析新開(kāi)啟的binlog日志文件,里面誤操作的時(shí)間的起始位置和終止位置,只要跳過(guò)這一段時(shí)間即可
從binlog恢復(fù)數(shù)據(jù)
mysqlbinlog --stop-position=120 /opt/mysql.bin.000002|mysql -uroot -p123456
mysqlbinlog --start-position=291 /opt/mysql.bin.000002|mysql -uroot -p123456
查看恢復(fù)情況
select * from t1.tab1; #此時(shí)表中有三條數(shù)數(shù)據(jù)為恢復(fù)成功
手動(dòng)備份恢復(fù)過(guò)程已經(jīng)全部完成,下次說(shuō)一說(shuō)如何腳本化這個(gè)流程