Windows環(huán)境MySQL全量備份+增量備份的實(shí)現(xiàn)
一、環(huán)境準(zhǔn)備
1.1.安裝MySQL
在進(jìn)行MySQL數(shù)據(jù)庫備份和還原操作時(shí),必須先提前安裝好MySQL環(huán)境,且MySQL服務(wù)已成功開啟
如果沒有安裝MySQL環(huán)境,可以參考博客:http://www.dbjr.com.cn/database/3069340t1.htm
如果已成功安裝MySQL環(huán)境,打開運(yùn)行窗口,輸入:services.msc打開Windows服務(wù)窗口,查看MySQL是否處于開啟狀態(tài)
如果服務(wù)開啟失敗可以將MySQL安裝目錄下的data目錄刪除,然后進(jìn)行重新安裝,安裝步驟可以參考上面的博客
1.2.添加log-bin日志配置
找到自己MySQL安裝目錄下的my.ini配置文件
打開my.ini配置文件,并在my.ini文件中的[mysqld]下面添加一行
log-bin=mysql-bin server-id=1 binlog_format=MIXED
添加完成之后重啟MySQL服務(wù),會(huì)在MySQL安裝目錄的data目錄下生成一個(gè)mysql-bin.000001日志文件
【注】
mysql-bin.00000X日志文件用于后面進(jìn)行數(shù)據(jù)庫增量還原操作
1.3.查看是否已經(jīng)開啟二進(jìn)制日志,執(zhí)行如下命令查看log-bin是否開啟,若狀態(tài)為ON,則表示已正常開啟
show variables like 'log_bin';
二、創(chuàng)建測試數(shù)據(jù)庫和表
2.1.創(chuàng)建測試數(shù)據(jù)庫
使用Navicat或者其他數(shù)據(jù)庫管理工具登錄MySQL
-- 創(chuàng)建數(shù)據(jù)庫如果不存在db_blbl,默認(rèn)字符集為utf8,校對(duì)規(guī)則為utf8_general_ci create database if not exists db_blbl default charset utf8 collate utf8_general_ci;
可以在Navicat的左分區(qū)查看創(chuàng)建好的數(shù)據(jù)庫也可以在MySQL安裝目錄下的data里面查看
創(chuàng)建好db_blbl數(shù)據(jù)庫后,要使用這個(gè)數(shù)據(jù)庫,則執(zhí)行命令
-- 切換數(shù)據(jù)庫 use db_blbl
或者在Navicat中的查詢窗口運(yùn)行旁邊有一個(gè)下拉框也可以手動(dòng)選擇切換數(shù)據(jù)庫
2.2.創(chuàng)建測試數(shù)據(jù)表
輸入如下命令,創(chuàng)建一個(gè)t_student學(xué)生表
create table t_student ( sid int not null comment '學(xué)號(hào)', sname varchar(60) not null comment '姓名', sex tinyint not null default 1 comment '性別:1男, 2女', age tinyint not null comment ' 年齡', icard varchar(18) not null comment '身份證,唯一約束', primary key (sid), unique key AK_Key_2 (icard) ) comment '學(xué)生信息表';
執(zhí)行以下代碼命令,往t_student學(xué)生表中插入數(shù)據(jù)
insert into t_student values(1,'張學(xué)友',1,36,'1234567891011'); insert into t_student values(2,'劉德華',1,39,'1234567891011');
執(zhí)行完成后可以執(zhí)行查詢語句查看此時(shí)表中有兩條數(shù)據(jù)
-- 查詢t_student select * from t_student
三、全量備份恢復(fù)數(shù)據(jù)庫
3.1.全量備份數(shù)據(jù)庫
打開cmd窗口,cd進(jìn)入到MySQL安裝目錄的bin目錄下
在bin目錄下執(zhí)行如下命令,將剛才創(chuàng)建的db_blbl數(shù)據(jù)庫進(jìn)行全量備份操作
mysqldump --opt --host=127.0.0.1 --protocol=tcp --port=3306 --default-character-set=utf8 --single-transaction=TRUE -u root --password=mysql.com db_blbl t_student > "C:\beifen.sql"
說明:
- host=127.0.0.1就是你要備份的數(shù)據(jù)庫IP地址
- port=3306數(shù)據(jù)庫端口號(hào)
- "C:\beifen.sql"將db_blbl數(shù)據(jù)庫全量備份到C盤根目錄下,取名叫beifen.sql
- db_blbl t_student 就是你要備份的數(shù)據(jù)庫名和表名,可以對(duì)db_blbl進(jìn)行全庫備份,也可以單獨(dú)對(duì)t_student表進(jìn)行全量備份
注意:
備份的盤符一定要和MySQL安裝目錄在同一個(gè)盤符中,要不然會(huì)提示:拒絕訪問
備份不需要的表操作
可以在上面代碼表的位置加上--ignore-table=數(shù)據(jù)庫名.表名
-- 實(shí)例 mysqldump --opt --host=127.0.0.1 --protocol=tcp --port=3306 --default-character-set=utf8 --single-transaction=TRUE -u root --password=mysql.com db_blbl --ignore-table=db_blbl._t_student> "C:\beifen.sql"
備份完成后,會(huì)自動(dòng)在對(duì)應(yīng)目錄下生成一個(gè)sql文件,可以前往對(duì)應(yīng)目錄查看全量備份的數(shù)據(jù)庫
我們可以將上述步驟封裝到一個(gè).bat批處理腳本文件中,然后雙擊運(yùn)行該批處理文件即可執(zhí)行全量備份數(shù)據(jù)庫
全量備份數(shù)據(jù)庫腳本如下
rem Auther By Anker rem date:202435 rem ******Backup MySQL Start****** @echo off ::設(shè)置時(shí)間變量 set "Ymd=%date:~0,4%%date:~5,2%%date:~8,2%" ::創(chuàng)建存儲(chǔ)的文件夾 if not exist "C:\mysql_backup" md "C:\mysql_backup" ::執(zhí)行備份操作 "C:\Program Files\mysql-5.7.23-winx64\mysql-5.7.23-winx64\bin\mysqldump" --opt --user=root --password=mysql.com --host=127.0.0.1 --protocol=tcp --port=3306 --default-character-set=utf8 --single-transaction=TRUE --routines --events "db_blbl" >C:\beifen_%Ymd%.sql ::刪除90天前的備份數(shù)據(jù) forfiles /p "C:\mysql_backup" /m backup_*.sql -d -90 /c "cmd /c del /f @path" @echo on rem ******Backup MySQL End******
3.2全量恢復(fù)數(shù)據(jù)庫
先將事先創(chuàng)建好的db_blbl數(shù)據(jù)庫刪除
-- 刪除數(shù)據(jù)庫db_blbl drop database db_blbl;
我執(zhí)行的是drop命令,相當(dāng)于將數(shù)據(jù)庫數(shù)據(jù)和結(jié)構(gòu)全部刪除了,此時(shí)需要重新將數(shù)據(jù)庫結(jié)構(gòu)給創(chuàng)建出來,才能執(zhí)行還原恢復(fù)操作。所以,再次執(zhí)行創(chuàng)建數(shù)據(jù)庫命令
-- 創(chuàng)建數(shù)據(jù)庫如果不存在db_blbl,默認(rèn)字符集為utf8,校對(duì)規(guī)則為utf8_general_ci create database if not exists db_blbl default charset utf8 collate utf8_general_ci;
然后再使用管理員方式打開命令行切換到這個(gè)db_blbl數(shù)據(jù)庫,即use db_blbl
-- 切換數(shù)據(jù)庫 use db_blbl
執(zhí)行以下命令恢復(fù)被刪除的db_blbl數(shù)據(jù)庫
source C:\beifen.sql
查詢t_student表,會(huì)發(fā)現(xiàn)之前的t_student表數(shù)據(jù)又回來了
-- 查詢t_student select * from t_student
四、增量備份恢復(fù)數(shù)據(jù)庫
4.1.增量備份數(shù)據(jù)庫
往t_student學(xué)生表中再插入2條數(shù)據(jù)
查詢命令查詢t_student表,此時(shí)會(huì)發(fā)現(xiàn)又多了2條數(shù)據(jù)
-- 查詢t_student select * from t_student
執(zhí)行truncate t_student;命令,刪除t_student學(xué)生表里面的數(shù)據(jù)
【注意】
如果執(zhí)行drop t_student;命令的話,則整個(gè)t_student表結(jié)構(gòu)和數(shù)據(jù)都被刪除了,此時(shí)只有通過全量進(jìn)行恢復(fù)了
truncate t_student;
再次執(zhí)行查詢命令查詢t_student表,會(huì)發(fā)現(xiàn)t_student表中已經(jīng)無數(shù)據(jù)了
-- 查詢t_student select * from t_student
我們可以將備份操作封裝到一個(gè).bat批處理腳本文件中,然后雙擊運(yùn)行該批處理文件即可執(zhí)行增量備份數(shù)據(jù)庫,
增量備份數(shù)據(jù)庫腳本如下
rem Auther By Anker rem date:202435 rem ******Backup MySQL Start****** @echo off ::設(shè)置時(shí)間變量 set "Ymd=%date:~0,4%%date:~5,2%%date:~8,2%" ::執(zhí)行增量備份操作 mysqladmin -u root -p mysql.com flush-logs @echo on rem ******Backup MySQL End******
【注意】
要根據(jù)自己的實(shí)際設(shè)置來配置這個(gè)腳本文件
4.2.增量恢復(fù)數(shù)據(jù)庫
執(zhí)行增量恢復(fù)之前,需要先執(zhí)行一次全量恢復(fù),將數(shù)據(jù)庫數(shù)據(jù)還原到之前最新的某個(gè)時(shí)間段的數(shù)據(jù),即執(zhí)行命令:source C:\beifen.sql
再次執(zhí)行查詢命令查詢t_student表,會(huì)發(fā)現(xiàn)之前的t_student表數(shù)據(jù)又回來了,但是表中的數(shù)據(jù)只有張學(xué)友、劉德華,并沒有后來新增的郭富城、王八
-- 查詢t_student select * from t_student
要想把后來新增的郭富城、王八數(shù)據(jù)還原回來,則需要用到bin-log文件了。即在mysql環(huán)境下運(yùn)行如下命令
show binlog events in 'mysql-bin.000001';
查看binlog內(nèi)容記錄下的郭富城這條數(shù)據(jù)的開始位置和結(jié)束位置
在MySQL安裝目錄的data目錄下執(zhí)行如下命令,即可將data目錄下需要備份的bin-log文件轉(zhuǎn)換成sql文件
mysqlbinlog --no-defaults mysql-bin.000001 --start-position=4157--stop-position=4034> C:\zengliang.sql
此時(shí)會(huì)發(fā)現(xiàn)C盤自動(dòng)生成一個(gè)zengliang.sql文件
執(zhí)行如下命令,還原被刪除的郭富城
source C://zengliang.sql;
再次執(zhí)行查詢命令查詢t_student表,會(huì)發(fā)現(xiàn)之前的t_student表數(shù)據(jù)郭富城這條數(shù)據(jù)又回來了
-- 查詢t_student select * from t_student
五、定時(shí)執(zhí)行備份任務(wù)
5.1.任務(wù)計(jì)劃程序
在控制面板程序搜索列表中搜索“計(jì)劃任務(wù)”,并打開
打開任務(wù)計(jì)劃程序后,點(diǎn)擊右側(cè)的“創(chuàng)建基本任務(wù)”,并對(duì)計(jì)劃任務(wù)的名稱和描述進(jìn)行編寫
任意取一個(gè)名稱,點(diǎn)擊下一步
根據(jù)自己需要,點(diǎn)擊選擇定時(shí)執(zhí)行的周期,點(diǎn)擊下一步
設(shè)置所需要執(zhí)行的時(shí)間,點(diǎn)擊下一步
選擇啟動(dòng)程序,并點(diǎn)擊下一步
瀏覽選擇編寫完成的備份腳本文件,點(diǎn)擊下一步
確認(rèn)信息無誤后點(diǎn)擊完成
定時(shí)任務(wù)創(chuàng)建好后,可在任務(wù)列表中看到我們所創(chuàng)建的任務(wù),可以通過右鍵該條任務(wù)進(jìn)行刪除等處理
【最后】
增量備份二進(jìn)制日志建議每天刷新一次。這確保了數(shù)據(jù)庫備份的頻率足夠高,以最小化數(shù)據(jù)丟失的風(fēng)險(xiǎn)。通過每天刷新增量備份,可以更有效地管理數(shù)據(jù)庫的變化,并在需要時(shí)還原到最新的狀態(tài)。
到此這篇關(guān)于Windows環(huán)境MySQL全量備份+增量備份的實(shí)現(xiàn)的文章就介紹到這了,更多相關(guān)MySQL全量備份+增量備份內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
用MyEclipse配置DataBase Explorer(圖示)
本文介紹了,用MyEclipse配置DataBase Explorer的圖片示例。需要的朋友參考下2013-04-04MySQL千萬數(shù)據(jù)量深分頁優(yōu)化流程(拒絕線上故障)
這篇文章主要為大家介紹了MySQL千萬數(shù)據(jù)量深分頁優(yōu)化拒絕線上故障,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-05-05mysql unix準(zhǔn)換時(shí)間格式查找指定日期數(shù)據(jù)代碼
這篇文章主要介紹了mysql unix準(zhǔn)換時(shí)間格式查找指定日期數(shù)據(jù),需要的朋友可以參考下2014-03-03MySQL 編碼utf8 與 utf8mb4 utf8mb4_unicode_ci 與 utf8mb4_general_
這篇文章主要介紹了MySQL 編碼utf8 與 utf8mb4 utf8mb4_unicode_ci 與 utf8mb4_general_ci的相關(guān)知識(shí),本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-05-05