下載xtrabackup工具包
percona-xtrabackup-24-2.4.13-1.el7.x86_64.rpm 工具包可以從官網下載
https://www.percona.com/downloads/Percona-XtraBackup-LATEST/Percona-XtraBackup-8.0.4/binary/redhat/7/x86_64/percona-xtrabackup-80-8.0.4-1.el7.x86_64.rpm
安裝xtrabackup工具包(需要啓用epel源)
[root@CentOS7 ~]# yum install -y percona-xtrabackup-24-2.4.13-1.el7.x86_64.rpm
一、實驗:xtrabackup 實現完全備份和還原
備份過程
1)在原主機做完全備份到/backups
原主機上有mysql的hellodb表
MariaDB [(none)]> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| hellodb |
| mysql |
| performance_schema |
| test |
+--------------------+
5 rows in set (0.01 sec)
使用xtrabackup 工具備份數據庫
[root@CentOS7 ~]# xtrabackup --backup --target-dir=/data/backup/
查看backup下已經生成了備份的文件
[root@CentOS7 ~]#ls /data/backup/ -l
total 18460
-rw-r----- 1 root root 431 May 6 22:32 backup-my.cnf
drwxr-x--- 2 root root 272 May 6 22:32 hellodb
-rw-r----- 1 root root 18874368 May 6 22:32 ibdata1
drwxr-x--- 2 root root 4096 May 6 22:32 mysql
drwxr-x--- 2 root root 4096 May 6 22:32 performance_schema
drwxr-x--- 2 root root 20 May 6 22:32 test
-rw-r----- 1 root root 21 May 6 22:32 xtrabackup_binlog_info
-rw-r----- 1 root root 113 May 6 22:32 xtrabackup_checkpoints
-rw-r----- 1 root root 468 May 6 22:32 xtrabackup_info
-rw-r----- 1 root root 2560 May 6 22:32 xtrabackup_logfile
xtrabackup_binlog_info、 xtrabackup_checkpoints、 xtrabackup_info文件裏存放了備份時的信息
[root@CentOS7 backup]#cat xtrabackup_binlog_info
mysql-bin.000011 245
[root@CentOS7 backup]#cat xtrabackup_checkpoints
backup_type = full-backuped
from_lsn = 0
to_lsn = 1638757
last_lsn = 1638757
compact = 0
recover_binlog_info = 0
[root@CentOS7 backup]#cat xtrabackup_info
uuid = c65e06f6-700b-11e9-9ac5-000c2926023f
name =
tool_name = xtrabackup
tool_command = --backup --target-dir=/data/backup/
tool_version = 2.4.13
ibbackup_version = 2.4.13
server_version = 5.5.60-MariaDB
start_time = 2019-05-06 22:32:26
end_time = 2019-05-06 22:32:28
lock_time = 0
binlog_pos = filename 'mysql-bin.000011', position '245'
innodb_from_lsn = 0
innodb_to_lsn = 1638757
partial = N
incremental = N
format = file
compact = N
compressed = N
encrypted = N
2)將備份的文件夾全部拷貝至目標主機
[root@CentOS7 ~]# scp -r /data/backup/* 192.168.93.102:/data/backup
還原過程(在目標主機上 )
1)預準備:確保數據一致,提交完成的事務,回滾未完成的事務
[root@CentOS7 ~]# xtrabackup --prepare --target-dir=/data/backup/
2)複製到數據庫目錄
注意:數據庫目錄必須爲空,MySQL服務不能啓動
[root@CentOS7 ~]# systemctl stop mariadb
[root@CentOS7 ~]# ls /var/lib/mysql/ -l
total 0
[root@CentOS7 ~]#
[root@CentOS7 ~]# xtrabackup --copy-back --target-dir=/data/backup/
3)還原屬性
[root@CentOS7 ~]# chown -R mysql:mysql /var/lib/mysql
4)啓動服務
[root@CentOS7 ~]# systemctl start mariadb
5)測試
[root@CentOS7 ~]# mysql
Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MariaDB connection id is 2
Server version: 5.5.60-MariaDB MariaDB Server
Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
MariaDB [(none)]> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| hellodb |
| mysql |
| performance_schema |
| test |
+--------------------+
5 rows in set (0.01 sec)
二、實驗:xtrabackup 實現增量備份和還原
備份過程
1)完全備份
[root@CentOS7 ~]# xtrabackup --backup --target-dir=/data/backup/base
2)第一次修改數據
MariaDB [hellodb]> insert teachers (name,age)value('xiaoai',33);
MariaDB [hellodb]> show tables;
+-------------------+
| Tables_in_hellodb |
+-------------------+
| classes |
| coc |
| courses |
| scores |
| students |
| teachers |
| toc |
+-------------------+
7 rows in set (0.00 sec)
MariaDB [hellodb]> drop table toc;
Query OK, 0 rows affected (0.01 sec)
3)第一次增量備份
[root@CentOS7 ~]# xtrabackup --backup --target-dir=/data/backup/inc1 --incremental-basedir=/data/backup/base
4)第二次修改數據
MariaDB [hellodb]> update teachers set gender='F' where tid=5;`
5)第二次增量
[root@CentOS7 ~]#xtrabackup --backup --target-dir=/data/backup/inc2 --incremental-basedir=/data/backup/inc1
6)將備份的數據庫文件拷貝至遠程主機
備份過程生成三個備份目錄
[root@CentOS7 ~]# ll /data/backup/
total 0
drwxr-x--- 6 root root 217 May 6 23:11 base
drwxr-x--- 6 root root 243 May 6 23:13 inc1
drwxr-x--- 6 root root 243 May 6 23:17 inc2
[root@CentOS7 ~]# scp -r /data/backup/* 192.168.93.102:/data/backup
還原過程
在遠程主機上確認是否複製成功
[root@CentOS7 ~]# ll /data/backup/
total 0
drwxr-x---. 6 root root 217 May 6 15:19 base
drwxr-x---. 6 root root 243 May 6 15:19 inc1
drwxr-x---. 6 root root 243 May 6 15:19 inc2
1)預準備完成備份,此選項--apply-log-only 阻止回滾未完成的事務
[root@CentOS7 ~]# xtrabackup --prepare --apply-log-only --target-dir=/data/backup/base
2)合併第1次增量備份到完全備份
[root@CentOS7 ~]# xtrabackup --prepare --apply-log-only --target-dir=/data/backup/base --incremental-dir=/data/backup/inc1
3)合併第2次增量備份到完全備份
如果是最後一次增量備份,還原時不需要加選項--apply-log-only
[root@CentOS7 ~]# xtrabackup --prepare --target-dir=/data/backup/base --incremental-dir=/data/backup/inc2
4)複製到數據庫目錄
注意數據庫目錄必須爲空,MySQL服務不能啓動
[root@CentOS7 ~]# xtrabackup --copy-back --target-dir=/data/backup/base
5)還原屬性
[root@CentOS7 ~]# chown -R mysql:mysql /var/lib/mysql
6)啓動服務
[root@CentOS7 ~]# systemctl start mariadb
7)測試是否還原
MariaDB [hellodb]> select * from teachers;
+-----+---------------+-----+--------+
| TID | Name | Age | Gender |
+-----+---------------+-----+--------+
| 1 | Song Jiang | 45 | M |
| 2 | Zhang Sanfeng | 94 | M |
| 3 | Miejue Shitai | 77 | F |
| 4 | Lin Chaoying | 93 | F |
| 5 | xiaoai | 33 | F |
+-----+---------------+-----+--------+
5 rows in set (0.00 sec)