[root@node3 dylan]# yum install percona-xtrabackup-2.3.2-1.el7.x86_64.rpm
[root@node3 dylan]# innobackupex --uer=root /backups/ ###全庫備份
[root@node3 dylan]# ls /backups/2017-08-10_13-34-47/
backup-my.cnf hellodb ibdata1 mysql performance_schema test xtrabackup_binlog_info xtrabackup_checkpoints xtrabackup_info xtrabackup_logfile
要恢復的主機同樣安裝starbackup
[root@node3 dylan]# scp -r /backups/2017-08-10_13-34-47/ [email protected]:/dylan
###複製備份文件至恢復主機
要恢復的主機上:
[root@localhost /]# mkdir backups
[root@localhost /]# mv /dylan/2017-08-10_13-34-47/ /backups/
[root@localhost /]# innobackupex --apply-log /backups/2017-08-10_13-34-47/ ###整理操作
[root@localhost /]# systemctl stop mariadb.service ###未還原前不能啓動
[root@localhost /]# rm -rf /mydata/data/*
[root@localhost /]# innobackupex --copy-back /backups/2017-08-10_13-34-47/ ###還原操作
[root@localhost /]# systemctl start mariadb.service ###啓動出錯
Job for mariadb.service failed because the control process exited with error code. See "systemctl status mariadb.service" and "journalctl -xe" for details.
[root@localhost /]# chown -R mysql.mysql /mydata/data/* ###更改數據屬組屬主
[root@localhost dylan]# ll -h /mydata/data
總用量 115M
-rw-rw---- 1 mysql mysql 16K 8月 10 14:21 aria_log.00000001
-rw-rw---- 1 mysql mysql 52 8月 10 14:21 aria_log_control
drwx------ 2 mysql mysql 4.0K 8月 10 14:18 hellodb
-rw-r----- 1 mysql mysql 18M 8月 10 14:18 ibdata1
-rw-r----- 1 mysql mysql 48M 8月 10 14:18 ib_logfile0
-rw-r----- 1 mysql mysql 48M 8月 10 14:18 ib_logfile1
drwx------ 2 mysql mysql 4.0K 8月 10 14:18 mysql
-rw-rw---- 1 mysql mysql 0 8月 10 14:21 mysql-bin.index
drwx------ 2 mysql mysql 4.0K 8月 10 14:18 performance_schema
drwx------ 2 mysql mysql 42 8月 10 14:18 test
-rw-r----- 1 mysql mysql 25 8月 10 14:18 xtrabackup_binlog_pos_innodb
-rw-r----- 1 mysql mysql 455 8月 10 14:18 xtrabackup_info
[root@localhost dylan]# rm /mydata/data/ib_logfile* -f
[root@localhost /]# systemctl start mariadb.service ###至此完成完全備份
增量備份示例:
MariaDB [hellodb]> CREATE TABLE testtb(id int);
Query OK, 0 rows affected (0.07 sec)
MariaDB [hellodb]> INSERT INTO testtb VALUES (1),(10),(99);
Query OK, 3 rows affected (0.00 sec)
Records: 3 Duplicates: 0 Warnings: 0
###提前準備數據
[root@node3 dylan]# innobackupex /backups/ ###先做一次完全備份
[root@node3 dylan]# less /backups/2017-08-10_14-35-00/xtrabackup_checkpoints
backup_type = full-backuped ### lsn從0-1711208
from_lsn = 0
to_lsn = 1711208
last_lsn = 1711208
compact = 0
recover_binlog_info = 0
爲了測試效果:在hellodb中刪除一張表,在testtb中新增幾個值
MariaDB [hellodb]> DROP TABLE coc;
Query OK, 0 rows affected (0.01 sec)
MariaDB [hellodb]> INSERT INTO testtb VALUES (44),(32);
Query OK, 2 rows affected (0.01 sec)
Records: 2 Duplicates: 0 Warnings: 0
[root@node3 dylan]# innobackupex --incremental /backups/ --incremental-basedir=/backups/2017-08-10_14-35-00/ ###在以前的基礎上增量備份
[root@node3 dylan]# less /backups/2017-08-10_14-42-06/xtrabackup_checkpoints
backup_type = incremental
from_lsn = 1711208 ###lsn從1711208-1713870
to_lsn = 1713870
last_lsn = 1713870
compact = 0
recover_binlog_info = 0
[root@node3 dylan]# systemctl stop mariadb.service
[root@node3 dylan]# innobackupex --apply-log --redo-only /backups/2017-08-10_14-35-00/ ###先整理完全備份
[root@node3 backups]# innobackupex --apply-log --redo-only /backups/2017-08-10_14-35-00/ --incremental-dir=/backups/2017-08-10_14-42-06/
### 最新一次的增量合併到完全備份中
[root@node3 backups]# less /backups/2017-08-10_14-35-00/xtrabackup_checkpoints
backup_type = log-applied ###lsn 從0 到1713870
from_lsn = 0
to_lsn = 1713870
last_lsn = 1713870
compact = 0
recover_binlog_info = 0
[root@node3 backups]# rm /var/lib/mysql/* -rf ###測試數據掛了
[root@node3 backups]# innobackupex --copy-back /backups/2017-08-10_14-35-00/ ###還原數據
[root@node3 backups]# ll -lh /var/lib/mysql/
總用量 115M
drwx------ 2 root root 4.0K 8月 10 15:06 hellodb
-rw-r----- 1 root root 18M 8月 10 15:06 ibdata1
-rw-r----- 1 root root 48M 8月 10 15:06 ib_logfile0
-rw-r----- 1 root root 48M 8月 10 15:06 ib_logfile1
drwx------ 2 root root 4.0K 8月 10 15:06 mysql
drwx------ 2 root root 4.0K 8月 10 15:06 performance_schema
drwx------ 2 root root 42 8月 10 15:06 test
-rw-r----- 1 root root 25 8月 10 15:06 xtrabackup_binlog_pos_innodb
-rw-r----- 1 root root 444 8月 10 15:06 xtrabackup_info
[root@node3 backups]# chown -R mysql.mysql /var/lib/mysql/
[root@node3 backups]# cd /var/lib/mysql/
[root@node3 mysql]# rm -rf ib_logfile* ###事務日誌不知道爲什麼爲48M
[root@node3 mysql]# systemctl start mariadb.service ###完成
重新測試一次:
[root@node3 backups]# ll -lh /data/mysql/
總用量 19M
drwx------ 2 root root 4.0K 8月 10 15:49 hellodb
-rw-r----- 1 root root 18M 8月 10 15:49 ibdata1
drwx------ 2 root root 4.0K 8月 10 15:49 mysql
drwx------ 2 root root 4.0K 8月 10 15:49 performance_schema
drwx------ 2 root root 19 8月 10 15:49 test
-rw-r----- 1 root root 24 8月 10 15:49 xtrabackup_binlog_pos_innodb
-rw-r----- 1 root root 443 8月 10 15:49 xtrabackup_info ###顯示正常
導出表示例:
先做一次完全備份:
[root@node3 backups]# innobackupex /backups/
[root@node3 backups]# innobackupex --apply-log --export /backups/2017-08-10_16-21-01/ ###對此位置進行導出操作
MariaDB [hellodb]> SHOW CREATE TABLE students; ###直接在原表中查看students表創建語句
MariaDB [mydb]> CREATE TABLE `students` ( ###在新表中創建
-> `StuID` int(10) unsigned NOT NULL AUTO_INCREMENT,
-> `Name` varchar(50) NOT NULL,
-> `Age` tinyint(3) unsigned NOT NULL,
-> `Gender` enum('F','M') NOT NULL,
-> `ClassID` tinyint(3) unsigned DEFAULT NULL,
-> `TeacherID` int(10) unsigned DEFAULT NULL,
-> PRIMARY KEY (`StuID`)
-> ) ENGINE=InnoDB AUTO_INCREMENT=26 DEFAULT CHARSET=utf8
-> ;
Query OK, 0 rows affected (0.02 sec)
MariaDB [mydb]> ALTER TABLE students DISCARD TABLESPACE; ###刪除此表的表空間
[root@node3 backups]# cd /backups/2017-08-10_16-21-01/hellodb/
[root@node3 hellodb]# scp students.exp students.ibd [email protected]:/mydata/data/mydb/ ###從原服務備份中複製表的exp和ibd文件到新表中
[email protected]'s password:
students.exp 100% 16KB 16.0KB/s 00:00
students.ibd 100% 96KB 96.0KB/s 00:00
新庫中查看:
[root@localhost mydb]# ls
db.opt students.exp students.frm students.ibd
[root@localhost mydb]# chown mysql.mysql students.* ###更改屬主屬組
MariaDB [mydb]> ALTER TABLE mydb.students IMPORT TABLESPACE; ###導入出錯
ERROR 1030 (HY000): Got error -1 from storage engine ###留存以後解決