溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

015—備份、還原和數(shù)據(jù)遷移

發(fā)布時(shí)間:2020-07-24 02:02:04 來(lái)源:網(wǎng)絡(luò) 閱讀:437 作者:會(huì)飛的冬瓜 欄目:MySQL數(shù)據(jù)庫(kù)

備份:

 

按是否備份全部數(shù)據(jù)可以將備份劃分為: 

 

完全備份

 

增量備份:指的是備份自上一次備份以來(lái)(增量或完全)以來(lái)變化的數(shù)據(jù)特點(diǎn)節(jié)約空間、還原麻煩。

 

差異備份:指的是備份自上一次完全備份以來(lái)變化的數(shù)據(jù) 特點(diǎn)浪費(fèi)空間、還原比增量備份簡(jiǎn)單。

 

一般情況下,根據(jù)備份策略組合使用:完全+增量;完全+差異。


015—備份、還原和數(shù)據(jù)遷移


常用備份工具:

1. mysqldump : 邏輯備份工具適用于所有的存儲(chǔ)引擎支持溫備、完全備份、部分備份、對(duì)于InnoDB存儲(chǔ)引擎支持熱備 

2. cp, tar 等歸檔復(fù)制工具物理備份工具適用于所有的存儲(chǔ)引擎冷備、完全備份、部分備份 

3. lvm2 snapshot: 幾乎熱備借助文件系統(tǒng)管理工具進(jìn)行備份 

4. mysqlhotcopy: 名不副實(shí)的的一個(gè)工具幾乎冷備僅支持MyISAM存儲(chǔ)引擎 

5. xtrabackup: 一款非常強(qiáng)大的InnoDB/XtraDB熱備工具支持完全備份、增量備份percona提供

 

備份策略:


針對(duì)不同的場(chǎng)景下我們應(yīng)該制定不同的備份策略對(duì)數(shù)據(jù)庫(kù)進(jìn)行備份一般情況下備份策略一般為以下4種:

 

a. 直接cp,tar復(fù)制數(shù)據(jù)庫(kù)文件

 

b. mysqldump+復(fù)制BIN LOGS

 

c. lvm2快照+復(fù)制BIN LOGS

 

d. xtrabackup

 

以上的幾種解決方案分別針對(duì)于不同的場(chǎng)景:

 

如果數(shù)據(jù)量較小可以使用第一種方式直接復(fù)制數(shù)據(jù)庫(kù)文件。【如果是將復(fù)制的文件拷貝到新的數(shù)據(jù)庫(kù)時(shí),需要新數(shù)據(jù)的版本號(hào)高于舊數(shù)據(jù)庫(kù),僅有MYISAM引擎支持,INNODB不支持】

 

如果數(shù)據(jù)量還行可以使用第二種方式先使用mysqldump對(duì)數(shù)據(jù)庫(kù)進(jìn)行完全備份然后定期備份BINARY LOG達(dá)到增量備份的效果。

 

如果數(shù)據(jù)量一般而又不過(guò)分影響業(yè)務(wù)運(yùn)行可以使用第三種方式使用lvm2的快照對(duì)數(shù)據(jù)文件進(jìn)行備份而后定期備份BINARY LOG達(dá)到增量備份的效果。

如果數(shù)據(jù)量很大而又不過(guò)分影響業(yè)務(wù)運(yùn)行可以使用第四種方式使用xtrabackup進(jìn)行完全備份后定期使用xtrabackup進(jìn)行增量備份或差異備份。

 

 

1、Mysqldump實(shí)現(xiàn)備份恢復(fù)


windows環(huán)境下】

1) 備份單個(gè)數(shù)據(jù)庫(kù)或單個(gè)數(shù)據(jù)庫(kù)中的指定表: 

mysqldump -h主機(jī)名  -P端口 -u用戶名 -p密碼 –database 數(shù)據(jù)庫(kù)名 表名> 文件名.sql

 

 

2) 備份多個(gè)數(shù)據(jù)庫(kù): 

mysqldump -h主機(jī)名  -P端口 -u用戶名 -p密碼 –database db1 db2 db3 > 文件名.sql


 

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

mysqldump --all -databases > backupname.sql


 

4) 壓縮備份:

mysqldump -h hostname -u username -p password -database databasename | gzip > backupfile.sql.gz


 

5) 還原MySQL數(shù)據(jù)庫(kù)的命令

 

mysql -hhostname -uusername -ppassword databasename < backupfile.sql


 

6) 還原壓縮的MySQL數(shù)據(jù)庫(kù)

gunzip < backupfile.sql.gz | mysql -u username -p password dbname


 

 

數(shù)據(jù)遷移:

可以分為:同版本MYSQL遷移;不同版本MYSQL遷移;不同數(shù)據(jù)庫(kù)遷移

 

1、直接遷移(備份還原同時(shí)進(jìn)行)【同版本】

mysqldump -h hostname1-u root -p password=password1 -all-databases 
| 
mysql –h hostname2 -u root -password=password2


 

2、【不同版本】低版本可以向高版本遷移,高版本很難向低版本遷移。

 

3、不同數(shù)據(jù)庫(kù)遷移,可以實(shí)現(xiàn),但比較復(fù)雜。

 

 

===========================================提高==============================================================

增量備份


小量的數(shù)據(jù)庫(kù)可以每天進(jìn)行完整備份,因?yàn)檫@也用不了多少時(shí)間,但當(dāng)數(shù)據(jù)庫(kù)很大時(shí),就不太可能每天進(jìn)行一次完整備份了,這時(shí)候就可以使用增量備份。增量備份的原理就是使用了mysqlbinlog志。

 

1、首先做一次完整備份:

 

mysqldump -h20.6.208.183 -utest2 -p123 -P3310 --single-transaction  --master-data=2  test>test.sql


這時(shí)候就會(huì)得到一個(gè)全備文件test.sql

 

sql文件中我們會(huì)看到:

-- CHANGE MASTER TO MASTER_LOG_FILE='bin-log.000002', MASTER_LOG_POS=107;是指?jìng)浞莺笏械母膶?huì)保存到bin-log.000002二進(jìn)制文件中。

2、在test庫(kù)的t_student表中增加兩條記錄,然后執(zhí)行flush logs命令。這時(shí)將會(huì)產(chǎn)生一個(gè)新的二進(jìn)制日志文件bin-log.000003,bin-log.000002則保存了全備過(guò)后的所有更改,既增加記錄的操作也保存在了bin-log.00002中。

 

3、再在test庫(kù)中的a表中增加兩條記錄,然后誤刪除t_student表和a表。a中增加記錄的操作和刪除表at_student的操作都記錄在bin-log.000003中。

 

恢復(fù)


1、首先導(dǎo)入全備數(shù)據(jù)

 

mysql -h20.6.208.183 -utest2 -p123  -P3310 < test.sql,

也可以直接在mysql命令行下面用source導(dǎo)入

 

2、恢復(fù)bin-log.000002

 

mysqlbinlog bin-log.000002 |mysql -h20.6.208.183 -utest2 -p123  -P3310

 

 

3、恢復(fù)部分 bin-log.000003

 

   在general_log中找到誤刪除的時(shí)間點(diǎn),然后更加對(duì)應(yīng)的時(shí)間點(diǎn)到bin-log.000003中找到相應(yīng)的position點(diǎn),需要恢復(fù)到誤刪除的前面一個(gè)position點(diǎn)。

 

可以用如下參數(shù)來(lái)控制binlog的區(qū)間

 

--start-position 開始點(diǎn) --stop-position 結(jié)束點(diǎn)

 

--start-date 開始時(shí)間  --stop-date  結(jié)束時(shí)間

 

找到恢復(fù)點(diǎn)后,既可以開始恢復(fù)。

 

 mysqlbinlog mysql-bin.000003 --stop-position=208 |mysql -h20.6.208.183 -utest2 -p123  -P3310


 

 

 參考:

1、學(xué)會(huì)4MYSQL備份方法                    2、常用MSQL備份還原命令

 

 


向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI