最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

linux之MySQL的數(shù)據(jù)備份和恢復(fù)實(shí)現(xiàn)方式

 更新時(shí)間:2026年03月05日 16:33:20   作者:yutao99  
本文詳細(xì)介紹了MySQL數(shù)據(jù)備份和恢復(fù)的幾種方式,包括物理備份、邏輯備份和增量備份,以及不同的恢復(fù)方式如冷備份、溫備份和熱備份,物理備份適用于大型數(shù)據(jù)庫,而邏輯備份適用于數(shù)據(jù)量較小的情況,備份工具如Xtrabackup和mysqldump各有特點(diǎn),適用于不同的業(yè)務(wù)場景

?防止由于機(jī)械故障以及人為誤操作帶來的數(shù)據(jù)丟失,例如將數(shù)據(jù)庫文件保存在了其它地方。

備份方式

從生成備份的內(nèi)容區(qū)分

物理備份

?直接復(fù)制數(shù)據(jù)庫文件,適用于大型數(shù)據(jù)庫環(huán)境,不受存儲引擎的限制,但不能恢復(fù)到不同的MySQL版本。

物理備份的備份方式

完全備份

  • 每次對數(shù)據(jù)進(jìn)行完整的備份,保存的是當(dāng)前數(shù)據(jù)庫中所有的數(shù)據(jù),是差異備份與增量備份的基礎(chǔ)。
  • 優(yōu)點(diǎn):備份與恢復(fù)操作簡單方便,恢復(fù)時(shí)一次恢復(fù)到位,恢復(fù)速度快
  • 缺點(diǎn):占用空間大,備份速度慢

增量備份

  • 每次備份上一次備份到現(xiàn)在產(chǎn)生的新數(shù)據(jù)
  • 特點(diǎn):因而備份的數(shù)據(jù)量小,占用空間小,備份速度快。
  • 但恢復(fù)時(shí),需要從上一次的完整備份起按備份時(shí)間順序,逐個(gè)備份版本進(jìn)行恢復(fù),恢復(fù)時(shí)間長,如中間某次的備份數(shù)據(jù)損壞,將導(dǎo)致數(shù)據(jù)的丟失。

差異備份

  • 只備份跟完整備份不一樣的
  • 特點(diǎn):差異備份其實(shí)就是增量備份的中特殊操作,它體現(xiàn)在差異備份只能以一個(gè)完整備份為基礎(chǔ),占用空間比增量備份大,比完整備份小,恢復(fù)時(shí)僅需要恢復(fù)第一個(gè)完整版本和最后一次的差異版本,恢復(fù)速度介于完整備份和增量備份之間。

邏輯備份

  • 備份的是建表、建庫、插入等操作所執(zhí)行SQL語句(DDL DML DCL),
  • 適用于中小型數(shù)據(jù)庫,效率相對較低。?

總結(jié):

物理備份邏輯備份
備份方式備份數(shù)據(jù)庫數(shù)據(jù)備份數(shù)據(jù)庫建表、建庫、插入sql語句
優(yōu)點(diǎn)恢復(fù)速度比較快備份文件相對較小,只備份表中的數(shù)據(jù)與結(jié)構(gòu)
缺點(diǎn)備份文件相對較大(備份表空間,包含數(shù)據(jù)與索引)恢復(fù)速度較慢(需要重建索引,存儲過程等)
對業(yè)務(wù)影響I/O負(fù)載加大I/O負(fù)載加大
代表工具ibbackup、xtrabackup開源,mysqlbackupmysqldump

?工作中使用需要使用哪種需要根據(jù)業(yè)務(wù)和數(shù)據(jù)量來決定,一般情況下,數(shù)據(jù)量特別巨大時(shí)會采用物理備份,數(shù)據(jù)量中小時(shí)采取邏輯備份

從恢復(fù)數(shù)據(jù)操作區(qū)分

冷備份

?恢復(fù)備份時(shí),其他人禁止訪問數(shù)據(jù)庫

溫備份

?恢復(fù)備份時(shí),其他人可對數(shù)據(jù)庫進(jìn)行查詢

熱備份

?恢復(fù)數(shù)據(jù)時(shí),其他人可對數(shù)據(jù)庫進(jìn)行所有操作

總結(jié):

  • 工作中使用什么方式恢復(fù)數(shù)據(jù)是由業(yè)務(wù)決定的,當(dāng)恢復(fù)的業(yè)務(wù)非常重要需要使用冷備份,
  • 當(dāng)恢復(fù)的業(yè)務(wù)相對不重要選擇溫備份或熱備份

比如:

  • 銀行ATM程序恢復(fù)選擇冷備份
  • 圖書館資料管理程序選擇熱備份

第一個(gè)備份——select into

sql中的一個(gè)基礎(chǔ)命令,可以完成數(shù)據(jù)備份,但是由于十分簡陋,只能適用于臨時(shí)的數(shù)據(jù)備份

準(zhǔn)備數(shù)據(jù)

mysql> create database back;  #創(chuàng)建back數(shù)據(jù)庫
mysql> use back;		 #切換到back
mysql> create table t_user(id int primary key,name varchar(20));   #創(chuàng)建t_user表
mysql> insert into t_user values(1,'zhangsan');     #添加數(shù)據(jù)
mysql> insert into t_user values(2,'lisi');
mysql> insert into t_user values(3,'wangwu');

進(jìn)行備份

#語法   select 語句 into outfile '目標(biāo)文件'
mysql> select * from t_user into outfile '/tmp/user.txt'
#將select的查詢結(jié)果數(shù)據(jù)儲存到/tmp/user.txt

賦予權(quán)限

?當(dāng)報(bào)錯如上時(shí),表示msyql沒有使用select into 備份權(quán)限

查看當(dāng)前權(quán)限

mysql> show variables like '%secure%';

進(jìn)入/etc/my.cnf

修改配置

secure-file-priv=/tmp

然后重啟mysql,查看信息

重新執(zhí)行命令,并查看備份文件

刪除數(shù)據(jù)

恢復(fù)數(shù)據(jù)

 load data infile '/tmp/user.txt' into table t_user;

查詢數(shù)據(jù)

        

物理備份工具-Xtrabackup

Xtrabackup是開源免費(fèi)的支持MySQL 數(shù)據(jù)庫熱備份的軟件,在 Xtrabackup 包中主要有 Xtrabackup 和 innobackupex 兩個(gè)工具。

其中 Xtrabackup 只能備份 InnoDB 和 XtraDB 兩種引擎; innobackupex則是封裝了Xtrabackup,同時(shí)增加了備份MyISAM引擎的功能。

安裝Xtrabackup

下載并解壓

[root@localhost tmp]# wget https://www.percona.com/downloads/XtraBackup/Percona-XtraBackup-2.4.9/binary/redhat/6/x86_64/Percona-XtraBackup-2.4.9-ra467167cdd4-el6-x86_64-bundle.tar
[root@localhost tmp]# tar xvf Percona-XtraBackup-2.4.9-ra467167cdd4-el6-x86_64-bundle.tar

安裝

[root@localhost tmp]# yum install -y percona-xtrabackup-24-2.4.9-1.el6.x86\_64.rpm

完整備份

創(chuàng)建備份

創(chuàng)建備份目錄
[root@mysql-server ~]# mkdir /xtrabackup/full -p
執(zhí)行備份命令,將當(dāng)前mysql所有數(shù)據(jù)進(jìn)行備份
[root@mysql-server ~]# innobackupex --user=root --password='411528' -S /tmp/mysql.sock  /xtrabackup/full

--user: 數(shù)據(jù)庫登陸用戶名
--password: 密碼
-S :數(shù)據(jù)庫套接文件地址,在/etc/my.cnf的socket中獲取

恢復(fù)備份

1.關(guān)閉數(shù)據(jù)庫

2.刪除數(shù)據(jù)庫所有數(shù)據(jù),在/etc/my.cnf中的datadir獲取儲存位置
  #注意一旦刪除所有數(shù)據(jù),mysql數(shù)據(jù)庫就理論上被損壞了,無法再啟動,必須恢復(fù)數(shù)據(jù)后才能使用
[root@mysql-server ~]# rm -rf /opt/liuyh/data/mysql/*

3.重演數(shù)據(jù),也就是在恢復(fù)數(shù)據(jù)之前先檢查一下備份文件中是否有問題
[root@mysql-server ~]# innobackupex --apply-log /xtrabackup/full/2021-11-17_00-37-48

4.恢復(fù)數(shù)據(jù)
[root@mysql-server ~]# innobackupex --copy-back /xtrabackup/full/2021-11-17_00-37-48

5.數(shù)據(jù)恢復(fù)后,到mysql指定的數(shù)據(jù)儲存位置查看是否有數(shù)據(jù)文件

6.設(shè)置權(quán)限,注意恢復(fù)后的文件需要將權(quán)限設(shè)置為mysql數(shù)據(jù)庫的擁有者可執(zhí)行權(quán)限
[root@mysql-server ~]#chown -R mysql:mysql /opt/liuyh/data/mysql/*

7.啟動數(shù)據(jù)庫,查看數(shù)據(jù)

增量備份

創(chuàng)建備份

1.先創(chuàng)建完整備份

2.修改數(shù)據(jù)庫數(shù)據(jù)

3.創(chuàng)建增量備份
[root@mysql-server ~]# innobackupex --user=root --password=111111 -S /tmp/mysql.sock --incremental /xtrabackup/full --incremental-basedir=/xtrabackup/full/2023-11-17_15-57-12

--incremental:指定增量備份生成位置
--incremental-basedir:指定以哪個(gè)備份為基礎(chǔ)做增量備份,注意:所選備份應(yīng)為一個(gè)完整備份或增量備份

恢復(fù)備份

1.關(guān)閉數(shù)據(jù)庫

2.刪除數(shù)據(jù)庫所有數(shù)據(jù),在/etc/my.cnf中的datadir獲取儲存位置
  #注意一旦刪除所有數(shù)據(jù),mysql數(shù)據(jù)庫就理論上被損壞了,無法再啟動,必須恢復(fù)數(shù)據(jù)后才能使用
[root@mysql-server ~]# rm -rf /opt/liuyh/data/mysql/*

3.重演數(shù)據(jù),并整合數(shù)據(jù)
#重演完整備份
[root@mysql-server ~]# innobackupex --apply-log --redo-only /xtrabackup/full/2021-11-17_15-57-12
#按生成順序?qū)⒌谝粋€(gè)增量備份整合到完整備份中
[root@mysql-server ~]# innobackupex --apply-log --redo-only /xtrabackup/full/2021-11-17_15-57-12 --incremental-dir=/xtrabackup/full/2021-11-17_16-01-25
#按生成順序?qū)⒌诙€(gè)增量備份整合到完整備份中
[root@mysql-server ~]# innobackupex --apply-log --redo-only /xtrabackup/full/2021-11-17_15-57-12 --incremental-dir=/xtrabackup/full/2021-11-17_16-02-01

4.恢復(fù)數(shù)據(jù),此時(shí)所有數(shù)據(jù)都已經(jīng)保存在完整備份中,只需恢復(fù)完整備份即可
[root@mysql-server ~]# innobackupex --copy-back /xtrabackup/full/2021-11-17_15-57-12 

5.設(shè)置權(quán)限,注意恢復(fù)后的文件需要將權(quán)限設(shè)置為mysql數(shù)據(jù)庫的擁有者可執(zhí)行權(quán)限
[root@mysql-server ~]#chown -R mysql:mysql /opt/liuyh/data/mysql/*

6.啟動數(shù)據(jù)庫,查看數(shù)據(jù)

差異備份

?在上面我們已經(jīng)知道差異備份其實(shí)就是增量備份的一種,它的操作與增量備份一致,區(qū)別在于生成差異備份時(shí)只能以一個(gè)完整備份為基礎(chǔ)

邏輯備份工具-mysqldump

mysqldump 是 MySQL 自帶的邏輯備份工具??梢员WC數(shù)據(jù)的一致性和服務(wù)的可用性。

本身為客戶端工具:
遠(yuǎn)程備份語法: # mysqldump  -h 服務(wù)器  -u用戶名  -p密碼  數(shù)據(jù)庫名  > 備份文件.sql
本地備份語法: # mysqldump  -u用戶名  -p密碼   數(shù)據(jù)庫名  > 備份文件.sql

常用關(guān)鍵字

-A, --all-databases #備份所有庫

-B, --databases  #備份多個(gè)數(shù)據(jù)庫

-F, --flush-logs #備份之前刷新binlog日志

--default-character-set #指定導(dǎo)出數(shù)據(jù)時(shí)采用何種字符集,如果數(shù)據(jù)表不是采用默認(rèn)的latin1字符集的話,那么導(dǎo)出時(shí)必須指定該選項(xiàng),否則再次導(dǎo)入數(shù)據(jù)后將產(chǎn)生亂碼問題。

--no-data,-d #不導(dǎo)出任何數(shù)據(jù),只導(dǎo)出數(shù)據(jù)庫表結(jié)構(gòu)。

--lock-tables #備份前,鎖定所有數(shù)據(jù)庫表

--single-transaction #保證數(shù)據(jù)的一致性和服務(wù)的可用性

-f, --force #即使在一個(gè)表導(dǎo)出期間得到一個(gè)SQL錯誤,繼續(xù)。


著重強(qiáng)調(diào):
使用 mysqldump 備份數(shù)據(jù)庫時(shí)避免鎖表:
對一個(gè)正在運(yùn)行的數(shù)據(jù)庫進(jìn)行備份請慎重,盡量不要在數(shù)據(jù)庫開放服務(wù)時(shí)備份,如果一定要在服務(wù)運(yùn)行期間備份,可以選擇添加 --single-transaction選項(xiàng),

類似執(zhí)行: mysqldump --single-transaction -u root -p123456 dbname > mysql.sql

備份所有數(shù)據(jù)

1.創(chuàng)建備份目錄
[root@mysql-server ~]# mkdir /tmp/mysqldumpdata

2.備份當(dāng)前數(shù)據(jù)庫所有數(shù)據(jù)
[root@mysql-server ~]# mysqldump -uroot -p111111 -A > /tmp/mysqldumpdata/all.sql

3.查看是否生成文件

恢復(fù)所有數(shù)據(jù)

[root@localhost mysqldumpdata]# mysql -uroot -p111111 < /tmp/mysqldumpdata/all.sql
注意mysqldump只能恢復(fù)表級內(nèi)容,不能恢復(fù)庫,所以當(dāng)數(shù)據(jù)庫失蹤時(shí)需要先手動創(chuàng)建數(shù)據(jù)庫再執(zhí)行恢復(fù)命令

備份和恢復(fù)指定庫內(nèi)容

備份指定庫
[root@mysql-server ~]# mysqldump -uroot -p111111 -B back > /tmp/mysqldumpdata/back.sql

-B:指定數(shù)據(jù)庫,多個(gè)庫之間用空格區(qū)分
恢復(fù)指定庫
[root@mysql-server ~]# mysql -uroot -p111111 -B mysql </tmp/mysqldumpdata/mysql.sql

注意:恢復(fù)時(shí)只能指定一個(gè)庫操作,若有多個(gè)則多次執(zhí)行

備份和恢復(fù)指定表內(nèi)容

備份指定表
[root@mysql-server ~]# mysqldump -uroot -p111111 -B back --tables t_user > /tmp/mysqldumpdata/back.sql
/opt/yt/mysql/bin/mysqldump
--tables:指定表
恢復(fù)指定表
[root@mysql-server ~]# mysql -uroot -p111111 -B back </tmp/mysqldumpdata/user.sql

總結(jié)

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

最新評論

喀喇| 萨嘎县| 逊克县| 梅河口市| 和顺县| 象州县| 北安市| 清丰县| 阳江市| 盐边县| 文山县| 息烽县| 乐都县| 玉溪市| 油尖旺区| 固镇县| 五台县| 景东| 安泽县| 维西| 葵青区| 五华县| 马边| 哈密市| 高密市| 玉环县| 肃南| 蓬莱市| 龙泉市| 澄江县| 鹰潭市| 称多县| 贵溪市| 盐津县| 奇台县| 炉霍县| 大城县| 泰和县| 淮阳县| 楚雄市| 民和|