1. 程式人生 > >mysql備份工具

mysql備份工具

mysql備份工具

備份還原腳本及工具

1Xtrabackup實現是物理備份,而且是物理熱備

目前主流的有兩個工具可以實現物理熱備:ibbackupxtrabackupibbackup是商業軟件,需要授權,非常昂貴。而xtrabackup功能比ibbackup還要強大,但卻是開源的。

2Xtrabackup提供了兩種命令行工具:

xtrabackup:專用於備份InnoDBXtraDB引擎的數據;

innobackupex:這是一個perl腳本,在執行過程中會調用xtrabackup命令,這樣用該命令即可以實現備份InnoDB,也可以備份MyISAM引擎的對象。

演示步驟

首先 解壓安裝包

技術分享

復制bin下的所有程序到/usr/bin

技術分享

Xtrabackup中主要包含兩個工具:

xtrabackup:是用於熱備份innodb, xtradb表中數據的工具,支持在線熱備份,可以在不加鎖的情況下備份Innodb數據表,不過此工具不能操作Myisam引擎表

innobackupex:是將xtrabackup進行封裝的perl腳本,能同時處理InnodbMyisam,但在處理Myisam時需要加一個讀鎖。

3)安裝插件 使用yum

yum install perl-DBI perl-DBD-MySQL perl-Time-HiRes perl-IO-Socket-SSL perl-TermReadKey.x86_64 perl-Digest-MD5–y

技術分享

方案一:xtrabackup完全備份+binlog增量備份

創建備份目錄

技術分享

完全備份

innobackupex --user=root --password=123456 /opt/mysqlbackup/full 出現OK 完成

註: --defaults-file=/etc/my.cnf 指定mysql的配置文件my.cfg,如果指定則必須是第一參數

技術分享

備份數據庫會會在備份目錄下創建當前日期為名字的目錄存放

技術分享

文件說明

(1)xtrabackup_checkpoints ——備份類型(如完全或增量)、備份狀態(如是否已經為prepared狀態)和LSN(日誌序列號)範圍信息;

每個InnoDB(通常為16k大小)都會包含一個日誌序列號 (2)xtrabackup_binlog_info —— mysql服務器當前正在使用的二進制日誌文件及至備份這一刻為止二進制日誌事件的位置。

(3)xtrabackup_binlog_pos_innodb ——二進制日誌文件及用於InnoDBXtraDB表的二進制日誌文件的當前position

(4)xtrabackup_binary ——備份中用到的xtrabackup的可執行文件;

(5)backup-my.cnf ——備份命令用到的配置選項信息;

在使用innobackupex進行備份時,還可以使用--no-timestamp選項來阻止命令自動創建一個以時間命名的目錄。

註意:備份數據庫的用戶需要具有相應權限,如果要使用一個最小權限的用戶進行備份,則可基於如下命令創建此類用戶:

技術分享

技術分享

至此全備完全成功,然後向mysql某個庫插入幾條數據,然後進行增量備份對完全備份的後數據庫更改進行二進制日誌增量備份:

查看完全備份時binlog日誌位置(position)

技術分享

模擬修改數據庫

技術分享

增量備份二進制文件

技術分享

2 還原數據庫二進制文件

首先 模擬吧data文件刪除或者轉移,然後進行完全備份還原

innobakupex命令的--apply-log選項可用於實現上述功能。--apply-log指明是將日誌應用到數據文件上,完成之後將備份文件中的數據恢復到數據庫中:

技術分享

還原數據庫語法:

# innobackupex --copy-back /opt/mysqlbackup/full/2016-09-12_11-29-55/

這裏的--copy-back指明是進行數據恢復。數據恢復完成之後,需要修改相關文件的權限mysql數據庫才能正常啟動。

還原數據庫語法

技術分享

data 已經成功還原 重新啟動mysql

技術分享

需要確保所有數據文件屬主和屬組

技術分享

還原成功 但是增量備份還沒有成功

技術分享

為了防止還原時產生大量的二進制日誌,在還原時可臨時關閉二進制日誌後再還原:

mysql> set sql_log_bin=0;

mysql> source /opt/mysqlbackup/inc/2016-09-12.sql

還原成功 數據成功恢復

技術分享

技術分享

重新啟動二進制日誌 set sql_log_bin=1;

技術分享

本文出自 “chaixinwang” 博客,請務必保留此出處http://chaixinwang.blog.51cto.com/13052229/1946081

mysql備份工具