国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

MySQL數(shù)據(jù)備份與恢復

這篇具有很好參考價值的文章主要介紹了MySQL數(shù)據(jù)備份與恢復。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

備份的主要目的:
備份的主要目的是:災難恢復,備份還可以測試應用、回滾數(shù)據(jù)修改、查詢歷史數(shù)據(jù)、審計等。
日志:
MySQL 的日志默認保存位置為:

 /usr/local/mysql/data

##配置文件

vim /etc/my.cnf
[mysqld]
##錯誤日志,用來記錄當MySQL啟動、停止或運行時發(fā)生的錯誤信息,默認已開啟
log-error=/usr/local/mysql/data/mysql_error.log     #指定日志的保存位置和文件名

##通用查詢?nèi)罩?,用來記錄MySQL的所有連接和語句,默認是關閉的

general_log=ON
general_log_file=/usr/local/mysql/data/mysql_general.log

##二進制日志(binlog),用來記錄所有更新了數(shù)據(jù)或者已經(jīng)潛在更新了數(shù)據(jù)的語句,記錄了數(shù)據(jù)的更改,可用于數(shù)據(jù)恢復,默認已開啟

log-bin=mysql-bin      
或
log_bin=mysql-bin

##中繼日志
一般情況下它在Mysql主從同步(復制)、讀寫分離集群的從節(jié)點開啟。主節(jié)點一般不需要這個日志

##慢查詢?nèi)罩?,用來記錄所有?zhí)行時間超過long_query_time秒的語句,可以找到哪些查詢語句執(zhí)行時間長,以便提醒優(yōu)化,默認是關閉的

s1ow_query_log=ON
slow_query_log_file=/usr/local/mysql/data/mysql_slow_query.log
long_query_time=5        #設置超過5秒執(zhí)行的語句被記錄,缺省時為10

##復制段

log-error=/usr/local/mysql/data/mysql_error.log
general_log=ON
general_log_file=/usr/local/mysql/data/mysql_general.log
log-bin=mysql-bin
slow_query_log=ON
slow_query_log_file=/usr/local/mysql/data/mysql_slow_query.log
long_query_time=5
systemctl restart mysqld
mysql -u root -p
show variables like 'general%';       #查看通用查詢?nèi)罩臼欠耖_啟
show variables like 'log_bin%';       #查看二進制日志是否開啟
show variables like '%slow%';         #查看慢查詢?nèi)展δ苁欠耖_啟
show variables like 'long_query_time';    #查看慢查詢時間設置
set global slow_query_log=ON;         #在數(shù)據(jù)庫中設置開啟慢查詢的方法

PS:variables 表示變量 like 表示模糊查詢

#xxx(字段)
xxx% 以xxx為開頭的字段
%xxx 以xxx為結(jié)尾的字段
%xxx% 只要出現(xiàn)xxx字段的都會顯示出來
xxx   精準查詢

#二進制日志開啟后,重啟mysql 會在目錄中查看到二進制日志
cd /usr/local/mysql/data
ls
mysql-bin.000001		#開啟二進制日志時會產(chǎn)生一個索引文件及一個索引列表

索引文件:記錄更新語句
索引文件刷新方式:
1、重啟mysql的時候會更新索引文件,用于記錄新的更新語句
2、刷新二進制日志

mysql-bin.index:
二進制日志文件的索引

二、數(shù)據(jù)備份的重要性:
在企業(yè)中,數(shù)據(jù)的價值至關重要,數(shù)據(jù)保障了企業(yè)業(yè)務的正常運行。因此,數(shù)據(jù)的安全性及數(shù)據(jù)的可靠性是運維的重中之重,任何數(shù)據(jù)的丟失都可能對企業(yè)產(chǎn)生嚴重的后果。
1、備份的主要目的是災難恢復
2、在生產(chǎn)環(huán)境中,數(shù)據(jù)的安全性至關重要
3、任何數(shù)據(jù)的丟失都可能產(chǎn)生嚴重的后果
4、造成數(shù)據(jù)丟失的原因

通常情況下,造成數(shù)據(jù)丟失的原因通常有以下幾種:

①程序錯誤
②人為操作錯誤
③運算錯誤
④磁盤故障
⑤災難(火災、地震)and 盜竊(黑客攻擊)

三、備份類型
數(shù)據(jù)備份的分類:
從物理與邏輯的角度分類可以分為:邏輯備份、物理備份。
1.物理備份:對數(shù)據(jù)庫操作系統(tǒng)的物理文件(如數(shù)據(jù)文件、日志文件等)的備份
物理備份方法:
①.冷備份(脫機備份):是在關閉數(shù)據(jù)庫的時候進行的。
②熱備份(聯(lián)機備份):數(shù)據(jù)庫處于運行狀態(tài),依賴于數(shù)據(jù)庫的日志文件。
③溫備份:數(shù)據(jù)庫鎖定表格(不可寫入但可讀)的狀態(tài)下進行備份操作。

2.邏輯備份:對數(shù)據(jù)庫邏輯組件(如:表等數(shù)據(jù)庫對象)的備份。表示為邏輯數(shù)據(jù)庫結(jié)構(gòu)
這種類型的備份適用于可以編輯數(shù)據(jù)值或表結(jié)構(gòu) 。

從數(shù)據(jù)庫的備份策略角度,備份分類可以分為:完全備份、差異備份、增量備份。

完全備份: 每次對數(shù)據(jù)進行完整的備份,即對整個數(shù)據(jù)庫、數(shù)據(jù)庫結(jié)構(gòu)和文件結(jié)構(gòu)的備份,保存的是備份完成時刻的數(shù)據(jù)庫,是差異備份與增量備份的基礎。完全備份的備份與恢復操作都非常簡單方便,但是數(shù)據(jù)存在大量的重復,并且會占用大量的磁盤空間,備份的時間也很長。
MySQL數(shù)據(jù)備份與恢復,mysql,adb,android
差異備份: 備份那些自從上次完全備份之后被修改過的所有文件,備份的時間節(jié)點是從上次完整備份起,備份數(shù)據(jù)量會越來越大?;謴蛿?shù)據(jù)時,只需恢復上次的完全備份與最近的一次差異備份。
MySQL數(shù)據(jù)備份與恢復,mysql,adb,android
增量備份: 只有在上次完全備份或者增量備份后被修改的文件才會被備份。以上次完整備份或上次增量備份的時間為時間點,僅備份這之間的數(shù)據(jù)變化,因而備份的數(shù)據(jù)量小,占用空間小,備份速度快。但恢復時,需要從上一次的完整備份開始到最后一次增量備份之的所有增量依次恢復,如中間某次的備份數(shù)據(jù)損壞,將導致數(shù)據(jù)的丟失。
MySQL數(shù)據(jù)備份與恢復,mysql,adb,android
備份方式比較:

備份方式 完全備份 差異備份 增量備份
完全備份時的狀態(tài) 表1、表2 表1、表2 表1、表2
第1次添加內(nèi)容 創(chuàng)建表3 創(chuàng)建表3 創(chuàng)建表3
備份內(nèi)容 表1、表2、表3 表3 表3
第2次添加內(nèi)容 創(chuàng)建表4 創(chuàng)建表4 創(chuàng)建表4
備份內(nèi)容 表1、表2、表3、表4 表3、表4 表4

邏輯備份的策略(增、全、差異)
如何選擇邏輯備份策略(頻率)
合理值區(qū)間???
一周一次的全備,全備的時間需要在不提供業(yè)務的時間區(qū)間進行 PM 10點 AM 5:00之間進行全備
增量:3天/2天/1天一次增量備份
差異:選擇特定的場景進行備份
一個處理(NFS)提供額外空間給與mysql 服務器用

常見的備份方法:
1、物理冷備
物理冷備份時需要在數(shù)據(jù)庫處于關閉狀態(tài)下,能夠較好地保證數(shù)據(jù)庫的完整性。
物理冷備份一般用于非核心業(yè)務,這類業(yè)務一般都允許中斷。
物理冷備份的特點就是速度快,恢復時也是最為簡單的。
通常通過直接打包(tar-cf)數(shù)據(jù)庫文件夾(/usr/local/mysql/data)來實現(xiàn)備份。

2、專用備份工具mydump或者mysqlhotcopy:
①mysqldump程序和mysqlhotcopy都可以做備份。
②mysqldump是客戶端常用邏輯備份程序,能夠產(chǎn)生一組被執(zhí)行以后再現(xiàn)原始數(shù)據(jù)庫對象定義和表數(shù)據(jù)的SQL語句。它可以轉(zhuǎn)儲一個到多個MySQL數(shù)據(jù)庫,對其進行備份或傳輸?shù)竭h程SQL服務器。mysqldump更為通用,因為它可以備份各種表。
③mysqlhotcopy僅適用于某些存儲引擎(MyISAM和ARCHIVE)。
3、啟用二進制日志進行增量備份:
①進行增量備份,需要刷新二進制日志
②mysql支持增量備份,進行增量備份時必須啟用二進制日志。
二進制日志文件為用戶提供復制,對執(zhí)行備份點后進行的數(shù)據(jù)庫更改所需的信息進行恢復。
如果進行增量備份(包含自上次完全備份或增量備份以來發(fā)生的數(shù)據(jù)修改) ,需要刷新二進制日志

4、通過第三方工具備份:
使用免費的第三方Percona xtraBackup熱備份軟件,支持在線熱備份Innodb和xtraDB,也可以支持MySQL表備份,不過MyISAM表的備份要在表鎖的情況下進行。

四、MySQL完全備份
是對整個數(shù)據(jù)庫、數(shù)據(jù)庫結(jié)構(gòu)和文件結(jié)構(gòu)的備份
保存的是備份完成時刻的數(shù)據(jù)庫
是差異備份與增量備份的基礎
1、優(yōu)點:
備份與恢復操作簡單方便。

2、缺點:
數(shù)據(jù)存在大量的重復、占用大量的備份空間,備份與恢復時間長。

數(shù)據(jù)庫完全備份分類:
1、物理冷備份與恢復
關閉MySQL數(shù)據(jù)庫
使用tar命令直接打包數(shù)據(jù)庫文件夾
直接替換現(xiàn)有MySQL目錄即可

2、mysqldump備份與恢復
MySQL自帶的備份工具,可方便實現(xiàn)對MySQL的備份
可以將指定的庫、表導出為SQL 腳本
使用命令mysq|導入備份的數(shù)據(jù)

五、實驗部分

環(huán)境準備:

use MY;
create table if not exists info (
id int(4) not null auto_increment,
name varchar(10) not null,
age char(10) not null,
hobby varchar(50),
primary key (id));
#創(chuàng)建一個名為"info"的MySQL表格。表格包含四個列,分別是"id"、"name"、"age""hobby"。其中,"id"是一個4位整數(shù),不為空且自動遞增;"name"是一個最大長度為10的字符串,不為空;"age"是一個最大長度為10的字符型,不為空;"hobby"是一個最大長度為50的字符串,可以為空。此外,"id"列被指定為主鍵。

insert into info values(1,'user1',20,'running');
insert into info values(2,'user2',30,'singing');
插入兩行數(shù)據(jù)

MySQL完全備份與恢復:

InnoDB 存儲引擎的數(shù)據(jù)庫在磁盤上存儲成三個文件: db.opt(表屬性文件)、表名.frm(表結(jié)構(gòu)文件)、表名.ibd(表數(shù)據(jù)文件)。

/usr/local/mysql/data/

MySQL數(shù)據(jù)備份與恢復,mysql,adb,android
1.物理冷備份與恢復

systemctl stop mysqld #命令來停止 mysqld 進程
yum -y install xz #安裝 xz 壓縮工具,xz 是一種高效的壓縮工具,可以將文件壓縮到很小的體積。

壓縮備份:

tar -jcvf /opt/mysql_all_$(date +%F).tar.xz /usr/local/mysql/data/ 
#將 /usr/local/mysql/data/ 目錄下的 MySQL 數(shù)據(jù)庫文件打包并壓縮為一個 .tar.xz 文件,然后將其保存到 /opt/ 目錄下。其中 $(date +%F) 表示將當前日期格式化為 YYYY-MM-DD 的形式,用于在備份文件名中添加日期
mv /usr/local/mysql/data/ /opt/ 
#將/usr/local/mysql/data/ 目錄下的 MySQL 數(shù)據(jù)庫文件移動到 /opt/ 目錄下
解壓恢復:
tar -jxvf /opt/mysql_all_2023-08-29.tar.xz -C /usr/local/mysql/data/
#解壓縮備份文件 /opt/mysql_all_2023-08-29.tar.xz 并將其恢復到 /usr/local/mysql/data/ 目錄下
cd /usr/local/mysql/data
mv /usr/local/mysql/data/* ./
#將 /usr/local/mysql/data/ 目錄下的所有文件和子目錄移動到當前工作目錄下。
  1. mysqldump 備份與恢復(溫備份)
    數(shù)據(jù)庫還是之前創(chuàng)建的MY庫
create table info1 (id int,name char(10),age int,sex char(4));
insert into info1 values(1,'user',11,'性別');
insert into info1 values(2,'user',11,'性別');

1、完全備份一個或多個完整的庫 (包括其中所有的表)

mysqldump -u root -p[密碼] --databases 庫名1 [庫名2] ... > /備份路徑/備份文件名.sql    #導出的就是數(shù)據(jù)庫腳本文件
例:
mysqldump -u root -p --databases MY > /opt/kgc.sql       #備份一個MY庫
mysqldump -u root -p --databases mysql MY > /opt/mysql-MY.sql    #備份mysql與 kgc兩個庫 

2、完全備份 MySQL 服務器中所有的庫

mysqldump -u root -p[密碼] --all-databases > /備份路徑/備份文件名.sql
例:
mysqldump -u root -p --all-databases > /opt/all.sql

3、完全備份指定庫中的部分表

mysqldump -u root -p[密碼] 庫名 [表名1] [表名2] ... > /備份路徑/備份文件名.sql
例:
mysqldump -u root -p [-d] kgc info info1 > /opt/MY_info1.sql
#使用“-d”選項,說明只保存數(shù)據(jù)庫的表結(jié)構(gòu) 
#不使用“-d"選項,說明表數(shù)據(jù)也進行備份
#做為一個表結(jié)構(gòu)模板

(4)查看備份文件

grep -v "^--" /opt/MY_info1.sql | grep -v "^/" | grep -v "^$"

Mysql 完全恢復:

恢復數(shù)據(jù)庫:

1.使用mysqldump導出的文件,可使用導入的方法

source命令
mysql命令
1.mysql> use mydatabase;
2.mysql> source /backup/all-data.sql;

2.使用source恢復數(shù)據(jù)庫的步驟

登錄到MySQL數(shù)據(jù)庫:mysql -u 用戶名 -p 密碼
執(zhí)行source備份sql腳本的路徑
mysql> source /backup/all-data.sql;

3.source恢復的示例

MySQL [(none)]> source /backup/all-data.sql
#MySQL [(none)]> 是 MySQL 命令行客戶端的提示符,表示當前沒有選擇任何數(shù)據(jù)庫。
#/backup/all-data.sql 是 SQL 腳本文件的路徑。執(zhí)行這個命令后,MySQL 將會讀取并執(zhí)行 /backup/all-data.sql 文件中的 SQL 語句,從而將其中的數(shù)據(jù)導入到 MySQL 數(shù)據(jù)庫中

使用source命令恢復數(shù)據(jù)
1.模擬數(shù)據(jù)庫出現(xiàn)問題:

 mysql -uroot -pabc123 登錄數(shù)據(jù)庫
mysql> show databases;  查看數(shù)據(jù)庫信息
mysql> drop database school;  刪除數(shù)據(jù)庫school
mysql> show databases; 

2 應用示例:
創(chuàng)建備份(對表進行備份)

mysqldump -uroot -123 MY info > /opt/info.sql  
將MY數(shù)據(jù)庫中的info表進行刪除數(shù)據(jù)庫:
 mysql -uroot -p123 登錄數(shù)據(jù)庫
 show tables;
 drop table MY.info;
 或者直接執(zhí)行下面的語句直接刪除:
mysql -uroot -p123 -e 'drop table MY.info;'  #刪除數(shù)據(jù)庫的表

恢復數(shù)據(jù)表:

mysql -uroot -p123
 select * from info;  查詢所有字段
show tables; 查看表信息
或免交互l> source /opt/info.sql  
mysql -uroot -p123123 -e 'show tables from school;'

方式二:

 mysql -uroot -p123 MY < /opt/MY.info.sql   #恢復info表
 mysql -uroot -p123 -e 'show tables from MY;'  #查看info表
PS:mysqldump 嚴格來說屬于溫備份,會需要對表進行寫入的鎖定
在全量備份與恢復實驗中,假設現(xiàn)有MY庫,MY庫中有一個info1表,需要注意的一點為:
① 當備份時加 --databases ,表示針對于MY庫

#備份命令:

mysqldump -uroot -p123 --databases MY > /opt/MY_01.sql 備份庫后
#恢復過程為:
mysql -uroot -p123
drop database ;
exit
mysql -uroot -p123 < /opt/MY_01.sql

② 當備份時不加 --databases,表示針對MY庫下的所有表

#備份命令
mysqldump -uroot -p123  > /opt/MY_all.sql
#恢復過程:
mysql -uroot -p123
drop database MY;
create database MY;
exit
mysql -uroot -p123 MY < /opt/MY_02.sql 

查看MY_01.sql 和MY_02.sql 

主要原因在于兩種方式的備份(前者會從"create databases"開始,而后者則全是針對表格進行操作) 

4.在生產(chǎn)環(huán)境中,可以使用Shell腳本自動實現(xiàn)定時備份(時間頻率需要確認)
0 1 * * 6 /usr/local/mysql/bin/mysqldump -uroot -p123 MY info1 > ./MY_info1_$(date +%Y%m%d).sql ;/usr/local/mysql/bin/mysqladmin -u root -p flush-logs
# 0 1 * * 6 表示在每周的第六天(即星期六)的凌晨 1 點執(zhí)行備份任務。
/usr/local/mysql/bin/mysqldump -uroot -p123 MY info1 > ./MY_info1_$(date +%Y%m%d).sql 表示執(zhí)行備份操作,使用 mysqldump 工具備份 MySQL 數(shù)據(jù)庫中的 MY 數(shù)據(jù)庫中的 info1 表,并將備份結(jié)果輸出到當前目錄下以日期命名的備份文件中,例如 ./MY_info1_20220101.sql。
;/usr/local/mysql/bin/mysqladmin -u root -p flush-logs 表示執(zhí)行刷新 MySQL 日志文件的操作,使用 mysqladmin 工具刷新 MySQL 的日志文件

MySQL 增量備份與恢復:

MySQL數(shù)據(jù)庫增量恢復
1.一般恢復

將所有備份的二進制日志內(nèi)容全部恢復

2.基于位置恢復

數(shù)據(jù)庫在某一時間點可能既有錯誤的操作也有正確的操作
可以基于精準的位置跳過錯誤的操作
發(fā)生錯誤節(jié)點之前的一個節(jié)點,上一次正確操作的位置點停止

3.基于時間點恢復

跳過某個發(fā)生錯誤的時間點實現(xiàn)數(shù)據(jù)恢復
在錯誤時間點停止,在下一個正確時間點開始

----------MySQL 增量備份------------

一、增備實驗
1.開啟二進制日志功能

vim /etc/my.cnf
[mysqld]
log-bin=mysql-bin
binlog_format = MIXED      #可選,指定二進制日志(binlog)的記錄格式為MIXED(混合輸入)
server-id = 1              #可加可不加該命令

二進制日志(binlog)有3種不同的記錄格式: STATEMENT (基于SQL語句)、ROW(基于行)、MIXED(混合模式),默認格式是STATEMENT
① STATEMENT(基于SQL語句):
每一條涉及到被修改的sql 都會記錄在binlog中
缺點:日志量過大,如sleep()函數(shù),last_insert_id()>,以及user-defined fuctions(udf)、主從復制等架構(gòu)記錄日志時會出現(xiàn)問題
總結(jié):增刪改查通過sql語句來實現(xiàn)記錄,如果用高并發(fā)可能會出錯,可能時間差異或者延遲,可能不是我們想想的恢復可能你先刪除或者在修改,可能會倒過來。準確率底
② ROW(基于行)
只記錄變動的記錄,不記錄sql的上下文環(huán)境
缺點:如果遇到update…set…where true 那么binlog的數(shù)據(jù)量會越來越大
總結(jié):update、delete以多行數(shù)據(jù)起作用,來用行記錄下來,
只記錄變動的記錄,不記錄sql的上下文環(huán)境,
比如sql語句記錄一行,但是ROW就可能記錄10行,但是準確性高,高并發(fā)的時候由于操作量,性能變低 比較大所以記錄都記下來,
③ MIXED 推薦使用
一般的語句使用statement,函數(shù)使用ROW方式存儲。

systemctl restart mysqld 

查看二進制日志文件的內(nèi)容

cp /usr/local/mysql/data/mysql-bin.000002 /opt/

① mysqlbinlog --no-defaults  /opt/mysql-bin.000002

mysqlbinlog --no-defaults --base64-output=decode-rows -v /opt/mysql-bin.000002

#--base64-output=decode-rows:使用64位編碼機制去解碼(decode)并按行讀?。╮ows)
#-v: 顯示詳細內(nèi)容
#--no-defaults : 默認字符集(不加會報UTF-8的錯誤)
PS: 可以將解碼后的文件導出為txt格式,方便查閱
mysqlbinlog --no-defaults --base64-output=decode-rows -v /opt/mysql-bin.000002 > /opt/mysql-bin.000002

二進制日志中需要關注的部分:

1、at :開始的位置點
2、end_log_pos:結(jié)束的位置
3、時間戳: 23082910:30:30
4、SQL語句

2.進行完全備份(增量備份時基于完全備份的,所以我們直接完全備份數(shù)據(jù)庫)

 mysqldump -uroot -p MY info > /opt/MY_info1_$(date +%F).sql
 #使用了 mysqldump 工具,用于備份 MySQL 數(shù)據(jù)庫中的 MY 數(shù)據(jù)庫中的 info 表。其中 -uroot 表示使用 root 用戶登錄,-p 表示需要輸入密碼,MY 表示要備份的數(shù)據(jù)庫名,info 表示要備份的數(shù)據(jù)表名。> 表示將備份結(jié)果輸出到指定的文件中,/opt/MY_info1_$(date +%F).sql 表示備份文件的路徑和文件名,其中 $(date +%F) 表示當前日期,
 mysqldump -uroot -p MY > /opt/MY_all_$(date +%F).sql
 #用 mysqldump 工具備份 MySQL 數(shù)據(jù)庫中的 MY 數(shù)據(jù)庫中的所有數(shù)據(jù)表。其中 -uroot 表示使用 root 用戶登錄,-p 表示需要輸入密碼,MY 表示要備份的數(shù)據(jù)庫名。> 表示將備份結(jié)果輸出到指定的文件中,/opt/MY_all_$(date +%F).sql 表示備份文件的路徑和文件名,其中 $(date +%F)
 

3.可每天進行增量備份操作,生成新的二進制日志文件(例如:mysql-bin.000002)

mysqladmin -u root -p flush-logs

4.插入新數(shù)據(jù),以模擬數(shù)據(jù)的增加或變更
PS:在第一次完全備份之后刷新二進制文件,在第二個二進制文件中記載著"增量備份的數(shù)據(jù)"

mysql> create database MY;
Query OK, 1 row affected (0.00 sec)

mysql> use MY;
Database changed
mysql> create table info1 (id int(4),name varchar(4));
Query OK, 0 rows affected (0.00 sec)

mysql> insert into info1 values(1,'one');
Query OK, 1 row affected (0.00 sec)



mysql> insert into info1 values(2,'two');
Query OK, 1 row affected (0.00 sec)

mysql> select * from info;
+------+------+
| id   | name |
+------+------+
|    1 | one  |
|    2 | two  |
+------+------+
2 rows in set (0.00 sec)

5.再次生成新的二進制日志文件(例如:mysql-bin.000003)

mysqladmin -u root -p flush-logs

#之前的步驟4的數(shù)據(jù)庫操作會保存到mysql-bin.000002文件中,之后我們測試刪除MY庫的操作會保存在mysql-bin.000003文件中 (以免當我們基于mysql-bin.000002日志進行恢復時,依然會刪除庫)

MySQL增量恢復:

1.一般恢復(直接使用二進制文件恢復)
(1)、模擬丟失更改的數(shù)據(jù)的恢復步驟
① 備份MY庫中test1表

mysqldump -uroot -p123123 MY test1 > /opt/MY_test13.sql

② 刪除MY庫中test1表
drop table MY.test1;
③ 恢復test1表
mysql -uroot -p ky13 < info-2023-08-29.sql

#查看日志文件

mysqlbinlog --no-defaults --base64-output=decode-rows -v mysql-bin.000002

2、模擬丟失所有數(shù)據(jù)的恢復步驟
① 模擬丟失所有數(shù)據(jù)

 mysql -uroot -p123
mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| MY                  |
| mysql              |
| performance_schema |
| school             |
| sys                |
| test               |
+--------------------+
7 rows in set (0.00 sec)
mysql> drop database MY;
Query OK, 1 row affected (0.00 sec)

mysql> exit

② 基于mysql-bin.000002恢復

mysqlbinlog --no-defaults /opt/mysql-bin.000002 | mysql -u root -p

2.斷點恢復
基于位置點恢復

mysqlbinlog --no-defaults --base64-output=decode-rows -v /opt/mysql-bin.000002

例:
at 302
#230830 15:21:16
插入了"user3"的用戶數(shù)據(jù)

#at 623
#230830 15:21:20
插入了"user4"的用戶數(shù)據(jù)

(1)、基于位置恢復
① 插入三條數(shù)據(jù)

mysql> use MY;

mysql> select * from test1;
+------+------+
| id   | name |
+------+------+
|    1 | one  |
|    2 | two  |
+------+------+
2 rows in set (0.00 sec)

mysql> insert into test1 values(3,'true');
Query OK, 1 row affected (0.00 sec)

mysql> insert into test1 values(4,'f');
Query OK, 1 row affected (0.00 sec)

mysql> insert into test1 values(5,'t');
Query OK, 1 row affected (0.00 sec)

mysql> select * from test1;
+------+------+
| id   | name |
+------+------+
|    1 | one  |
|    2 | two  |
|    3 | true |
|    4 | f    |
|    5 | t    |
+------+------+
5 rows in set (0.00 sec)

#需求:以上id =4的數(shù)據(jù)操作失誤,需要跳過

② 確認位置點,刷新二進制日志并刪除test1表

mysqlbinlog --no-defaults --base64-output=decode-rows -v /opt/mysql-bin.000003
960 停止 
1066 開始

#刷新日志
mysqladmin -uroot -p123 flush-logs

mysql> use MY;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Database changed
mysql> show tables;
+----------------+
| Tables_in_MY |
+----------------+
| test1          |
+----------------+
1 row in set (0.00 sec)

mysql> drop table MY.test1;
Query OK, 0 rows affected (0.00 sec)

③ 基于位置點恢復

--stop-position #之前所有的數(shù)據(jù)進行恢復。
#僅恢復到操作 ID 為“623"之前的數(shù)據(jù),即不恢復"user4"的數(shù)據(jù)
mysqlbinlog --no-defaults --stop-position='623' /opt/mysql-bin.000002 | mysql -uroot -p

–start-position #之后的所有數(shù)據(jù)進行恢復。
#僅恢復"user4"的數(shù)據(jù),跳過"user3"的數(shù)據(jù)恢復

mysqlbinlog --no-defaults --start-position='623' /opt/mysql-bin.000002 | mysql -uroot -p

#恢復從位置為400開始到位置為623為止

mysqlbinlog --no-defaults --start-position='400' --stop-position='623' /opt/mysql-bin.000002 | mysql -uroot -p     

3、基于時間點恢復

mysqlbinlog [--no-defaults] --start-datetime='年-月-日 小時:分鐘:秒' --stop-datetime='年-月-日小時:分鐘:秒' 二進制日志 | mysql -u 用戶名 -p 密碼

#僅恢復到15:21:20 之前的數(shù)據(jù),即不恢復"user4"的數(shù)據(jù)

mysqlbinlog --no-defaults --stop-datetime='2023-8-30 15:21:20' /opt/mysql-bin.000002 | mysql -uroot -p 

#僅恢復"user4"的數(shù)據(jù),跳過"user3"的數(shù)據(jù)恢復

mysqlbinlog --no-defaults --start-datetime='2023-8-30 15:21:20' /opt/mysql-bin.000002 | mysql -uroot -p

注意:
如果恢復某條SQL語之前的所有數(shù)據(jù),就stop在這個語句的位置節(jié)點或者時間點。
如果恢復某條SQL語句以及之后的所有數(shù)據(jù),就從這個語句的位置節(jié)點或者時間點start。文章來源地址http://www.zghlxwxcb.cn/news/detail-679468.html

到了這里,關于MySQL數(shù)據(jù)備份與恢復的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權(quán),不承擔相關法律責任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領支付寶紅包贊助服務器費用

相關文章

  • mysql 數(shù)據(jù)備份與恢復使用詳解

    對一個運行中的線上系統(tǒng)來說,定期對數(shù)據(jù)庫進行備份是非常重要的,備份不僅可以確保數(shù)據(jù)的局部完整性,一定程度上也為數(shù)據(jù)安全性提供了保障,設想如果某種極端的場景下,比如磁盤損壞導致某個時間段數(shù)據(jù)丟失,或者誤操作導致數(shù)據(jù)表數(shù)據(jù)被刪等... 這種情況在現(xiàn)實中

    2024年02月08日
    瀏覽(34)
  • MySQL數(shù)據(jù)庫備份與恢復

    MySQL數(shù)據(jù)庫備份與恢復

    在項目的開發(fā)過程中數(shù)據(jù)庫的備份是非常重要的,為了防止數(shù)據(jù)庫受到破壞,造成不可估量的損失,所以一定要進行數(shù)據(jù)庫的備份,并且需要掌握數(shù)據(jù)庫恢復方法,在發(fā)生數(shù)據(jù)庫損壞的時候,能快速進行數(shù)據(jù)庫恢復。 本文主要介紹MySQL數(shù)據(jù)表備份與恢復主要的三種方法,包括

    2024年02月12日
    瀏覽(859)
  • mysql數(shù)據(jù)庫備份和恢復

    數(shù)據(jù)備份可以分為三種, 熱備份。 數(shù)據(jù)庫處于運行狀態(tài),此時依賴數(shù)據(jù)庫的日志文件進行備份 溫備份。 進行數(shù)據(jù)備份時數(shù)據(jù)庫服務正常進行,但是數(shù)據(jù)智能度不能寫。 冷備份。數(shù)據(jù)庫處于關閉狀態(tài),能夠夠好的保證數(shù)據(jù)庫的完整性。 邏輯備份。使用軟件從數(shù)據(jù)庫中提取數(shù)

    2024年02月12日
    瀏覽(96)
  • 9-MySQL數(shù)據(jù)庫 數(shù)據(jù)的備份與恢復

    9-MySQL數(shù)據(jù)庫 數(shù)據(jù)的備份與恢復

    1.date文件的備份 2.mysqldump 備份 說明: mysqldump是MySQL數(shù)據(jù)庫中的一個實用程序,它主要用于轉(zhuǎn)儲(備份)數(shù)據(jù)庫。mysqldump通過生成一個SQL腳本文件,包含從頭開始重新創(chuàng)建數(shù)據(jù)庫所必需的(如 CREATE TABLE和INSERT等),來實現(xiàn)數(shù)據(jù)庫的備份和轉(zhuǎn)儲。這樣,你可以在任何時候通過運

    2024年02月08日
    瀏覽(96)
  • Mysql數(shù)據(jù)備份與恢復——Docker版

    Mysql數(shù)據(jù)備份與恢復——Docker版

    ? 工作上由于需要將舊服務器停用換用新服務器,而舊服務器上存放的mysql數(shù)據(jù)庫,查看磁盤得知大概50G以上,如果采用工具將數(shù)據(jù)導出成json再到新服務上執(zhí)行,其過程花費時間太長了,至少得半天… 所以想著能否直接將數(shù)據(jù)庫上的data目錄數(shù)據(jù)直接復制到新的服務器上,然

    2023年04月27日
    瀏覽(25)
  • 數(shù)據(jù)庫應用:MySQL備份與恢復

    數(shù)據(jù)庫應用:MySQL備份與恢復

    目錄 一、理論 1.數(shù)據(jù)備份 2.完全備份與恢復 3.完全備份與恢復應用 4.增量備份與恢復 5.增量備份與恢復應用 6.使用腳本備份 7.日志管理 二、實驗 1.完全備份與恢復 2.增量備份與恢復 3.使用腳本備份 三、問題 1.mysqldump報錯 四、總結(jié) (1)重要性 ①? 備份的主要目的是災難恢復

    2024年02月16日
    瀏覽(90)
  • MySQL數(shù)據(jù)庫的備份與恢復

    MySQL數(shù)據(jù)庫的備份與恢復

    備份的主要目的是災難恢復。 在生產(chǎn)環(huán)境中,數(shù)據(jù)的安全性至關重要。 任何數(shù)據(jù)的丟失都可能產(chǎn)生嚴重的后果。 造成數(shù)據(jù)丟失的原因: 程序錯誤 人為操作錯誤 運算錯誤 磁盤故障 災難(如火災、地震)和盜竊 1)物理備份 物理備份:對數(shù)據(jù)庫操作系統(tǒng)的物理文件(如數(shù)據(jù)

    2024年02月04日
    瀏覽(1461)
  • Mysql數(shù)據(jù)庫增量備份與恢復

    使用 mysqldump 進行完全備份,備份的數(shù)據(jù)中有重復數(shù)據(jù),備份時間與恢復時間長。 而增量備份就是備份自上一次備份之后增加或改變的文件或內(nèi)容。 1、增量備份的特點: 沒有重復數(shù)據(jù),備份量不大,時間短 恢復麻煩:需要上次完全備份及完全備份之后所有的增量備份才能恢復

    2024年02月07日
    瀏覽(93)
  • MySQL——使用mysqldump備份與恢復數(shù)據(jù)

    MySQL——使用mysqldump備份與恢復數(shù)據(jù)

    目錄 1.mysqldump簡介 2.mysqldump備份數(shù)據(jù) 2.1?備份所有數(shù)據(jù)庫 2.2?備份一個/多個數(shù)據(jù)庫 2.3 備份指定庫中的指定表 3.mysqldump恢復數(shù)據(jù) 3.1 恢復數(shù)據(jù)庫 3.2 恢復數(shù)據(jù)表 前言 : mysqldump 和 binlog 都可以作為MySQL數(shù)據(jù)庫備份的方式 : mysqldump 用于將整個或部分數(shù)據(jù)庫導出為可執(zhí)行的SQL文件

    2024年02月03日
    瀏覽(19)
  • 【數(shù)據(jù)庫四】MySQL備份與恢復

    【數(shù)據(jù)庫四】MySQL備份與恢復

    數(shù)據(jù)庫備份 物理備份 :直接對數(shù)據(jù)庫的 數(shù)據(jù)文件或者日志文件 進行備份. 邏輯備份 :對 數(shù)據(jù)庫的庫或表對象 進行備份. 備份策略 完全備份 :每次備份 都備份完整的數(shù)據(jù)庫 . 是對整個數(shù)據(jù)庫、數(shù)據(jù)庫結(jié)構(gòu)和文件結(jié)構(gòu)的備份。 保存的是 備份完成時刻的數(shù)據(jù)庫 。 是 差異備份與增

    2024年02月11日
    瀏覽(102)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領取紅包,優(yōu)惠每天領

二維碼1

領取紅包

二維碼2

領紅包