您好,登錄后才能下訂單哦!
參考:http://mingxiao.blog.51cto.com/8124243/1623634
一 全備
1.命令安裝:
yum install -y gnupg rpm -Uhv http://www.percona.com/downloads/percona-release/percona-release-0.0-1.x86_64.rpm(64位源) rpm -Uhv https://www.percona.com/redir/downloads/percona-release/percona-release-0.0-1.i386.rpm(32位源) yum install -y percona-xtrabackup
[root@aliyun-112 ~]# xtrabackup -v
xtrabackup version 2.3.3 based on MySQL server 5.6.24 Linux (x86_64) (revision id: 525ca7d)
2.命令功能:
對InnoDB做數據備份的工具,支持在線熱備份
3.命令參數:
--database=sundong 單獨對hu數據庫做備份 ,若是不添加此參數那就那就是對全庫做備份
--stream =tar 打包格式 目前只支持 tar and xbstream
2>/var/backups/hu.log 輸出信息寫入日志中
1> /var/backups/hu.tar.gz 打包壓縮存儲到該文件中
--incremental-dir=/var/backups/plus/ 增量備份目錄
--copy-back選項的命令從備份目錄拷貝數據,索引,日志到my.cnf文 件里規定的初始位置
--apply-log選項的命令是準備在一個備份上啟動mysql服務
--port=PORT
4.命令實例:
備份并打包壓縮 (只備份hu這個數據庫)
innobackupex --defaults-file=/home/DB/mysql/my.cnf --user=root --password=xxxxx --database=hu --stream=tar /var/backups/ 2>/var/backups/hu.log | gzip 1> /var/backups/hu.tar.gz
5 整庫備份。(一次性備份所有的數據庫)
innobackupex --defaults-file=/etc/my.cnf --user=root --password=cdqd /var/backups/
(root為數據庫用戶名,cdqd為數據庫密碼,/etc/my.cnf為mysql配置文件所在位置,/var/backups/為備份文件存儲目錄)
6 恢復
首先停掉數據庫,然后刪除數據庫目錄下的所有數據庫文件。
首先寫日志文件,然后恢復,如下。(注:2010-04-17_22-19-30是自動生成的以備份時間命名的文件夾,恢復時根據情況進行選擇)
# innobackupex --defaults-file=/etc/my.cnf --apply-log /var/backups/2010-04-17_22-19-30 (寫日志)
# innobackupex --defaults-file=/etc/my.cnf --copy-back /var/backups/2010-04-17_22-19-30 (恢復)
然后去你的備份目錄查看是否有備份的文件,然后還需要更改權限(這步我是cd到原數據庫目錄下進行的)
#chown -R mysql:mysql *
重啟數據庫,開恢復是否成功。
二 增量備份與恢復
在這里為了表述清楚我們做兩次增量備份。
為student表插入數據,為增量備份做基礎。
mysql>use hu; mysql>create table student (`id` int(4),`name` char(40),`values`char(40)) mysql> INSERT INTO student (Name) VALUES ('XiaoHei3'),('XiaoHei4');
完全備份:
innobackupex --defaults-file=/etc/my.cnf --user=root --password=123456 /data/backup
備份完成之后產生這個
2015-03-23_23-19-24/ 文件夾,這是完全備份的目錄
第一次增量備份,--incremental-basedir=指的是完全備份所在的目錄。/backup是備份的目錄
INSERT INTO student (Name) VALUES ('XiaoHei1'),('XiaoHei2');
[root@localhost /]#
innobackupex --incremental /backup --incremental-basedir=/backup/2015-03-23_23-19-24/
執行完這個之后會產生一個2015-03-23_23-21-49/ ,第二次增量備份指定它就可以
mysql>
INSERT INTO student (Name) VALUES ('XiaoHei5'),('XiaoHei6');
第二次增量備份,--incremental-basedir=指的是第上一次增量備份所在的目錄,這里指第一次,以此類推。
[root@localhost /]# innobackupex --incremental /backup --incremental-basedir=/backup/2015-03-23_23-21-49/
步驟三:準備完全備份和增量備份
增量備份完成,下面要準備完全備份和增量備份。
--redo-only后面是完全備份所在目錄。
--incremental-dir指增量備份所在目錄,若有多個,按時間先后執行多次。
[root@localhost /]# innobackupex --apply-log --redo-only /backup/2015-03-23_23-19-24/
[root@localhost /]# innobackupex --apply-log --redo-only /backup/2015-03-23_23-19-24/ --incremental-dir=/backup/2015-03-23_23-21-49/ --incremental-dir指向第一次增量備份目錄
[root@localhost /]# innobackupex --apply-log --redo-only /backup/2015-03-23_23-19-24/ --incremental-dir=/backup/2015-03-23_23-22-44/ --incremental-dir指向第二次增量備份目錄
步驟四:模擬mysqld故障
[root@localhost /]# service mysqld stop
Shutting down MySQL. SUCCESS!
[root@localhost /]# rm -rf /mydata/data/*
步驟五:恢復數據
[root@localhost data]# innobackupex --copy-back /backup/2015-03-23_23-19-24/ (第一次全備份的目錄)
然后進入到備份目錄查看是否有備份文件存在
注意:恢復數據后,在重啟mysqld前,需要修改數據目錄權限,默認是root用戶,root組,需要改為mysql用戶,mysql組。
[root@localhost data]# chown -R mysql.mysql ./*
service mysqld start
mysql> use hu;
Database changed
mysql> select * from student;
+----+-------------------+---------------+
| ID | Name | Course |
+----+-------------------+---------------+
| 1 | xiaoming | English |
| 2 | xiaohong | Kuihuabaodian |
| 16 | XiaoHei1 | |
| 17 | XiaoHei2 | |
| 18 | XiaoHei3 | |
| 19 | XiaoHei4 | |
| 20 | XiaoHei5 | |
| 21 | XiaoHei6 | |
+----+-------------------+---------------+
9 rows in set (0.00 sec)
可以看到所有數據都完好無損,至此,備份恢復操作都已完成。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。