电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

您的位置:首頁(yè)技術(shù)文章
文章詳情頁(yè)

MySQL使用binlog日志做數(shù)據(jù)恢復(fù)的實(shí)現(xiàn)

瀏覽:6日期:2023-10-04 17:16:04

MySQL的binlog日志是MySQL日志中非常重要的一種日志,記錄了數(shù)據(jù)庫(kù)所有的DML操作。通過binlog日志我們可以進(jìn)行數(shù)據(jù)庫(kù)的讀寫分離、數(shù)據(jù)增量備份以及服務(wù)器宕機(jī)時(shí)的數(shù)據(jù)恢復(fù)。

定期備份固然可以在服務(wù)器發(fā)生宕機(jī)的時(shí)候快速的恢復(fù)數(shù)據(jù),但傳統(tǒng)的全量備份不可能做到實(shí)時(shí),所以在發(fā)生宕機(jī)的時(shí)候,也會(huì)損傷一部分?jǐn)?shù)據(jù),如果這個(gè)時(shí)候開啟了binlog日志,那么可以通過binlog來對(duì)沒有做備份的這一階段損失的數(shù)據(jù)進(jìn)行恢復(fù)。如果了解Redis的朋友,可能想到了,Redis有兩種持久化方式,分別是AOF和RDB。RDB就類似于MySQL的全量復(fù)制,AOF就類似于MySQL的binlog。

關(guān)于數(shù)據(jù)的恢復(fù)這里在說一點(diǎn),既然binlog這么好,是不是開啟了binlog就不需要定期做備份了呢,不要這樣做。為什么呢,因?yàn)閎inlog的數(shù)據(jù)量非常大,另外就是使用binlog做數(shù)據(jù)的恢復(fù)性能會(huì)非常低。因?yàn)閎inlog是對(duì)操作的記錄,比如某一時(shí)刻,我先插入了一條數(shù)據(jù),然后將這條數(shù)據(jù)刪除了,本身數(shù)據(jù)是沒了,但有兩條操作。如果是全量備份,肯定沒有這條數(shù)據(jù),如果使用binlog需要執(zhí)行一條插入和一條刪除操作,因此性能和文件大小都是比較大的。

??鋁艘歡眩?旅嫠倒賾謔?莼指吹奈侍猓?/p>

在正式開始之前,先來說一說mysql完整備份數(shù)據(jù)庫(kù),以及恢復(fù)數(shù)據(jù)庫(kù)的方法

備份數(shù)據(jù)庫(kù):

首先我們來創(chuàng)建一個(gè)數(shù)據(jù)庫(kù),mytest

create database mytest;

接著我們來創(chuàng)建一張表

use mytest;create table t1(id int ,name varchar(20));

然后我們插入兩條數(shù)據(jù)

insert into t1 values (1,’xiaoming’);insert into t1 values (2,’xiaohong’);

下面我們對(duì)mytest數(shù)據(jù)庫(kù)進(jìn)行備份,備份到/root/bakup/

mysqldump -uroot -p -B -F -R -x --master-data=2 mytest | gzip > /root/backup/bak_$(date +%F).sql.gz

MySQL使用binlog日志做數(shù)據(jù)恢復(fù)的實(shí)現(xiàn)

參數(shù)說明:

-B:指定數(shù)據(jù)庫(kù)

-F:刷新日志

-R:備份存儲(chǔ)過程等

-x:鎖表

--master-data:在備份語句里添加CHANGE MASTER語句以及binlog文件及位置點(diǎn)信息

查看備份文件

MySQL使用binlog日志做數(shù)據(jù)恢復(fù)的實(shí)現(xiàn)

這樣呢,我們就把數(shù)據(jù)做了一個(gè)完整的備份。下面來刪除數(shù)據(jù)庫(kù),然后通過備份數(shù)據(jù)進(jìn)行恢復(fù)數(shù)據(jù)庫(kù)。

gzip -d bakup_xxx.gzmysql -uroot -p < bakup_xxx.sql

這樣我們就把數(shù)據(jù)導(dǎo)入到庫(kù)里了。

繼續(xù)上面的操做,我們新增xiaoli和xiaozhao這兩條數(shù)據(jù),并把xiaozhao這條記錄刪除掉。

在刪除之前,我們先來刷新binlog日志,生成一個(gè)新的日志,那么我們之后所要操做的內(nèi)容都會(huì)被記錄到新的日志文件中。(通過前面binlog日志的詳細(xì)說明我們知道,每次刷新和服務(wù)重啟的時(shí)候,都會(huì)生成一個(gè)binlog日志文件。)

flush logs;show master status;

MySQL使用binlog日志做數(shù)據(jù)恢復(fù)的實(shí)現(xiàn)

我們注意,binlog的文件是0009,位置是在154,這兩個(gè)信息很重要

下面我們來做插入和刪除操作

MySQL使用binlog日志做數(shù)據(jù)恢復(fù)的實(shí)現(xiàn)

這個(gè)時(shí)候我們應(yīng)該是來查看一下binlog日志的狀態(tài),以便與我們一會(huì)來進(jìn)行恢復(fù)到此狀態(tài),但是,真正的環(huán)境中我們并不知道這個(gè)狀態(tài),因此這里也就不去查看這個(gè)狀態(tài)了,這個(gè)狀態(tài)的值可以通過后面查看binlog日志文件來進(jìn)行分析。下面我們開始誤操作:

我們來把xiaozhao刪除掉

MySQL使用binlog日志做數(shù)據(jù)恢復(fù)的實(shí)現(xiàn)

這樣數(shù)據(jù)就刪除掉了,下面我們?cè)賮聿榭碽inlog的狀態(tài)

show master status;

MySQL使用binlog日志做數(shù)據(jù)恢復(fù)的實(shí)現(xiàn)

這個(gè)時(shí)候我們發(fā)現(xiàn)我刪除操作是個(gè)錯(cuò)誤的操作,要進(jìn)行恢復(fù),那么該如何恢復(fù)呢?這個(gè)時(shí)候我們就可以通過binlog的position來進(jìn)行恢復(fù)。在進(jìn)行其他的處理之前,我們建議,馬上再執(zhí)行一次flush logs,也就是讓出錯(cuò)的部分就集中在這么一個(gè)binlog日志文件中。

我們來查看0009的binlog日志。

MySQL使用binlog日志做數(shù)據(jù)恢復(fù)的實(shí)現(xiàn)

我們看到delete_rows 結(jié)束點(diǎn)是928這個(gè)點(diǎn),起始點(diǎn)是在755這個(gè)點(diǎn),我們可以把操作的這些數(shù)據(jù)刪除到我們上次備份的內(nèi)容,然后通過執(zhí)行binlog來進(jìn)行恢復(fù),當(dāng)然恢復(fù)到755這個(gè)點(diǎn)之前。比如我上次備份的是整個(gè)數(shù)據(jù)庫(kù),我就可以把整個(gè)數(shù)據(jù)庫(kù)刪除,然后通過備份文件恢復(fù),然后再通過binlog做增量恢復(fù)。這樣數(shù)據(jù)就回來了。這里就不再進(jìn)行刪庫(kù)了,我們直接演示使用binlog日志恢復(fù)數(shù)據(jù)的方法

語法如下

mysqlbinlog mysql-bin.0000xx | mysql -u用戶名 -p密碼 數(shù)據(jù)庫(kù)名

比如我們要把所有的操作都恢復(fù)(不包括我們的刪除,我們知道刪除是在755點(diǎn)上):

mysqlbinlog mysql-bin.000009 --start-position 154 --stop-position 755 | mysql -uroot -p mytest

MySQL使用binlog日志做數(shù)據(jù)恢復(fù)的實(shí)現(xiàn)

再來查看表

MySQL使用binlog日志做數(shù)據(jù)恢復(fù)的實(shí)現(xiàn)

我們發(fā)現(xiàn)xiaozhao又回來了,當(dāng)然了,這里多了一個(gè)xiali,是因?yàn)槲抑安]有刪除備份前的數(shù)據(jù)。當(dāng)然了,我們?cè)诨謴?fù)的過程中可以選擇只恢復(fù)xiaozhao這么一塊內(nèi)容

下面是binlog日志恢復(fù)中一些常用的參數(shù)

--start-datetime:從二進(jìn)制日志中讀取指定等于時(shí)間戳或者晚于本地計(jì)算機(jī)的時(shí)間

--stop-datetime:從二進(jìn)制日志中讀取指定小于時(shí)間戳或者等于本地計(jì)算機(jī)的時(shí)間 取值和上述一樣

--start-position:從二進(jìn)制日志中讀取指定position 事件位置作為開始。

--stop-position:從二進(jìn)制日志中讀取指定position 事件位置作為事件截至

到此這篇關(guān)于MySQL使用binlog日志做數(shù)據(jù)恢復(fù)的實(shí)現(xiàn)的文章就介紹到這了,更多相關(guān)MySQL binlog數(shù)據(jù)恢復(fù)內(nèi)容請(qǐng)搜索好吧啦網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持好吧啦網(wǎng)!

標(biāo)簽: MySQL 數(shù)據(jù)庫(kù)
相關(guān)文章:
主站蜘蛛池模板: 自清洗过滤器_全自动过滤器_全自动反冲洗过滤器_量子过滤器-滑漮滴 | 贵州科比特-防雷公司厂家提供贵州防雷工程,防雷检测,防雷接地,防雷设备价格,防雷产品报价服务-贵州防雷检测公司 | 国际线缆连接网 - 连接器_线缆线束加工行业门户网站 | 抖音短视频运营_企业网站建设_网络推广_全网自媒体营销-东莞市凌天信息科技有限公司 | 紫外荧光硫分析仪-硫含量分析仪-红外光度测定仪-泰州美旭仪器 | 中视电广_短视频拍摄_短视频推广_短视频代运营_宣传片拍摄_影视广告制作_中视电广 | 纯化水设备-纯水设备-超纯水设备-[大鹏水处理]纯水设备一站式服务商-东莞市大鹏水处理科技有限公司 | 江西自考网| 游动电流仪-流通式浊度分析仪-杰普仪器(上海)有限公司 | 科普仪器菏泽市教育教学仪器总厂 | 一级建造师培训_一建培训机构_中建云筑建造师培训网校 | 广东西屋电气有限公司-广东西屋电气有限公司 | 高压油管,液压接头,液压附件-烟台市正诚液压附件 | 铝箔袋,铝箔袋厂家,东莞铝箔袋,防静电铝箔袋,防静电屏蔽袋,防静电真空袋,真空袋-东莞铭晋让您的产品与众不同 | 匀胶机旋涂仪-声扫显微镜-工业水浸超声-安赛斯(北京)科技有限公司 | 塑料瓶罐_食品塑料瓶_保健品塑料瓶_调味品塑料瓶–东莞市富慷塑料制品有限公司 | 澳门精准正版免费大全,2025新澳门全年免费,新澳天天开奖免费资料大全最新,新澳2025今晚开奖资料,新澳马今天最快最新图库 | 磁棒电感生产厂家-电感器厂家-电感定制-贴片功率电感供应商-棒形电感生产厂家-苏州谷景电子有限公司 | 武汉刮刮奖_刮刮卡印刷厂_为企业提供门票印刷_武汉合格证印刷_现金劵代金券印刷制作 - 武汉泽雅印刷有限公司 | 江西自考网| 定制/定做衬衫厂家/公司-衬衫订做/订制价格/费用-北京圣达信 | 安全光栅|射频导纳物位开关|音叉料位计|雷达液位计|两级跑偏开关|双向拉绳开关-山东卓信机械有限公司 | 不锈钢拉手厂家|浴室门拉手厂家|江门市蓬江区金志翔五金制品有限公司 | 酒店品牌设计-酒店vi设计-酒店标识设计【国际级】VI策划公司 | 货车视频监控,油管家,货车油管家-淄博世纪锐行电子科技 | 广东恩亿梯电源有限公司【官网】_UPS不间断电源|EPS应急电源|模块化机房|电动汽车充电桩_UPS电源厂家(恩亿梯UPS电源,UPS不间断电源,不间断电源UPS) | 培训中心-海南香蕉蛋糕加盟店技术翰香原中心官网总部 | 方源木业官网-四川木门-全国木门专业品牌 | 粉末包装机,拆包机厂家,价格-上海强牛包装机械设备有限公司 | 氧化锆纤维_1800度高温退火炉_1800度高温烧结炉-南京理工宇龙新材料股份有限公司 | 无菌实验室规划装修设计-一体化实验室承包-北京洁净净化工程建设施工-北京航天科恩实验室装备工程技术有限公司 | 航空铝型材,7系铝型材挤压,硬质阳*氧化-余润铝制品 | QQ房产导航-免费收录优秀房地产网站_房地产信息网 | 电子元器件呆滞料_元器件临期库存清仓尾料_尾料优选现货采购处理交易商城 | 定制/定做衬衫厂家/公司-衬衫订做/订制价格/费用-北京圣达信 | 电动打包机_气动打包机_钢带捆扎机_废纸打包机_手动捆扎机 | 硫酸钡厂家_高光沉淀硫酸钡价格-河南钡丰化工有限公司 | 济南品牌包装设计公司_济南VI标志设计公司_山东锐尚文化传播 | 北京律师事务所_房屋拆迁律师_24小时免费法律咨询_云合专业律师网 | 河南新乡德诚生产厂家主营震动筛,振动筛设备,筛机,塑料震动筛选机 | 山东集装箱活动房|济南集装箱活动房-济南利森集装箱有限公司 |