標籤:備份 mysql
一、mysqldump+binlog備份與恢複
此方式是完全備份,通過備份二進位日誌實現增量備份。具體步驟如下:
①建立備份的目錄
650) this.width=650;" src="https://s4.51cto.com/oss/201711/16/4f0365844b7e4b0c7bb3647c6eaaf271.png" title="1.png" alt="4f0365844b7e4b0c7bb3647c6eaaf271.png" />
②建立備份的資料庫和表。
650) this.width=650;" src="https://s3.51cto.com/oss/201711/16/d5b6dd2febeabf647d74aa19c6cd6cd4.png" title="1.png" alt="d5b6dd2febeabf647d74aa19c6cd6cd4.png" />
③備份資料庫
650) this.width=650;" src="https://s3.51cto.com/oss/201711/16/f2bd277161531edcbe0feab46e789613.png" title="1.png" alt="f2bd277161531edcbe0feab46e789613.png" />
④向表中插入資料。
650) this.width=650;" src="https://s3.51cto.com/oss/201711/16/336d63080d808583db59335fad5d0e09.png" title="1.png" alt="336d63080d808583db59335fad5d0e09.png" />
⑤進行增量備份,備份二進位日誌。 【記得開啟二進位日誌】
mariadb設定檔
650) this.width=650;" src="https://s2.51cto.com/oss/201711/16/d4ed430d875419a5c387d1c4c1a525bb.png" title="1.png" alt="d4ed430d875419a5c387d1c4c1a525bb.png" />
650) this.width=650;" src="https://s5.51cto.com/oss/201711/16/5965fe94f45c7c9805624388f593c0c0.png" title="1.png" alt="5965fe94f45c7c9805624388f593c0c0.png" />
⑥進行增量備份,備份二進位日誌
查看二進位日誌
650) this.width=650;" src="https://s4.51cto.com/oss/201711/16/7ca1aae0a4acef78c8fbba69393d7bac.png" title="1.png" alt="7ca1aae0a4acef78c8fbba69393d7bac.png" />
再添加一條資料進行備份二進位日誌
650) this.width=650;" src="https://s5.51cto.com/oss/201711/16/1c6d6f4bf3bbf85c542c093a2b6cb900.png" title="1.png" alt="1c6d6f4bf3bbf85c542c093a2b6cb900.png" /> ⑦繼續插入資料,沒有備份,類比誤刪除資料庫。
650) this.width=650;" src="https://s4.51cto.com/oss/201711/16/e65fe8224bb3dd1935773bafb93b390b.png" title="1.png" alt="e65fe8224bb3dd1935773bafb93b390b.png" />
將最後操作的二進位日誌進行備份
查看最後動作記錄的命令:
mysqlbinlog /var/lib/mysql/log-bin.0000002 (註:黃色代表自訂二進位日誌的名)
650) this.width=650;" src="https://s3.51cto.com/oss/201711/16/f8ec660b01137ea6da8688eb2f710bda.png" title="1.png" alt="f8ec660b01137ea6da8688eb2f710bda.png" />
650) this.width=650;" src="https://s2.51cto.com/oss/201711/16/fe87063855eba03ebc4cce5cf28dabaa.png" title="2.png" alt="fe87063855eba03ebc4cce5cf28dabaa.png" /> ⑧匯入之前所有備份
650) this.width=650;" src="https://s3.51cto.com/oss/201711/16/9b662b53b20892bebe421dddb0156dbf.png" title="1.png" alt="9b662b53b20892bebe421dddb0156dbf.png" />
⑨查看資料庫及資料。
650) this.width=650;" src="https://s1.51cto.com/oss/201711/16/7961ff1ef08a8bd09a23d916ecc10b23.png" title="1.png" alt="7961ff1ef08a8bd09a23d916ecc10b23.png" />
恢複成功。
二、xtrabackup方式備份
對InnoDB:熱備,支援完全備份和增量備份
對MyISAM:溫備,只支援完全備份
特點:
(1)備份過程快速、可靠
(2)備份過程不會打斷正在執行的事務
(3)能夠基於壓縮等功能節約磁碟空間和流量
(4)自動實現備份檢驗
(5)還原速度快
實現步驟:
①安裝包。
yum install xtrabackup
②進行完全備份。
命令:innobackupex --user=root /app/backup/,並進行修改許可權。
650) this.width=650;" src="https://s4.51cto.com/oss/201711/16/52c050916cd37bbd3a9c3d3952ea66d8.png" title="1.png" alt="52c050916cd37bbd3a9c3d3952ea66d8.png" />
修改mariadb設定檔,修改目錄路徑。
650) this.width=650;" src="https://s4.51cto.com/oss/201711/16/0cc9c1043a0b5e6b26bf8cad68e3d3be.png" title="1.png" alt="0cc9c1043a0b5e6b26bf8cad68e3d3be.png" />
重啟資料庫查看資料庫內容。
650) this.width=650;" src="https://s2.51cto.com/oss/201711/16/499cfe1e39bd30f5e5b181d119623d47.png" title="1.png" alt="499cfe1e39bd30f5e5b181d119623d47.png" />
③實現增量備份
對test資料庫的backup表裡增加資料。
650) this.width=650;" src="https://s1.51cto.com/oss/201711/16/cb80d0702662264df569612145a5551b.png" title="1.png" alt="cb80d0702662264df569612145a5551b.png" />
命令:innobackupex --incremental /app/backup/ --incremental-basedir=/app/backup/2017-11-16_15-49-35 【盡量寫絕對路徑】
650) this.width=650;" src="https://s1.51cto.com/oss/201711/16/25d3e3a0ca623c414551bbe1c808e63d.png" title="1.png" alt="25d3e3a0ca623c414551bbe1c808e63d.png" />
④實現資料恢複
資料恢複準備:
命令:innobackupex --apply-log --redo-only /app/backup/2017-11-16_16-42-25/
650) this.width=650;" src="https://s3.51cto.com/oss/201711/16/cf707e4097d293f2c6f8e163b49f6a0b.png" title="1.png" alt="cf707e4097d293f2c6f8e163b49f6a0b.png" />
類比損壞資料庫。
命令:mv /var/lib/mysql /var/lib/mysql.bak
建立mysql mkdir mysql
cd mysql/ 執行命令:innobackupex --copy-back /app/backup/2017-11-16_16-45-10
重啟資料庫進行查看
650) this.width=650;" src="https://s1.51cto.com/oss/201711/16/3610cc1be731cf140faf4607e8b894d6.png" title="1.png" alt="3610cc1be731cf140faf4607e8b894d6.png" />
三、基於lvm快照+binlog實現備份。
①添加一塊硬碟
650) this.width=650;" src="https://s4.51cto.com/oss/201711/16/6b3216f359f382605cc9ad4c20ac7665.png" title="1.png" alt="6b3216f359f382605cc9ad4c20ac7665.png" />
②進行分區,並格式化LVM格式。
650) this.width=650;" src="https://s2.51cto.com/oss/201711/16/77c431a956a9645cf44a84ab9355c709.png" title="1.png" alt="77c431a956a9645cf44a84ab9355c709.png" />
③建立邏輯卷組並進行掛載。
650) this.width=650;" src="https://s2.51cto.com/oss/201711/18/52a62190077c395a7026fca92414e692.png" title="1.png" alt="52a62190077c395a7026fca92414e692.png" />
④移動資料庫檔案,修改資料庫設定檔,進行重啟。
650) this.width=650;" src="https://s2.51cto.com/oss/201711/18/84c0bd944a378b5f7d5bc9c1163c26b7.png" title="1.png" alt="84c0bd944a378b5f7d5bc9c1163c26b7.png" />
修改許可權:chown -R mysql:mysql /mnt/lvs_snap/
⑤建立測試資料庫,並鎖定資料庫。
650) this.width=650;" src="https://s5.51cto.com/oss/201711/21/12d738cc3933e0e84e57ca189cc12cfc.png" title="1.png" alt="12d738cc3933e0e84e57ca189cc12cfc.png" />
⑥給資料庫進行快照,並解鎖所有表。
650) this.width=650;" src="https://s4.51cto.com/oss/201711/21/7d4e721adb302dc0e279b81b3b5bc699.png" title="1.png" alt="7d4e721adb302dc0e279b81b3b5bc699.png" />
⑦掛載建立的快照,並對其內容進行打包。
mkdir /mnt/test_snap -p
mount /dev/mysql/test-snap /mnt/test_sanp/
tar cvf /app/mysqlbackup.tar /mnt/tset_snap/
650) this.width=650;" src="https://s1.51cto.com/oss/201711/21/c8b9aa54910edf43d64c631925d999e6.png" title="1.png" alt="c8b9aa54910edf43d64c631925d999e6.png" /> ⑧取消掛載,刪除快照。
umount /mnt/test_snap
rm -rf /dev/mysql/test-snap
650) this.width=650;" src="https://s4.51cto.com/oss/201711/21/7b2ece8dce1ba7fead82a798062face1.png" title="1.png" alt="7b2ece8dce1ba7fead82a798062face1.png" />
⑨刪除資料庫,並對壓縮包解壓。
rm -rf /mnt/lvm_snap/*
tar xvf /app/mysqlbackup.tar /mnt/lvm_snap/
650) this.width=650;" src="https://s5.51cto.com/oss/201711/21/c08231d5d3c99a55058457d59426aee9.png" title="1.png" alt="c08231d5d3c99a55058457d59426aee9.png" />
⑩重啟服務,驗證是否資料恢複。
實現多種方式對MYSQL進行備份