標籤:xtrabackup mysql備份 增量備份
Xtrabackup 是由percona提供的mysqlDatabase Backup工具,是一個開源的工具,能夠對innodb和xtradb資料庫進行熱備和增量備份,對於MyISAM, 僅支援到溫備,對MyISAM使用增量備份時,其實是完全備份。Xtrabackup使用簡單,功能強大。
官方地址:http://www.percona.com/software/percona-xtrabackup/
安裝:
percona-toolkit-2.2.17-1.noarch.rpmpercona-xtrabackup-2.2.9-5067.el6.x86_64.rpm[[email protected] tools]# yum localinstall percona-*
innobackupex運行條件: 需要MySQL服務處於運行狀態
如果要使用一個最小許可權的使用者進行備份,則可基於如下命令建立此類使用者:
mysql> create user ‘bkpuser‘@‘localhost‘ identified by ‘222222‘;mysql> grant reload,lock tables,replication client on *.* to ‘bkpuser‘@localhost;mysql> flush privileges;
一個簡單的完全備份及還原實現過程:
1.完全備份:
[[email protected] mydata]# innobackupex --user=bkpuser --password=222222 --socket=/tmp/mysql.sock /mydata/mybackups/[[email protected] mybackups]# ls2016-05-24_17-12-47
2.準備一個完全還原備份:
[[email protected] mybackups]# innobackupex --apply-log /mydata/mybackups/2016-05-24_17-12-47/......xtrabackup: starting shutdown with innodb_fast_shutdown = 1InnoDB: FTS optimize thread exiting.InnoDB: Starting shutdown...InnoDB: Shutdown completed; log sequence number 1653270160524 17:35:57 innobackupex: completed OK!
類比資料崩潰:
[[email protected] mybackups]# cd /mydata/mysql/data/[[email protected] data]# lsauto.cnf ib_logfile0 ib_logfile1 ibdata1 martin martin.err mysql performance_schema test[[email protected] data]# rm -fr *
3.還原:
[[email protected] data]# innobackupex --copy-back /mydata/mybackups/2016-05-24_17-12-47/
/mydata/mysql/data[[email protected] data]# chown -R mysql.mysql *[[email protected] data]# service mysqld startStarting MySQL. SUCCESS! [[email protected] data]# lsauto.cnf ib_logfile1 martin martin.pid performance_schema xtrabackup_binlog_pos_innodbib_logfile0 ibdata1 martin.err mysql test xtrabackup_info
下面實現增量備份過程:
一次完全備份,2次增量備份
[[email protected] mydata]# innobackupex --user=bkpuser --password=222222 --socket=/tmp/mysql.sock /mydata/mybackups/[[email protected] mybackups]# innobackupex --user=bkpuser --password=222222 --socket=/tmp/mysql.sock --incremental /mydata/mybackups/ --incremental-basedir=2016-05-24_17-46-48/ #上一次#.......插入資料[[email protected] mybackups]# innobackupex --user=bkpuser --password=222222 --socket=/tmp/mysql.sock --incremental /mydata/mybackups/ --incremental-basedir=2016-05-24_17-53-02/
還原:
第一次的完全備份:
[[email protected] mybackups]# innobackupex --user=bkpuser --password=222222 --socket=/tmp/mysql.sock --apply-log --redo-only /mydata/mybackups/2016-05-24_17-46-48/
合并第一次增量:
[[email protected] mybackups]# innobackupex --user=bkpuser --password=222222 --socket=/tmp/mysql.sock --apply-log --redo-only /mydata/mybackups/2016-05-24_17-46-48/ --incremental-dir=/mydata/mybackups/2016-05-24_17-53-02/
合并第二次增量:
[[email protected] mybackups]# innobackupex --user=bkpuser --password=222222 --socket=/tmp/mysql.sock --apply-log --redo-only /mydata/mybackups/2016-05-24_17-46-48/ --incremental-dir=/mydata/mybackups/2016-05-24_18-04-24/
執行最後還原:
[[email protected] data]# innobackupex --copy-back /mydata/mybackups/2016-05-24_17-46-48/
[[email protected] data]# chown -R mysql.mysql *[[email protected] data]# lltotal 12308-rw-r--r-- 1 mysql mysql 12582912 May 24 18:14 ibdata1drwxr-xr-x 2 mysql mysql 4096 May 24 18:14 martindrwxr-xr-x 2 mysql mysql 4096 May 24 18:14 mysqldrwxr-xr-x 2 mysql mysql 4096 May 24 18:14 performance_schemadrwxr-xr-x 2 mysql mysql 4096 May 24 18:14 test-rw-r--r-- 1 mysql mysql 653 May 24 18:14 xtrabackup_info[[email protected] data]# /etc/init.d/mysqld startStarting MySQL. SUCCESS!
[[email protected] data]# cat /mydata/mysql/data/xtrabackup_info uuid = e65af8bc-2196-11e6-add0-000c294b9b35name = tool_name = innobackupextool_command = --user=bkpuser --password=... --socket=/tmp/mysql.sock --incremental /mydata/mybackups/ --incremental-basedir=2016-05-24_17-53-02/tool_version = 1.5.1-xtrabackupibbackup_version = xtrabackup version 2.2.9 based on MySQL server 5.6.22 Linux (x86_64) (revision id: )server_version = 5.6.30-logstart_time = 2016-05-24 18:04:24end_time = 2016-05-24 18:04:27lock_time = 1binlog_pos = filename ‘master-bin.000010‘, position 796innodb_from_lsn = 1653280innodb_to_lsn = 1653280partial = Nincremental = Yformat = filecompact = Ncompressed = Nencrypted = N
更新完畢 如果還有二進位中的檔案要繼續更新上去
[[email protected] log-bin]# mysqlbinlog --start-position=796 master-bin.000010>~/a.bin.sqlmysql> set session sql_log_bin=0;mysql> source ~/a.sqlmysql> source ~/a.bin.sqlmysql> set session sql_log_bin=1;
從完整資料中的可以看到合并到最後更新時間:
[[email protected] 2016-05-24_17-46-48]# cat xtrabackup_info uuid = e65af8bc-2196-11e6-add0-000c294b9b35name = tool_name = innobackupextool_command = --user=bkpuser --password=... --socket=/tmp/mysql.sock --incremental /mydata/mybackups/ --incremental-basedir=2016-05-24_17-53-02/tool_version = 1.5.1-xtrabackupibbackup_version = xtrabackup version 2.2.9 based on MySQL server 5.6.22 Linux (x86_64) (revision id: )server_version = 5.6.30-logstart_time = 2016-05-24 18:04:24end_time = 2016-05-24 18:04:27 #可以看到最後的增量備份時間lock_time = 1binlog_pos = filename ‘master-bin.000010‘, position 796innodb_from_lsn = 1653280innodb_to_lsn = 1653280partial = Nincremental = Yformat = filecompact = Ncompressed = N
mysql之Xtrabackup備份及增量備份