1. 程式人生 > >實現多種方式對MYSQL進行備份

實現多種方式對MYSQL進行備份

備份 mysql

一、mysqldump+binlog備份與恢復

此方式是完全備份,通過備份二進制日誌實現增量備份。具體步驟如下:

①創建備份的目錄

技術分享圖片

②創建備份的數據庫和表。

技術分享圖片

③備份數據庫

技術分享圖片

④向表中插入數據。

技術分享圖片

⑤進行增量備份,備份二進制日誌。 【記得開啟二進制日誌】

mariadb配置文件

技術分享圖片


技術分享圖片

⑥進行增量備份,備份二進制日誌

查看二進制日誌

技術分享圖片


再添加一條數據進行備份二進制日誌

技術分享圖片 ⑦繼續插入數據,沒有備份,模擬誤刪除數據庫。

技術分享圖片


將最後操作的二進制日誌進行備份

查看最後操作日誌的命令:

mysqlbinlog /var/lib/mysql/log-bin.0000002 (註:黃色代表自定義二進制日誌的名)

技術分享圖片


技術分享圖片 ⑧導入之前所有備份

技術分享圖片

⑨查看數據庫及數據。

技術分享圖片

恢復成功。

二、xtrabackup方式備份

對InnoDB:熱備,支持完全備份和增量備份

對MyISAM:溫備,只支持完全備份

特點:

(1)備份過程快速、可靠

(2)備份過程不會打斷正在執行的事務

(3)能夠基於壓縮等功能節約磁盤空間和流量

(4)自動實現備份檢驗

(5)還原速度快

實現步驟:

①安裝包。

yum install xtrabackup

②進行完全備份。

命令:innobackupex --user=root /app/backup/,並進行修改權限。

技術分享圖片


修改mariadb配置文件,修改目錄路徑。

技術分享圖片

重啟數據庫查看數據庫內容。

技術分享圖片

③實現增量備份

對test數據庫的backup表裏增加數據。

技術分享圖片


命令:innobackupex --incremental /app/backup/ --incremental-basedir=/app/backup/2017-11-16_15-49-35 【盡量寫絕對路徑】

技術分享圖片

④實現數據恢復

數據恢復準備:

命令:innobackupex --apply-log --redo-only /app/backup/2017-11-16_16-42-25/

技術分享圖片

模擬損壞數據庫。

命令:mv /var/lib/mysql /var/lib/mysql.bak

創建mysql mkdir mysql

cd mysql/ 執行命令:innobackupex --copy-back /app/backup/2017-11-16_16-45-10

重啟數據庫進行查看

技術分享圖片

三、基於lvm快照+binlog實現備份。

①添加一塊硬盤

技術分享圖片

②進行分區,並格式化LVM格式。

技術分享圖片

③創建邏輯卷組並進行掛載。

技術分享圖片

④移動數據庫文件,修改數據庫配置文件,進行重啟。

技術分享圖片

修改權限:chown -R mysql:mysql /mnt/lvs_snap/

⑤創建測試數據庫,並鎖定數據庫。

技術分享圖片

⑥給數據庫進行快照,並解鎖所有表。

技術分享圖片

⑦掛載創建的快照,並對其內容進行打包。

mkdir /mnt/test_snap -p

mount /dev/mysql/test-snap /mnt/test_sanp/

tar cvf /app/mysqlbackup.tar /mnt/tset_snap/

技術分享圖片 ⑧取消掛載,刪除快照。

umount /mnt/test_snap

rm -rf /dev/mysql/test-snap

技術分享圖片

⑨刪除數據庫,並對壓縮包解壓。

rm -rf /mnt/lvm_snap/*

tar xvf /app/mysqlbackup.tar /mnt/lvm_snap/

技術分享圖片

⑩重啟服務,驗證是否數據恢復。

實現多種方式對MYSQL進行備份