實現多種方式對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進行備份